本文发表于 670 天前,其中的信息可能已经事过境迁

在Yolo训练过程中,我们需要对训练结果进行分析,以便更好地了解模型的性能和训练效果。

基础概念

  • TP():真正例,即模型正确预测为正类别的样本数。

  • FP():假正例,即模型错误预测为正类别的样本数。

  • TN():真负例,即模型正确预测为负类别的样本数。

  • FN():假负例,即模型错误预测为负类别的样本数。

  • 准确率():在所有预测为正类别的样本中,确实为正类别的样本的比例,即预测为正类别的样本中有多少是真正的正类别。

    公式为:Precision=TPTP+FP

  • 召回率():在所有真正的正类别样本中,被正确预测为正类别的样本的比例,即真正的正类别样本中有多少被预测为正类别。

    公式为:Recall=TPTP+FN

  • F1值():综合考虑准确率和召回率,是准确率和召回率的调和平均数。

    公式为:F1=2×Precision×RecallPrecision+Recall=2×TP2×TP+FP+FN

  • IoU():交并比,是目标检测中常用的评价指标,用于衡量预测框和真实框之间的重叠程度。

    公式为:IoU=IntersectionUnion=TPTP+FP+FN

  • AP():在目标检测中,AP通常指Precision-Recall曲线下的面积,用于综合评估模型的性能。

  • mAP():多类别目标检测中,mAP是所有类别AP的平均值,用于评估整个模型的性能。

  • P-R curve():准确率-召回率曲线,是用来评估模型在不同阈值下的准确率和召回率之间的关系,通常用于评估二分类问题的性能。

训练结果分析

在YOLO训练完成后其训练缓存文件夹结构如下:

shell
.
├── 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):用于展示模型在不同阈值下的准确率,可以帮助我们选择合适的阈值。

    P曲线P曲线

    X轴表示阈值,Y轴表示准确率。

    曲线越靠近左上角,说明模型在低置信度情况下仍然能够保持较高的准确率,说明模型的分类性能较好。反之,曲线越靠近右下角,说明模型在低置信度情况下准确率较低,说明模型的分类性能较差。

  • 召回率曲线(R Curve):用于展示模型在不同阈值下的召回率,可以帮助我们选择合适的阈值。

    R曲线R曲线

    X轴表示阈值,Y轴表示召回率。

    曲线越靠近右上角,证明其在过滤掉低置信度的预测框后,仍然能够保持较高的召回率,说明模型的分类性能较好。反之,曲线越靠近左下角,说明模型在过滤掉低置信度的预测框后召回率较低,说明模型的分类性能较差。

  • 准确率-召回率曲线(PR Curve):用于展示模型在不同阈值下的准确率和召回率之间的关系,可以帮助我们选择合适的阈值。

    PR曲线PR曲线

    X轴表示召回率,Y轴表示准确率。

    PR曲线是准确率和召回率之间的关系曲线,通常情况下,当召回率升高时,精确率会降低,反之亦然。曲线越靠近右上角,说明模型在保持较高召回率的同时,能够保持较高的准确率,说明模型的分类性能较好。

  • F1值曲线(F1 Curve):用于展示模型在不同阈值下的F1值,可以帮助我们选择合适的阈值。

    F1曲线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会员和现金奖励,感谢您的参与!点击参与问卷调查

评论 隐私政策