目标检测中的AP计算
最近在学习目标检测,对模型评价指标AP的计算过程有点疑问,经过查找资料、问师兄,最终算是有了一个相对明确的了解,特此记录一下,方便以后查看,不足之处还请大家批评指正!
AP(average precision)是目标检测论文中广泛使用的模型评价指标,VOC的AP计算方法在2010年的时候发生过一次更改,现在常用的是2010年之后更改的AP计算方法,该计算方法相比于之前也更为合理,本文的AP计算也是2010年之后的计算方法。官方的定义如下:
(图片源自博客https://blog.csdn.net/hsqyc/article/details/81702437)
AP计算涉及到一些其他的知识,如TP,FP,TN,FN,precision,recall,IOU等等,下面进行简单介绍:
TP,FP,TN,FN,precision,recall
TP:真正例 true positive
FP:假正例 false positive
TN:真负例 true negative
FN:假负例 false negative
precision:准确率
recall:召回率
这几个名词的介绍我觉得这篇博客(https://blog.csdn.net/qq_41994006/article/details/81051150)里的一张图说的很清晰,这里直接摘下来了(略懒。。。)
IOU
IOU(交并比)就是两个bounding box的交集与并集之比,这里再摘一张图。。。(源自博客https://blog.csdn.net/hsqyc/article/details/81702437)
具体实现的python代码如下:
def box_iou(b1,b2):
'''b1,b2均为[x1,y1,x2,y2]'''
x1_1,y1_1,x2_1,y2_1=b1
x1_2,y1_2,x2_2,y2_2=b2
x1=max(x1_1,x1_2)
y1=max(y1_1,y1_2)
x2=min(x2_1,x2_2)
y2=min(y2_1,y2_2)
if x2-x1+1<=0 or y2-y1+1<=0:
return 0
else:
inter=(x2-x1+1)*( y2-y1+