YOLO26训练结果在哪?runs/train路径详解
你刚跑完YOLO26训练,终端最后一行提示“Results saved to runs/train/exp”,可打开文件管理器却找不到这个文件夹?或者点进去发现里面空空如也?别急——这不是模型没训好,而是你还没搞清楚YOLO26默认结果路径的生成逻辑、存放位置和访问方式。本文不讲原理、不堆参数,只聚焦一个最实际的问题:训练完的结果到底藏在哪?怎么快速定位、查看、下载?我们会从镜像环境特性出发,手把手带你理清runs/train这个看似简单却常被忽略的关键路径。
1. 镜像环境与结果路径的底层关系
YOLO26官方镜像不是普通Python环境,而是一个预配置、预集成、开箱即用的深度学习工作空间。它的设计逻辑决定了训练结果不会随意散落,而是严格遵循Ultralytics框架的默认约定,并受镜像内部目录结构约束。理解这一点,是找到runs/train的前提。
1.1 为什么是runs/train?不是其他名字?
Ultralytics库(包括YOLO26)将所有训练、验证、预测的输出统一归入runs/根目录下,再按任务类型细分子目录:
runs/train/→ 存放所有训练过程产生的内容runs/val/→ 验证结果runs/detect/→ 推理(detect)输出runs/segment/→ 实例分割结果
而train后面的exp(experiment),是Ultralytics自动创建的实验编号文件夹。如果你没指定name参数,它会按exp,exp2,exp3顺序递增命名。所以runs/train/exp不是固定名称,而是“第一次训练”的默认结果目录。
1.2 镜像中runs/train真实物理位置在哪?
关键来了:镜像启动后,你的工作环境是容器化的Linux系统,所有路径都是容器内路径。而runs/train默认生成在当前工作目录下,不是全局路径,也不是/home或/root根目录。
根据你提供的镜像说明,代码默认存放在/root/ultralytics-8.4.2,但你已执行了这一步:
cp -r /root/ultralytics-8.4.2 /root/workspace/ cd /root/workspace/ultralytics-8.4.2这意味着:你当前的工作目录是/root/workspace/ultralytics-8.4.2。因此,当你运行python train.py时,Ultralytics会在该目录下创建runs/文件夹,完整路径就是:
/root/workspace/ultralytics-8.4.2/runs/train/exp它不会出现在/root/ultralytics-8.4.2/runs/,也不会在/root/runs/—— 它只存在于你cd进去的那个目录里。
1.3 为什么有时看不到runs/train?三个常见原因
| 原因 | 表现 | 解决方法 |
|---|---|---|
| 未进入正确工作目录 | 在/root/下执行ls runs显示 no such file | 先执行cd /root/workspace/ultralytics-8.4.2,再ls runs |
| 训练尚未完成或中途退出 | runs/目录存在,但train/为空或只有部分子目录 | 检查训练日志末尾是否出现Results saved to...;若报错中断,则无完整结果 |
project和name参数被覆盖 | 结果存到了my_project/my_exp而非runs/train/exp | 查看train.py中model.train(..., project='my_project', name='my_exp')是否被修改 |
提示:Ultralytics默认行为非常稳定。只要你在正确的代码目录下执行训练,且训练成功完成,
runs/train/exp就一定在那里,只是你可能没去对地方找。
2. 训练完成后,如何快速定位并查看结果?
不用翻日志、不用猜路径。三步精准直达,5秒内打开结果文件夹。
2.1 终端内直接跳转(推荐)
训练命令执行完毕后,立刻在同一个终端窗口输入:
cd runs/train/exp ls -lh你会看到类似这样的结构:
├── weights/ # 模型权重(best.pt, last.pt) ├── train_batch0.jpg # 训练初期的批次可视化 ├── val_batch0_pred.jpg # 验证集预测效果图 ├── results.csv # 每轮指标(box_loss, cls_loss, mAP等) ├── results.png # 自动绘制的训练曲线图(loss/mAP/precision/recall) ├── args.yaml # 本次训练所有参数快照 └── wandb/ # 若启用W&B,日志在此(可选)这是最直接、最可靠的方式——路径由Ultralytics自动生成,你只需cd进去。
2.2 文件管理器中手动导航
如果你习惯用图形界面操作(如CSDN星图镜像自带的VS Code Server或文件浏览器):
- 打开左侧文件树
- 逐级展开:
root→workspace→ultralytics-8.4.2→runs→train→exp - 右键点击
exp文件夹 → “在终端中打开” 或直接双击查看内容
注意:不要在/root/ultralytics-8.4.2下找runs,那是原始只读副本,训练不会写入那里。
2.3 关键结果文件速查指南
| 文件/目录 | 用途 | 小白怎么看懂? |
|---|---|---|
weights/best.pt | 最佳模型权重,mAP最高的那一版 | 下载后可用于后续推理,是你要带走的核心文件 |
weights/last.pt | 最后一次保存的权重,不一定最优 | 适合断点续训,或想看“最新状态”时加载 |
results.png | 训练全过程曲线图 | 横轴是epoch,纵轴是各项指标;曲线平稳下降+收敛 = 训练健康 |
results.csv | 每轮详细数值记录 | 用Excel打开,看最后一行的metrics/mAP50-95(B)值,越高越好(通常0.5以上算不错) |
val_batch0_pred.jpg | 验证集预测样例图 | 打开图片,看红框是否准、漏检多不多、误检严不严重,比数字更直观 |
小技巧:如果
results.png显示曲线震荡剧烈或loss不下降,大概率是学习率太高、数据标注有问题,或batch size超显存。这时先别急着下载模型,回头检查数据和配置。
3. 如何把训练结果安全下载到本地电脑?
服务器上训练完,最终目标是把best.pt拿回本地做部署或测试。Xftp拖拽虽方便,但容易下错文件、传一半中断、或误删源文件。我们推荐“打包→下载→解压”三步法,稳、快、省空间。
3.1 在服务器端打包结果文件夹
仍在runs/train/exp目录下,执行:
cd /root/workspace/ultralytics-8.4.2/runs/train/exp zip -r yolo26_train_result.zip .这条命令会把整个exp文件夹(含weights、图片、csv、png等)压缩成一个yolo26_train_result.zip文件,体积比原始小30%-50%,传输更快。
优势:一次打包,全部带走;避免漏下args.yaml这类关键配置文件;zip包结构清晰,本地解压即用。
3.2 使用Xftp下载(规范操作)
- 打开Xftp,连接镜像实例
- 左侧本地目录:选择你希望存放的文件夹(如
D:\yolo26_results\) - 右侧远程目录:导航至
/root/workspace/ultralytics-8.4.2/runs/train/ - 右键点击
yolo26_train_result.zip→ “下载”(不是双击!双击是尝试在Xftp里打开,没用) - 在弹出窗口中确认保存路径,点击“确定”
重要提醒:不要直接拖拽
weights/文件夹!.pt文件单个就几百MB,网络波动易中断;且weights/里没有results.png和args.yaml,你下次复现实验会缺关键信息。
3.3 本地解压与验证
下载完成后,在本地电脑解压yolo26_train_result.zip,你会得到一个完整的exp文件夹。立即验证两件事:
- 双击打开
results.png,确认训练曲线合理 - 用文本编辑器打开
args.yaml,核对data,epochs,batch,imgsz是否与你预期一致
如果这两项都对,恭喜——你的训练成果已100%可复现、可交付、可部署。
4. 进阶技巧:自定义结果路径,告别exp重名困扰
每次训练都生成exp,exp2,exp3,时间一长根本分不清哪个是昨天调参的、哪个是前天换数据的。解决办法很简单:在train.py中主动指定project和name。
4.1 修改train.py中的训练调用
将原代码:
model.train(data=r'data.yaml', imgsz=640, epochs=200, batch=128, project='runs/train', name='exp', ... )改为带业务含义的命名,例如:
model.train(data=r'data.yaml', imgsz=640, epochs=200, batch=128, project='runs/train', # 保持根目录不变 name='car_det_v1_640x640', # 自定义实验名:场景+版本+分辨率 ... )运行后,结果将存入:
/root/workspace/ultralytics-8.4.2/runs/train/car_det_v1_640x640/好处:路径即文档,一眼知道这是“车辆检测v1版,640分辨率训练”;避免重名覆盖;团队协作时路径语义清晰。
4.2 一键清理旧实验(谨慎使用)
如果runs/train/下积累了大量历史实验,想批量删除除最新外的所有,可在终端执行:
cd /root/workspace/ultralytics-8.4.2/runs/train ls -t | tail -n +2 | xargs rm -rf此命令会删除除最新创建文件夹外的所有内容,请务必先ls确认列表,再执行。生产环境建议手动删除。
5. 常见问题直答:你最可能卡住的5个点
5.1 Q:训练完runs/train/下什么都没有,是失败了吗?
A:不是失败,是你没在正确的目录下执行训练。请确认:
① 已执行cd /root/workspace/ultralytics-8.4.2
②train.py中project='runs/train'未被注释或改错
③ 训练日志末尾有Results saved to ...字样。若无此行,说明训练未正常结束。
5.2 Q:weights/best.pt和last.pt有什么区别?该用哪个?
A:best.pt是整个训练过程中mAP最高的模型;last.pt是最后一轮保存的模型。优先用best.pt。除非你明确要做断点续训(此时需加载last.pt),否则last.pt可能不如best.pt准确。
5.3 Q:results.png曲线看起来很奇怪,是不是模型坏了?
A:不一定。先看三点:
①box_loss和cls_loss是否整体下降?(下降 = 学习有效)
②metrics/mAP50-95(B)是否缓慢上升?(上升 = 检测能力提升)
③precision和recall是否平衡?(一高一低可能过拟合或欠拟合)
如果三项都符合,曲线局部抖动属正常现象。
5.4 Q:能直接把runs/train/exp整个文件夹复制到另一台机器训练吗?
A:不能。runs/下的内容是训练输出,不是训练输入。要迁移训练,你需要:
✔data.yaml和对应数据集
✔yolo26.yaml模型结构文件
✔ (可选)yolo26n.pt预训练权重
❌runs/文件夹只用于查看和评估,不能作为新训练的起点。
5.5 Q:训练时显存爆了,batch=128报错,该怎么调?
A:这是最常见问题。直接改train.py中的batch参数:
- 先试
batch=64,再试32、16,直到不报错 - 同时可加
cache=True(缓存数据到内存,提速但吃RAM) - 或改
workers=4降低数据加载压力
记住:能跑通比追求大batch更重要,精度差异通常小于2%。
6. 总结:掌握runs/train,就是掌握YOLO26训练的主动权
YOLO26的runs/train路径,表面看只是一个文件夹,实则是你整个训练过程的“数字档案馆”。它不神秘,也不难找——只要你记住三个核心事实:
它永远生成在你cd进入的那个代码目录下(本镜像中是/root/workspace/ultralytics-8.4.2);
它的名字由project和name参数决定,默认是runs/train/exp;
它里面最关键的文件是weights/best.pt和results.png,一个管用,一个管看。
与其花时间到处搜索“YOLO26训练结果在哪”,不如养成两个习惯:
- 每次训练前,先
cd /root/workspace/ultralytics-8.4.2; - 训练结束后,第一件事
cd runs/train/exp && ls。
这两步做完,runs/train就再也不会“失踪”。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。