机器学习常用指标TP/TN/FP/FN
- 如果预测是正确的则为TRUE,如果预测出来的是正样本则为POSITIVE(如果目标是检测狗那么狗就是POSTIVE)
- TP(TRUE POSITIVE):预测为正,实际也为正
- TN(TRUE NEGATIVE):预测为负,实际也为负
- FP(FALSE POSITIVE):预测为正,实际为负
- FN(FALSE NEGATIVE):预测为负,实际为正
预测出来的类别(有正负类之分)看POSITIVE还是NEGATIVE,前者为正类,后者为负类
评价指标
Precision(准确率):衡量被预测的正类中真正正确的比例
Recall(召回率):衡量所有正类中被正确预测出来的正类
可以看上面图,比较直观。
IOU(交并比)
预测出来的BOX和GT BOX的交集面积➗并集面积
- 交并比会用来判断目标检测是POSITIVE OR NEGATIVE
- 首先会定义一个置信度阈值,假设为0.5;将预测的BOX和GT BOX计算IOU如果IOU大于0.5则定义为POSTIVE,反之为NEGATIVE
为了适用于对不同模型的评估
mAP:Mean Average Precision
鉴别正确的检测结果并计算precision和recall
- 首先计算IOU(预测结果和GT),如果BOX IOU>IOU阈值,则认为是True Positive,否则认为是False Positive
- 置信度阈值(不是IOU阈值!)可以改变预测框是POSITIVE还是NEGATIVE,如果预测框的置信度大于阈值被认为是POSTIVE否则为NEGATIVE。*** 例如一个IOU大于IOU阈值的BOX如果置信度没有到达置信度阈值将会被视作NEGATIVE***
mAP计算
- 至少IOU阈值和置信度阈值会影响mAP,前者比较好标准化(比如都设置为0.5),但后者由于模型不同很难采取一个统一的数值来衡量不同模型的好坏
- 首先会对模型预测结果进行排序,按照置信度降序排列,给定一个rank,Recall和Precision尽在高于该rank的预测结果中计算;
- 通常会选择11个不同的Recall,即11个不同的rank([0, 0.1, …, 0.9, 1.0])
- AP就定义为在这11个recall下precision的平均值,取所有类别的AP平均值就是mAP。
补充一下,在选择TP和FP时,计算某个Bbox,即使预测类别正确,最大IoU大于阈值,但是最大IoU对应的GT已经被拥有更高conf的Bbox预测了,那么也是FP,所有TP+FN是图片中所有该类别目标的数量。代码中有,但是貌似文章没有提到这个。