IOU算法
目标领域通常使用IOU(Intersection over Union)算法评价两个框的接近程度
例如,现在yolo模型在验证集上预测出物体位置并绘制识别框,识别框与标记框的交集面积计为\(S_{交集}\),识别框与标记框的并集面积计为\(S_{并集}\),那么:
即Intersection over Union,交集在并集上,交并比
一般认为\(IOU\geq0.5\)时预测正确
准确率与召回率
对于多分类问题,取其中一类,认为其它类别为反例
则真实情况与预测结果的关系可分为四种:
| 预测为正例 | 预测为反例 | |
|---|---|---|
| 实际为正例 | True Positive | False Negative |
| 实际为反例 | False Positive | True Negative |
上面的表格一般称为混淆矩阵(Confusion Matrix)
基于混淆矩阵数值,得出精确率(Precision)与召回率(Recall)定义:
基于以上两个指标,可以计算F1分数:
F1分数是准确率与召回率的调和平均数,综合考虑了两者的表现
除了F1,还有F2、F0.5等指标,它们的通用公式为:
其中\(\beta\)表示对召回率的重视程度,\(\beta>1\)时更重视召回率,\(\beta<1\)时更重视准确率,\(\beta=1\)时即F1分数,准确率与召回率同等重要
P、R与conf的关系
置信度(confidence)是模型对预测结果的确信程度,通常表示为一个概率值,范围在0到1之间
置信度越高,准确率通常越高,但召回率会下降;置信度越低,召回率通常越高,但准确率会下降
分析P-conf、R-conf曲线、F1-conf曲线,我们无法改变曲线的变化趋势,但是我们期望P、R、F1都有较高的均值。在实际运用中,我们往往取F1最高点对应的conf值作为最终的置信度阈值,并称F1的最大值为模型的F1分数,对应的P、R值即为模型的精确率与召回率
PR曲线与mAP
PR曲线(Precision-Recall Curve)展示了在不同置信度阈值下模型的精确率与召回率的关系
PR曲线下的面积即为平均精确率(Average Precision,AP),AP值的大小,主要取决于P-conf、R-conf曲线的形状,当两曲线绘制于同一坐标系中,如果两曲线交点高度较高,则AP值较大,反之则较小
综上,PR曲线靠外,AP值较大,代表了能够找到一个conf使得P、R都较高
现在,对于模型预测的所有类别,都绘制出各自的PR曲线,并计算出各自的AP值,最后对所有类别的AP值取平均,即为mAP(mean Average Precision,平均精确率)
同时,我们知道我们通过IOU阈值来判断预测是否正确,当IOU变大时,模型预测正确的难度也变大,因此mAP通常会随着IOU阈值的增大而减小,因此我们通常会计算多个IOU阈值下的mAP值,并标注出来,例如mAP@0.5表示IOU阈值为0.5时的mAP值,mAP@0.5:0.95表示IOU阈值从0.5到0.95,步长为0.05时的mAP均值
fitness
fitness是YOLO模型训练过程中用于评价模型性能的指标,作为模型的loss,目标是使fitness值最小化
fitness是P、R、mAP@0.5、mAP@0.5:0.95四个指标的加权和,默认情况下,fitness的计算公式为:
如果要修改权重,修改ultralytics/utils/metrics.py文件中的fitness函数即可