mAP,深度学习中物体识别评价函数的解析

一、前言

在做物体识别中,经常会使用到mAP来评价一个网络的好坏,但是如何计算mAP呢?这里边涉及到诸多概念,通常让初学者眼花缭乱。本文旨在将这些概念整合到一篇文中,系统的整理这些概念,从最基本的定义开始,直到求解出mAP,尽可能地详细。由于我当初作为初学者被这块搞得很头大,因此希望给与后来地初学者一点小小地帮助。最后用一句话提升一下本文的高度:本着知识共享,不做重复劳动,最大化社(吹)会(牛)资(不)源(打)利(草)用(稿)的原则,我写下了这篇文章。

二、常用定义

  • TP真阳性;输出为阳性,真实值为阳性。表示真确检测到目标。
  • TN真阴性;输出为阴性,真实值为阴性。表示真的没有目标。
  • FP假阳性;输出为阳性,真实值为阴性。表示误识别为目标类别。
  • FN假阴性;输出为阴性,真实值为阳性。表示未检测出该目标。
  • IOU交并比;表示经过检测圈出来的方框与真实值的方框的交集与并集的比值。
  • Recall召回率;真确检测到的目标个数与总目标个数的比值。
  • Pricision准确率;真确检测出来的目标分类个数与所有输出为阳性的个数的比值。
  • AP平均准确率;指PR曲线的面积。
  • mAP平均准确率的均值;多类别的识别中,求出各个类别的平均准确率之后再求均值。

三、详细解释

3.1、一些潜规则

  • 1、这里是评价一个网络的好坏的手段,因此,背后是有测试数据集的,不要说那些真实值是怎么来的,是测试集中已经标定出来的。
  • 2、输出为阳表示检测到该目标,为阴表示未检测到目标。如检测猫类,如果网络认为某一块有猫,怎认为网络输出为阳。注意网络输出是网络认为的,并不是真实值,真实值在数据集中。

3.1、解释TP、TN、FP、FN

这四个概念我们知道真阳、真阴、假阳、假阴,但是很容易就搞不清楚谁是谁。其实我们只需要记住,这是我们用来判断网络输出对错的概念,网络输出阴和阳,我们在前面判断它是真的还是假的进行了。比如说我要检测图片中所有的猫,网络检测到这一块有猫,实际确实有猫,那就是真阳性,如果把狗检测成了猫,那就是假阳性;如果网络检测这一块没有猫,实际上有猫,那就是假阴性,如果确实没有猫,那就是真阴性。这一块就解释到这。

3.2、解释IOU

IOU全称叫做Intersection over Union,又叫交并比。引用一下Object-Detection-Metrics中的示意图如下:
交并比示意图
在物体识别中,我们将识别出来的物体,通过方框框出来,而实际检测出来的方框与实际的方框几乎不可能完全重合,因此,我们需要一个指标来评价两个方框的重合程度,这个指标就是IOU,从他的定义可以看出,IOU越高,越接近真实值,IOU最高为1。

3.3、解释Precision

precision为精确度,他的公式如下所示:
P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP}
什么意思呢?TP是输出为阳,真实值为阳,就是真确识别的目标,FP是输出为阳,真实值为阴,就是误识别的目标。从公式可以看出,它表达的意思是测试样本中,所有输出为阳的样本中检测真确的比率。他的意义是体现出网络找到的目标中,准确的比例。这里有个小问题,就是如何确定TP,我们上面说到,检测方框和真实值的方框几乎不会完全重合,那么怎么确定检测的阳是真的阳呢?这就需要用到上面的IOU了,检测方框和真实值方框可以算出一个IOU,这个IOU越高说明重合程度越高,因此,通常设置一个阈值 T h r e s h o l d Threshold ,当IOU大于这个阈值,我们认为是真的检测出来了,否则认为这个是误检测。

3.4、解释Recall

recall又称召回率。这个词其实挺好理解的,如果一个数据集中有50条猫,结果检测到30条,其中25条准确,另外5条是误将狗识别成了猫,那么它的召回率就是 25 50 = 1 2 \frac{25}{50}=\frac{1}{2} 。它的公式表示如下:
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN}
一个数据集中真实猫的个数为真实检测出来的TP加上未检测出来的猫FN,这就是 T P + F N TP+FN 的意义,就是指这个网络能够将真实存在的猫找出来的比例。犹如汽车召回,一批车有N辆刹车有问题,汽车厂商决定召回,最后召回了n辆有问题的车,说明还有N-n辆车没有召回,这就是召回率的意义,能够体现网络将所有正确值找全的能力。

四、AP的求解

4.1、P-R曲线绘制

有了上面的基础,P-R曲线就可以理解了,实际操作中,假设测试数据集有10张图片,每张图片经过网络检测后,都可以得到一组Precision和Recall,这样一轮下来,就得到了10组Precision和Recall,将这十组数据在横坐标为召回率(R)纵坐标为准确率(P)的坐标戏中绘制出来,就得到了P-R曲线。在上面的开源项目中同样提到了P-R曲线,我们用他的图来示意一下:
PR排序后的列表
上图中的排序为按照召回率从小到大排序,如果召回率相同,则按照准确度从大到小排序。这样排序,后面绘图的连线会非常方便。如下图所示:
P-R曲线图
至此,P-R曲线就得到了。

4.2、计算AP值

计算AP的方法不唯一。上述开源项目提供了两种AP计算方法,分别是11点插值法和AUC计算法

4.2.1、11点插值法

11点插值法是指在上图P-R曲线中插入11个点,这十一个点分别为[0, 0.1, 0.2, 0.3, ···, 1],也就是说从0到1的闭区间按照间隔0.1取11个点,这十一个点的精确值是通过一个定义决定的,这个定义就是召回率大于该点的最大准确度,如下图:
11点插值法示意图
图中0点出往后,最大的一个准确度为1,因此0处值为1,同理,0.1处往后最大的准确度为召回率在0.1333的时候,值为0.6666,因此,0.1处的值为0.6666,同理0.2处的值为召回率大于0.2最大的那个准确度。插好值之后,就是计算这些值的平均值,假设这些插值为 ρ i \rho_i ,其中 i [ 1 , 11 ] i\in[1,11] 分别表示11个插值,则AP计算公式为:
A P = 1 11 ( i = 1 11 ρ i ) AP = \frac{1}{11}*(\sum_{i=1}^{11}{\rho_i})

4.2.2、AUC计算法

AUC全称area under curve,实际上就是低于曲线的面积,那么这个曲线是怎么来的呢?如下图所示:
AUC计算中的曲线示意图
我们就可以得到四个长方形,如下图所示:
AUC示意图
A 1 = 0.0666 0 ) × 1 = 0.0666 A 2 = ( 0.1333 0.0666 ) × 0.6666 = 0.04446222 A 3 = ( 0.4 0.1333 ) × 0.4285 = 0.11428095 A 4 = ( 0.4666 0.4 ) × 0.3043 = 0.02026638 A P = 0.0666 + 0.04446222 + 0.11428095 + 0.02026638 A P = 0.24560955 A P = 24.56 % \begin{aligned} A1&=0.0666-0) \times 1=0.0666 \\ A2&=(0.1333-0.0666)\times 0.6666=0.04446222 \\ A3&=(0.4-0.1333)\times0.4285=0.11428095 \\ A4&=(0.4666-0.4)\times 0.3043=0.02026638 \\ AP&=0.0666+0.04446222+0.11428095+0.02026638 \\ AP&=0.24560955 \\ AP&=24.56\% \end{aligned}

4.3、为什么要通过P-R曲线来求AP值呢?

P-R曲线中Recall的取值从0到1,长度为1,又联想到AP为平均准确率,于是,很容易地联想到积分中值定理,我们知道,连续函数 P ( R ) P(R) 在闭区间[0,1]中的积分,必然存在一个介于最大值与最小值的数AP,使得如下等式成立:
0 1 P ( R ) d R = A P × ( 1 0 ) \int_0^1P(R)dR = AP\times(1-0)
本质上,AP就是想用这个值来代替,由于实际的P-R点不是连续的,因此有了上面的方法来构造一个连续的P-R曲线并计算AP。

五、mAP的计算

这个就是平均准确率的均值,怎么理解呢?就是一个数据集有20个类别,测试数据集有N张图片,这N张图片对每个类别都可以按照上面的方法计算AP值,这样就可以有N个AP值,将这组AP值求个平均值就得到了mAP的值。

六、总结

这里边概念比较多,而且又是套娃式的存在,非常容易把初学者搞混,这里再总结一下:先由数据集经过网络预测,结合数据集label计算TP、TN、FP、FN;再由这些值计算每个类别的Precision和Recall;再对每个类别进行P-R曲线绘制;然后计算每个类别的AP值;最后将这些值求个平均数,就是mAP。

如果还有疑问,请先查看评论区,如果评论区没有相关问题,可以评论提出,大家一起讨论。此外,以上概念为个人理解,如有偏差,欢迎提出批评指正。

七、致谢及参考资料

本博文借鉴了诸多前辈的劳动成果,以下为参考资料,在此表示感谢!

https://github.com/rafaelpadilla/Object-Detection-Metrics
https://zhuanlan.zhihu.com/p/94597205
https://www.jianshu.com/p/8848a1441c0f

发布了9 篇原创文章 · 获赞 7 · 访问量 5556

猜你喜欢

转载自blog.csdn.net/u013702040/article/details/105034437
今日推荐