yolov5训练日记最后一步怎么看?

文章导读
查看 YOLOv5 训练日记的最后一步,核心在于解读训练结束时的终端日志输出以及 runs/train/exp 目录下生成的结果文件。通常最后一步显示的类似 184/184 的数字代表验证集(val)的图片数量,而非训练集。你需要重点关注 results.txt 中的最终 epoch 指标,包括 box、obj、cls 损失值以及 mAP 精度。同时检查 weights 文件夹下的 best.pt
📋 目录
  1. YOLOv5 训练结果可视化图表全解析
  2. yolov5 训练结果分析
  3. yolov5 训练后结果怎么看
  4. YOLOv5 训练结果文件分析:Windows 系统下的详细教程
  5. FAQ
A A

查看 YOLOv5 训练日记的最后一步,核心在于解读训练结束时的终端日志输出以及 runs/train/exp 目录下生成的结果文件。通常最后一步显示的类似 184/184 的数字代表验证集(val)的图片数量,而非训练集。你需要重点关注 results.txt 中的最终 epoch 指标,包括 box、obj、cls 损失值以及 mAP 精度。同时检查 weights 文件夹下的 best.pt 和 last.pt 文件,best.pt 代表验证集性能最佳的模型权重。通过对比训练损失与验证损失的曲线趋势,可以判断模型是否收敛或过拟合,从而决定是否需要调整超参数或重新训练。

YOLOv5 训练结果可视化图表全解析

1. 训练结束,别急着关!你的 YOLOv5“体检报告”来了 每次跑完 YOLOv5 的训练,看着终端里跳动的数字最终定格,你是不是长舒一口气,心想“终于跑完了”?然后可能就兴冲冲地拿着 best.pt 模型去测试新图片了。如果你是这样,那可就错过了一座“金矿”。runs/train/exp 文件夹里那一堆.png 图片和.txt 文件,可不是随便生成的日志,而是你的模型一份详尽的“体检报告”。我刚开始玩目标检测的时候,也犯过这个错误,只关心最后的 mAP 数字,觉得越高越好。直到有一次,模型在测试集上 mAP 看起来不错,但实际部署时,总是漏掉一些关键的小目标,或者把背景里的树枝误认成目标,搞得焦头烂额。后来我才明白,问题就藏在这些可视化图表里。它们就像医生的 X 光片、化验单,能直观地告诉你模型到底“健康”在哪里,“病灶”又在哪里。是“视力”不好 (召回率低),还是“疑心病”重 (精度低)?是某一类物体总学不会,还是框的位置总是不准?这份报告,YOLOv5 已经帮你自动生成了,关键在于我们得会看、会解读。今天,我就带你把这些图表一张张拆开,用最直白的话,讲清楚每张图背后的故事,让你不仅能看懂模型好坏,更能知道下一步该往哪里优化。咱们不搞复杂的数学公式堆砌,就聊怎么看图说话,诊断模型。

yolov5 训练结果分析

1. 训练日志的逐帧解读方法 我第一次用 YOLOv5 跑完 50 个 epoch,盯着控制台滚动的日志发了十分钟呆——满屏的数字像天书。后来才明白,训练日志不是用来“看结束没”,而是要像读心电图一样,一帧一帧解码模型的学习状态。关键不在最后那个 mAP 数值,而在每一步心跳是否稳健。先说最基础的 loss 曲线。YOLOv5 默认输出三个 loss 分量:Box loss(定位误差)、Object loss(置信度误差)、Class loss(分类误差)。实测下来,如果训练到 30 epoch 后 Box loss 还在 0.08 以上反复震荡,大概率是 anchor 匹配出了问题;而 Class loss 长期卡在 0.15 不动,往往说明类别间样本分布极不均衡——比如你标注了 2000 张猫图、却只标了 87 张狗图,模型干脆“选择性失明”。我遇到过一次,把狗类样本人工复制增强并加权后,Class loss 三天内就压到了 0.03。再看 mAP 变化趋势。注意区分 mAP@0.5 和 mAP@0.5:0.95 两个指标:前者只在 IoU=0.5 阈值下统计,后者是 0.5 到 0.95 每隔 0.05 取一次平均。新手常犯的错是只盯 mAP@0.5,结果部署时发现小目标漏检严重。我建议你打开 runs/train/exp/results.csv,用 Excel 画两条曲线——当 mAP@0.5:0.95 的曲线上升缓慢但 mAP@0.5 仍在冲高,基本可以断定模型正在“作弊”:它学会了用宽松阈值蒙混过关,实际定位精度很糙。还有两个隐藏信号容易被忽略:Precision 和 Recall 的比值关系。理想情况下两者应同步爬升,在某个点交汇后共同 plateau。但如果 Recall 在 0.6 就停滞,Precision 却冲到 0.85,说明模型变得极度保守——宁可漏掉 3 个目标,也不愿多框 1 个背景。这时该检查 conf_thres 参数是否设得过高,或者数据中是否存在大量模糊、遮挡严重的样本未被清洗。提示:用 tensorboard --logdir runs/train 启动可视化界面后,点击左侧"SCALARS"标签页,勾选所有 loss 项和 mAP 项,右上角切换"SMOOTHING"滑块到 0.6,能更清晰看到收敛趋势。别信单点峰值,要看连续 10 个 epoch 的移动平均线是否平缓下降。

yolov5 训练后结果怎么看

1.confusion 混淆矩阵:左侧为预测类,下方为目标真实类,从下方上看。比如,此次训练,time 目标被被训练得到的模型识别为 time 的比例为 1,即被百分百识别。而 have 目标识别 have 的比例 0.8 左右,另有 0.2 比例被识别为 tea。同理,name 目标被错误识别为 people 的比例为 0.2 左右。2.labels.jpg: 左上为每个类别的数量。右上为框的尺寸和数量。左下为框的中心点坐标。右下为框的长度和宽度。3.P_curve: p 曲线,即 precision 精确率曲线。我们可以设置图片置信度的阈值,判断置信度大于该阈值的图片属于该类别,得到模型对该图片的最终判断,即是某物。那么图片就好理解了,即置信度阈值越高,模型才认为图片是该物品,模型判断的越准确,这是很自然的,无需解释。但置信度阈值过高,可能会导致掉那些忽略信度低,但确实有该物品的图像。蓝线是全体类别判断精度,灰线则是其余具体的类的精准率_置信度曲线。4.R_curve: Recall/召回率/查全率曲线。Recall 即上面公式图中的 TPR 对应的 Sensitivity:真实值是 yes(positive 或称正例,即有要检测的类别的单个图片样本) 的样本的预测结果正确的比例,正例预测正确的比例。即正例查全的比例。显然,置信度月底,查全率会越高,即不容易漏过有对象的图片。蓝线,灰线同上。5.PR_curve: 精确度和召回率的关系曲线。毫无疑问,我们希望 R 越低越好,P 越高越好,但这是矛盾的,前者需要置信度阈值降低,后者需要置信度阈值增高,它们是一对矛盾的性能度量指标。于是有了 PR_curve,精确度和召回率曲线,此处的 P 为 mAP(mean Average Precision),即平均精度,毫无疑问,我们希望 P 与 R 都能到 1,即曲线围成最大的正方框,面积接近 1。6.F1_curve: F1(F1-score) 曲线。F1=2PR/(P+R),是 P 与 R 的调和平均数,我认为是一种对 P 与 R 的综合度量。1 最好,0 最差。7.result: 横坐标为轮数 (epoch),纵坐标为各类损失,越小,效果越好些。个人认为 box 为预测标框与标注标框偏差,obj 是图片有无识别出对象偏差,cls 为对象分类偏差。引用“第二个衡量指标:宏观上一般训练结果主要观察精度和召回率波动情况,波动不是很大则训练效果较好;如果训练比较好的话图上呈现的是稳步上升。”

yolov5训练日记最后一步怎么看?

YOLOv5 训练结果文件分析:Windows 系统下的详细教程

3.1 权重文件 (weights/目录) 该目录包含训练后的模型权重:best.pt:验证集上性能最佳的模型权重 (如最高 mAP)。last.pt:最后一个 epoch 的模型权重,用于继续训练或推理。ema.pt:指数移动平均权重,提升模型稳定性。使用场景:部署模型时优先使用 best.pt;通过 Python 脚本加载:importtorch model=torch.hub.load('ultralytics/yolov5','custom',path='runs/train/exp/weights/best.pt') 一键获取完整项目代码 python 1 2 3.2 训练日志文件 (results.txt) 文本文件记录每个 epoch 的详细指标:格式示例:Epoch gpu_mem box obj cls labels img_size 0/49 1.21G 0.01523 0.02011 0.003215 32 640 一键获取完整项目代码 1 2 3 关键指标:box:边界框损失,值越小越好。obj:目标置信度损失。cls:分类损失。gpu_mem:GPU 内存使用量 (Windows 下监控资源)

FAQ

问题 1:训练日志末尾显示的图像数量是训练集吗?

回答 1:不是,通常指的是验证集(val)的数据量,用于评估模型泛化能力。

问题 2:如何判断模型是否过拟合?

yolov5训练日记最后一步怎么看?

回答 2:如果训练损失很低但验证损失很高,且两者差距明显,通常说明模型过拟合。

问题 3:应该使用 best.pt 还是 last.pt 进行部署?

回答 3:建议优先使用 best.pt,因为它代表验证集上性能最佳的模型权重。