在Yolo训练过程中,我们需要对训练结果进行分析,以便更好地了解模型的性能和训练效果。
基础概念
TP():真正例,即模型正确预测为正类别的样本数。
FP():假正例,即模型错误预测为正类别的样本数。
TN():真负例,即模型正确预测为负类别的样本数。
FN():假负例,即模型错误预测为负类别的样本数。
准确率():在所有预测为正类别的样本中,确实为正类别的样本的比例,即预测为正类别的样本中有多少是真正的正类别。
公式为:
召回率():在所有真正的正类别样本中,被正确预测为正类别的样本的比例,即真正的正类别样本中有多少被预测为正类别。
公式为:
F1值():综合考虑准确率和召回率,是准确率和召回率的调和平均数。
公式为:
IoU():交并比,是目标检测中常用的评价指标,用于衡量预测框和真实框之间的重叠程度。
公式为:
AP():在目标检测中,AP通常指Precision-Recall曲线下的面积,用于综合评估模型的性能。
mAP():多类别目标检测中,mAP是所有类别AP的平均值,用于评估整个模型的性能。
P-R curve():准确率-召回率曲线,是用来评估模型在不同阈值下的准确率和召回率之间的关系,通常用于评估二分类问题的性能。
训练结果分析
在YOLO训练完成后其训练缓存文件夹结构如下:
.
├── args.yaml
├── confusion_matrix.png
├── confusion_matrix_normalized.png
├── events.out.tfevents.1732165130.Tianli.27344.0
├── F1_curve.png
├── labels.jpg
├── labels_correlogram.jpg
├── PR_curve.png
├── P_curve.png
├── results.csv
├── results.png
├── R_curve.png
├── train_batch0.jpg
├── train_batch1.jpg
├── train_batch2.jpg
├── val_batch0_labels.jpg
├── val_batch0_pred.jpg
├── val_batch1_labels.jpg
├── val_batch1_pred.jpg
├── val_batch2_labels.jpg
├── val_batch2_pred.jpg
└── weights
├── best.pt
└── last.pt我们的训练模型位于weights文件夹中,其中
best.pt是训练过程中在验证集或测试集上表现最好的模型参数。last.pt是训练过程中最后一次保存的模型参数。
训练结果分析主要包括以下几个方面:
混淆矩阵(Confusion Matrix):用于展示模型在不同类别上的预测结果,可以帮助我们了解模型的分类性能。
混淆矩阵是对分类问题预测结果的总结,通过计数值汇总正确和不正确预测的数量,并按每个类别进行细分,展示了分类模型在进行预测时对哪些部分产生混淆。在图中,X轴表示真实类别,Y轴表示预测类别。
混淆矩阵主要方便我们清晰的了解到分类模型的错误类型,比如哪些类别容易混淆,哪些类别容易被正确分类等。
准确率曲线(P Curve):用于展示模型在不同阈值下的准确率,可以帮助我们选择合适的阈值。
X轴表示阈值,Y轴表示准确率。
曲线越靠近左上角,说明模型在低置信度情况下仍然能够保持较高的准确率,说明模型的分类性能较好。反之,曲线越靠近右下角,说明模型在低置信度情况下准确率较低,说明模型的分类性能较差。
召回率曲线(R Curve):用于展示模型在不同阈值下的召回率,可以帮助我们选择合适的阈值。
X轴表示阈值,Y轴表示召回率。
曲线越靠近右上角,证明其在过滤掉低置信度的预测框后,仍然能够保持较高的召回率,说明模型的分类性能较好。反之,曲线越靠近左下角,说明模型在过滤掉低置信度的预测框后召回率较低,说明模型的分类性能较差。
准确率-召回率曲线(PR Curve):用于展示模型在不同阈值下的准确率和召回率之间的关系,可以帮助我们选择合适的阈值。
X轴表示召回率,Y轴表示准确率。
PR曲线是准确率和召回率之间的关系曲线,通常情况下,当召回率升高时,精确率会降低,反之亦然。曲线越靠近右上角,说明模型在保持较高召回率的同时,能够保持较高的准确率,说明模型的分类性能较好。
F1值曲线(F1 Curve):用于展示模型在不同阈值下的F1值,可以帮助我们选择合适的阈值。
X轴表示阈值,Y轴表示F1值。
F1值是准确率和召回率的调和平均数,是综合考虑准确率和召回率的指标。F1值越高,说明模型的分类性能越好。
标签分布图(Labels Correlogram):用于展示模型在不同类别上的预测结果,可以帮助我们了解模型的分类性能。
标签分布图是对模型在不同类别上的预测结果进行可视化展示,展示目标检测算法在训练过程中对标签之间相关性的建模情况。每个矩阵单元代表模型训练时使用的标签,而单元格的颜色深浅反映了对应标签之间的相关性。
对角线上的颜色代表每个标签自身的相关性,通常是最深的,因为模型更容易学习标签与自身的关系。
可以直观识别到哪些标签之间存在较强的相关性,这对于优化训练和预测效果至关重要。如果发现某些标签之间的相关性过强,可能需要考虑合并它们,以简化模型并提高效率。
结果分析表(Results Table):用于展示模型在不同类别上的预测结果,可以帮助我们了解模型的分类性能。
结果分析表是对模型在多轮训练中的性能的变化。
其中,有几个重要的指标:
box_loss:定位损失,量预测框与标注框之间的误差,通过最小化定位损失,使模型可以更准确地定位目标。
cls_loss:计算锚框对应的分类是否正确,通常使用交叉熵损失函数,其值越小表示分类越准确。通过最小化分类损失,使模型能够准确分类目标。
dfl_loss:深度特征定位损失,用于解决目标检测中的类别不均衡,并提高模型在处理小目标上和困难样本上的性能。
metrics/precision:准确率,即模型预测为正类别的样本中有多少是真正的正类别。
metrics/recall:召回率,即真正的正类别样本中有多少被预测为正类别。
metrics/mAP50:AP(Average Precision)指标,计算在50% IoU阈值下的平均准确率,用于评估模型的性能。
metrics/mAP50-95:计算在50%到95% IoU阈值范围内的平均准确率,用于评估模型在不同IoU阈值下的性能。
训练批次图(Train Batch):用于展示模型在训练集上的预测结果,可以帮助我们了解模型在训练集上的表现。
验证批次图(Validation Batch):用于展示模型在验证集上的预测结果,可以帮助我们了解模型在验证集上的表现。
问卷调查
在本篇学习笔记中,在多处使用了AI快捷搜索对话功能,作为读者,你认为这种功能对你的文章阅读有帮助吗?您可点击以下链接参与问卷调查,帮助我们更好地改进产品,本次问卷为有奖问卷,包括PostChat会员和现金奖励,感谢您的参与!点击参与问卷调查









