目标检测评估方法学习及AP大于1情况的探索
目标检测AP值大于1的原因
最近在训练pytorch-yolov3模型模型的过程中,模型评估时,某些类别的AP值会大于1,根据自己的常识,一直认为计算AP的方法存在问题,但是并不是。原因请往下看。
计算AP的方法:
详情请参考:https://blog.****.net/qq_35916487/article/details/89076570
预备知识
IOU:两个目标框的交并比
目标框定义:
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的计算
11-points方法:
顾名思义,recall分为11点区间,AP定义为11个区间内最大precision的最大值得平均值。
Area方法:
顾名思义:区间内积分面积总和定义为AP。
原因分析:
原因:
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的可能类别,多数是因为类别分布不均衡导致,类别样本占比大的类别,容易出现此种情况。
上述分析属于个人理解,如有不对之处,还请指正。