目标检测评估方法学习及AP大于1情况的探索

目标检测AP值大于1的原因

最近在训练pytorch-yolov3模型模型的过程中,模型评估时,某些类别的AP值会大于1,根据自己的常识,一直认为计算AP的方法存在问题,但是并不是。原因请往下看。

计算AP的方法:

详情请参考:https://blog.csdn.net/qq_35916487/article/details/89076570

预备知识

IOU:两个目标框的交并比

目标检测评估方法学习及AP大于1情况的探索

目标框定义:

True Positive (TP):一个正确的定位结果,就是你预测的框和我们的groudtruth之间的IOU是可以大于我们规定的阈值的,我们一般取这个阈值都是0.5

False Positive (FP):就是一个错误的结果,就是你预测的这个框和groundtruth的IOU是小于阈值的

False Negative (FN): 就是我们本来这里有一个物体的,所以我们这个地方应该有个框,但是你没预测出来,那么这个groundtruth对于你的模型来讲就是一个FN

True Negative (TN):这个就是我们这个groundtruth找到了一个和它的IOU大于阈值的预测框,那么对于这个ground就是认为被成功的检测出来了。

Precision和Recall

目标检测评估方法学习及AP大于1情况的探索

目标检测评估方法学习及AP大于1情况的探索

AP的计算

11-points方法:

顾名思义,recall分为11点区间,AP定义为11个区间内最大precision的最大值得平均值。

目标检测评估方法学习及AP大于1情况的探索

目标检测评估方法学习及AP大于1情况的探索

Area方法:

顾名思义:区间内积分面积总和定义为AP。

目标检测评估方法学习及AP大于1情况的探索

目标检测评估方法学习及AP大于1情况的探索

原因分析:

原因:

1.recall=TP/all groundtruth,TP为满足IOU需求的检测框(一个groundtruth可能会对应多个TP),所以recall可能会大于1。

2.11-points方法的recall范围(0-1),area方法的recall范围覆盖整个recall范围。

3.综上两种原因,11-points方法,AP值总会落在0-1范围内;area方法,当recall范围超出0-1时,AP可能会出现大于1的情况。

总结:

所以说当遇到某些类别AP值大于1的时候,不要慌,先判断用的什么评估方法。

AP值大于1的可能类别,多数是因为类别分布不均衡导致,类别样本占比大的类别,容易出现此种情况。

上述分析属于个人理解,如有不对之处,还请指正。