文章目录
- YOLO模型的输出文件
-
- results.png
- confusion_matrix.png
-
- [怎么看confusion matrix](#怎么看confusion matrix)
- 如何分析更深层次的数据
- [什么是early stopping](#什么是early stopping)
YOLO模型的输出文件
results.png
是 results.csv的 图形化文件
体现出训练集和真值效果,以及模型泛化能力
代表的是每一轮对数据集标定与验证的结果
左侧的LOSS数据如何看呢?
-
第一排是训练集pred与真值之间的结果
我们重点是在分割,所以关注train/seg_loss和train/cls_loss较多一些,其他数据关注度不高;
期待状态是稳定的下降和没有发散
实际数据集的结果,就是稳定的下降和没有发散
-
第二排是验证集的泛化结果
期待状态是稳定的下降和没有发散
实际结果,前期是有些波动,后期的趋势还是下降的。说明没有过拟合
右侧的Box指标,也就是(B)
- 期待状态是稳定上升
- 实际是前期比较抖动,中后期仍然是稳定上升了;
- Recall 比 Precision 低一些,说明模型相对更"保守",误检少,但有些目标没找全。
- Precision 高 Recall 低:偏保守
- Recall 高 Precision 低:偏激进
- mAP50(B)指的是box 在 IoU=0.5 时的 mAP,mAP50-95(B)指的是更严格的 box mAP,
右侧的Mask指标,也就是(M)
- 期待状态是稳定上升
- 实际是前期比较抖动,中后期仍然是稳定上升了;
最终结论 ------训练是成功的、没有明显过拟合、40轮后就进入early stopping、Box效果好于Mask、Recall 相对偏低,是后续优化重点
改善方法------如果想提高 Recall,可以考虑:增加难样本、增加小目标样本、调低推理阈值、检查漏检类是否样本不足
confusion_matrix.png
作用于验证集,告诉你模型把真实类别认成了什么,以及哪些类别最容易互相混淆。
怎么看confusion matrix
- 横轴 True:真实类别
- 纵轴 Predicted:预测类别
- 左上到右下这条对角线,表示:真实是什么,模型也预测成什么。对角线越深,说明这个类别识别得越对
- 对角线以外的格子表示:真实是 A,但模型预测成了 B。这些就是混淆
- 最后一列 / 最后一行 background
- 最后一列 background(横轴)表示:真实是 background,但模型预测成了某个类。
这更像误检来源的一部分。 - 最后一行 background(纵轴)表示:真实是某个类,但模型预测成了 background
也就是:漏检。
如何分析更深层次的数据
- 哪些是核心类------样本量大、容易学会
- 哪些是边缘类------样本少、难以区分
- 哪些是容易混淆的类------非对角线的颜色块表明混淆
- 误检多还是漏检多------综合考虑到precision和recall的比例,应该偏向于保守型,同时观察background的行列进行分析
什么是early stopping
- Early stopping 会在这种情况下触发:
模型在验证集上的关键指标,连续若干个 epoch 都没有变好 - 作用是防止过拟合------当在验证集上发现模型的学习得差不多了,验证集上的指标几乎不变的时候,继续训练会让模型不会变好而是变差。
- 减少训练资源