04 YOLO模型训练结果存放在哪里,怎么分析yolo模型训练结果?一文看懂yolo模型训练结果(pytorch版,以yolov11示例)
一、 YOLO 训练结果存储位置
默认情况下,YOLO 会将训练产出保存到项目的 runs/detect/ 目录下。
1. 默认存储路径
YOLO 默认将结果存放在:
runs/detect/train/
2. 自定义存储路径 (推荐)
为了在进行多次实验时更好地管理模型,避免混淆,强烈建议在训练时使用 project 和 name 参数自定义保存路径。
from ultralytics import YOLO
# 加载模型
model = YOLO('yolo11n.pt')
# 训练模型
model.train(
...
project='Traffic_System', # 相当于“大项目名称”,会在当前目录下创建此文件夹
name='yolov11n_lr0.01_batch32' # 相当于“本次实验的编号”,作为子文件夹
)
这样,结果就会被保存到: Traffic_System/yolov11n_lr0.01_batch32/
二、 文件夹命名的“自增”与覆盖机制
YOLO 具有自动重命名机制,旨在保护您的实验数据不被意外覆盖。
-
自动重命名(默认行为):
-
如果不设置
name参数,YOLO 默认使用train作为名字。 -
第一次运行:生成
runs/detect/train/ -
第二次运行:YOLO 检测到
train已存在,为了保护旧数据,它会自动创建一个runs/detect/train2/ -
依此类推:会出现
train3,train4...
-
-
强制覆盖(调试模式): 在调试代码或快速迭代时,使用
exist_ok=True参数。model.train(..., exist_ok=True)设置后,如果重新运行训练,它会直接覆盖掉原有的文件夹,而不是产生一堆数字编号的文件夹。
三、 YOLO 模型训练结果详解
运行完训练代码后,YOLO 会在输出目录下生成一个详尽的“报告”。这个目录结构遵循 Ultralytics 的标准规范,设计目的是为了既能拿到模型,又能回溯训练过程。
1. 结构拆解
train/
├── weights/ # 最核心:存放训练好的模型权重
│ ├── best.pt # 表现最好的模型(验证集上 mAP 最高)
│ └── last.pt # 最后一轮训练完的模型(用于断点续练)
├── args.yaml # 记录:本次训练所有的超参数配置
├── results.csv # 记录:每一轮的 Loss、Precision、Recall、mAP 数值
├── results.png # 可视化:Loss 和 mAP 随时间变化的曲线图
├── confusion_matrix_Normalized.png # 评估:混淆矩阵(看模型容易把哪种车认错)
├── F1_curve.png # 评估:F1 分数与置信度的关系曲线
├── train_batch0.jpg # 预览:训练集的第一批图片标注(检查数据对不对)
└── val_batch0_pred.jpg # 预览:验证集的第一批预测结果(直观感受模型准不准)
2. 关键文件详解
2.1 核心文件夹:weights/ (相当于模型的灵魂)
这里存放的是训练的物理产出。
-
best.pt:-
原理:在 50 轮训练中,模型每一轮都会在“验证集”上考试。系统会自动记录 mAP 指标最高的那一轮权重。
-
用途:生产环境唯一指定文件。当把系统部署到摄像头或视频处理时,只拷贝这个文件即可。
-
-
last.pt:-
原理:无论好坏,它只记录最后一轮(第 50 轮)的模样。
-
用途:断点续传。如果 Colab 突然断网或掉线,我们下次可以用
model = YOLO("last.pt")接着之前的进度练,不用从第一轮重来。
-
2.2 训练日志与配置 (复盘的工具)
-
args.yaml:-
详细内容:它记录了启动训练时所有的参数——学习率是多少、图片缩放到了多大、用了哪个 GPU、甚至连没设置的默认参数(如马赛克数据增强的比例)都在这里。
-
意义:当我们一个月后忘了这模型是怎么练出来的,打开它,就能完全复刻实验
-
-
results.csv:-
详细内容:一个表格文件,行是轮次(Epoch),列是各种损失值(Loss)和精度指标(mAP)。
-
意义:如果想自己用 Excel 或 Python 绘制更漂亮的图表,数据源就在这里。
-
2.3 可视化图表 (相当于体检报告)
① results.png —— 整体趋势图

这张图通常由 10 个小图组成,分为两大部分:
-
左侧 (Loss 曲线):包括
train/box_om、train/cls_loss等。-
理想状态:像滑梯一样顺滑下降,最后趋于平稳。
-
异常信号:如果曲线像“心电图”一样剧烈震荡,说明学习率可能太高了,导致模型不能收敛;如果曲线在末尾突然往上翘,说明模型产生了过拟合。
-
-
右侧 (Metrics 曲线):包括
metrics/mAP50(B)等。-
理想状态:像爬山一样稳步上升。
-
② confusion_matrix_Normalized.png —— 归一化混淆矩阵

这是一个
的方阵,横轴是模型预测的,纵轴是真实的。
-
对角线(深色区):代表预测正确的数量。颜色越深,说明该类别识别越准。
-
非对角线区域:代表“张冠李戴”。
-
案例:如果
Car行和 Truck 列的交叉点数值很高,说明模型经常把小车认成卡车。这时我们就知道:我需要给模型多看一些卡车的特写图。
-
-
Background 这一行/列:代表漏检(把车看成背景)或误报(把背景看成车),比如说car和background交叉处高达0.80,则说明我们需要在训练集中添加更多的背景图(没有标注物体的图片),帮助模型区分物体与背景。
③ F1_curve.png
这张图展示了 F1 分数(查准率和查全率的调和平均数)随置信度阈值(Confidence Threshold)的变化趋势

-
含义:横坐标是“置信度阈值”(Confidence),纵坐标是 F1 分数(精确率和召回率的平衡点)。
-
实战意义:它告诉我们,在部署系统时,把置信度过滤门槛设为多少最合适。通常曲线最高点对应的 Confidence 值(比如 0.621)就是最优解。
-
最佳置信度:
蓝色粗线代表所有类别的综合 F1 分数。最高点位于置信度约为 0.621 处,此时综合 F1 分数达到 0.96。这意味着在部署模型时,建议将置信度阈值设置为 0.621 左右,以获得最佳的检测效果。 -
各类别表现:
Van (红色线): 综合 F1 分数最高,在较宽的置信度范围内表现稳定;Truck (绿色线): F1 分数相对较低,说明卡车的检测难度较大,对置信度变化较为敏感。 -
阈值影响:
当置信度阈值小于 0.4 时,所有类别的 F1 分数都在迅速上升;当置信度阈值大于 0.8 时,F1 分数急剧下降,说明过高的阈值会导致大量目标被筛掉。
2.4 实时效果图 (直观反馈)
-
train_batchx.jpg:
-
检查点:如果图里的框画歪了,说明原始标注数据有问题,“地基”就没打好。
-
-
这是训练开始前生成的。它展示了模型看到的经过“数据增强”(旋转、变色、拼接)后的图片。
-
val_batch0_pred.jpg:
这是验证集上的预测预览。
-
意义:这是最爽的一张图,可以直接看到模型在它没见过的图上画出的框。如果框很稳、标签对,说明系统已经初步成型。
-
2.5 总结:怎么看训练结果
-
看
results.png:确认模型练“会”了(曲线收敛)。 -
看
confusion_matrix_normalized.png:确认模型没把 Car 和 Truck 搞混。 -
取
weights/best.pt:打包带走,去写视频检测逻辑。
3. 必须遵守的规定/常识
-
覆盖规则:如果再次运行训练且
name仍为train,而没有设置exist_ok=True,YOLO 会自动创建一个train2文件夹,而不会覆盖旧的。 -
权重独立性:
best.pt已经封装了模型结构信息。不需要data.yaml就可以在任何安装了ultralytics的电脑上运行这个模型进行推理(预测)。 -
结果解读限制:不要只看
train_loss。如果train_loss极低但val/mAP也低,说明模型过拟合了(如同只会背题,不会考试)。
更多推荐
所有评论(0)