保留正文与补采附件。源页面当前未重新核验;具体限制见交付清单。
[](javascript:void(0))
关注推荐热榜专栏圈子AI WorksBeta 故事
直答
切换模式
登录/注册
浅析经典目标检测评价指标--mmAP(二)
首发于欲穷千里目
切换模式
zzzz1
收录于 · 欲穷千里目
194 人赞同了该文章
本文上篇介绍了mmAP这一经典的目标检测评价指标的定义初衷和具体计算方式。下面我们来谈谈mmAP的诸多特点。通过分析我们甚至可以发现某些特点较反直觉,而某些特点可以加以利用达到“涨点”目的……与此同时,mmAP也并不“全能”,它也有一些未考虑到的因素。以下,我们将通过举例的方式来描述mmAP的这些特点以及它的局限。
mmAP的几个特点
先来看一组检测结果。
检测结果(蓝色框为Ground Truth,绿色框为检测结果)
凭直觉地看:b、d的检测结果均差于a、c,因为b、d均含有一个多余的FP;而c的结果要优于a,因为其定位更准确。凭直觉对它们的mmAP排序很可能会排出:c>a>b=d的结果。但实际上,这四组结果对应的mmAP如下图。
实际上,mmAP的排序为:c=d>b>a。为什么呢?
首先回顾一下mmAP的计算方法,mmAP是对每一个IOU阈值计算出一个mAP,然后将其平均得到最终的结果的,因此mAP@0.95和mAP@0.5是同等重要的(本文就暂以0.95和0.5举例,代表两个极端的阈值),虽然b中的两个检测结果其中必有一个为FP,但是在计算mAP@0.5时,分数低但定位更好的结果并不会对mAP产生影响(因为没有分数更低的TP出现了,该FP对P-R曲线毫无影响);同时,在计算mAP@0.95时,分数高但定位更差的结果变成了FP,但是由于a中在该阈值下根本不存在TP,所以b的mAP仍高于a。在所有阈值下,b的mAP都要好于或等于a,所以会有b的mmAP高于a这样的反直觉的现象产生。
再来看看c为什么大于b,同时会等于d?c和b的区别在于,c不存在定位更差的检测结果,因此在计算mAP@0.5这样的低阈值mAP时,两者完全相同(b中FP为何不会产生负面作用,道理同上文一样),而计算mAP@0.95这样的高阈值mAP时,c优于b,因此综合下来c的性能好于b。而b和d的直观效果一样,为何mmAP不同?因为b和d区别(也是唯一区别)在于,d中定位更好的检测结果的分数更高。这样一来,d的性能就和c一样了,因为那个低分且低性能的FP不会影响结果。
从这几个结果的对比我们可以发现mmAP的几个特点:1.mAP@0.75这样的高阈值mAP提高时,未必是定位的性能变好导致的,也有可能是因为检测器留下了部分本来应该被过滤掉的FP,而碰巧这个FP的定位效果更好,在高阈值mAP上提供了正面价值;2.如果检测器的定位性能更强,那么mmAP一定会有所提高;3.有时FP未必会影响性能,FP是否影响性能,关键要看是否还存在比该FP分数更低的TP。
如何利用其特点提高mmAP?
再看一组检测结果。
检测结果
这一组检测结果更真实一些,更像是性能正常的检测器输出出来的结果。直观地看,我们可以确信g>e,因为其定位效果更好。但是f和h仍然含有多余的FP,并且存在分数小于该FP的TP,那么它们的性能究竟如何呢?
实际上:g>h>e>f。其实这一组对比是希望分析检测中的一个问题,即“检测器检测出来的结果中,分数高的未必定位更好,如果分数低的检测结果更好,我们应该怎么办呢?”。其中e的做法是最传统的--直接抑制掉(抑制方法为NMS),而f中的做法则是选择保留,很明显,保留之后的性能变差了,这是因为保留之后必然会存在一个FP,而这个FP会对P-R曲线的后半段产生巨大影响;g的做法比较直观--保留那个分数低但是定位更好的,但是如何确定哪个是定位更好的结果呢?最简单的方法就是“预测定位效果”,IOU-Net就是一个可以用于解决这个问题的研究工作,通过预测检测结果与GT的IOU来判断哪个检测结果的定位效果更好;h的做法非常有意思--将那个应该被抑制掉的检测结果留下来,但是并不是像f那样直接保留,而是给它打了一个很低的分数再保留,这样一来:在计算低阈值mAP时,就不存在比这个FP分数更低的TP了,而在计算高阈值mAP时,它又会对性能有所帮助,所以综合下来,h中的操作也可以提高mmAP。等等,是否觉得这种重新打分的操作非常熟悉?没错,它就是Soft-NMS。其实,在大数据集上(比如COCO),是无法保证重新打分后的检测结果的分数低于所有其他TP的。但是只要被Soft-NMS重新打分的那些结果的平均性能优于该分数段的检测结果,那么性能就会提升。可以这样理解,那些本身就应该保留的高分检测结果大部分是“王者”或者“钻石”,而那些被重新打分的都是“王者”或者“青铜”,虽然并不都是好的,但是由于重新打分,我们把它们放到了“白银”分段,和那些低分检测结果混在了一起。所以最终它们还是能提高检测性能的。
mmAP之外 --分数密度
mmAP也并不是全能的,有一个被mmAP忽略掉的因素就是“分数密度”,也就是每个目标的具体得分情况,mmAP在计算时,只考虑所有检测结果的排序,但并不会考虑检测结果的具体分数,两个mmAP完全相同的检测器的得分可能相差很大。比如下图。
检测结果(红色表示FP)
两者的mmAP完全相同,但是FP的分值并不相同,左边的两个FP分别为0.87和0.86,而右边的两个FP为0.25和0.35。在实际使用时,右侧的检测器我们可以将分数阈值设置为0.35到0.88之间的任何一个数字,因为TP和FP之间有很大的分数差距;而对于左边的检测器,我们只能将分数阈值设置在0.87到0.88之间。换言之,有着同样的mmAP的检测器,在实际使用时的泛化能力未必相同。这是因为mmAP并没有考虑到如“分数密度”这样的因素。
mmAP之外 --P-R trade-off
mmAP更高意味着检测结果性能更好,但是当给定一个场景时,却未必总是这样。比如在一个智能收银场景,对图像中所有物体都要检测出来并进行分类,此时我们可能更关心accuracy=TP / (TP+FP+FN),因为此时漏检(FN)和误检(FP)对于性能的损失是相同的。那么拥有更高mmAP的检测器一定拥有更高的acc吗?答案是否定的。
如图,蓝色曲线和绿色曲线相比,AP明显更低,但是却可以达到更高的acc。
这个例子并不是用来证明mmAP不够好。实际上之所以有这样的现象,是因为:mmAP是用来评价检测算法的,而acc是用来评价具体场景下的检测器的。检测算法的mmAP更高,那么它在综合所有任务场景上来看就会有更好的性能。但是当我们有一个确定的场景时,mmAP就会因为“考虑得太全面”而不那么适用了,此时我们应该寻找一个其他的评价指标来衡量检测器的性能,这个指标需要考虑很多因素,比如如何在P-R重要性之间进行trade-off(取舍)。
总结
mmAP是目标检测领域非常重要的性能评价指标,它综合考虑了许多因素,比如类别间的均衡、定位精度的需求等。mmAP也有很多特点,比如“FP未必就是没用的”……不过,虽然mmAP很经典,但它也有体现不出来的要素,比如“分数密度“等。总而言之,mmAP是非常值得深入思考和研究的,辩证地看待它、使用它,才能由表及里的设计出优秀的目标检测算法。
PS:旷视南京研究院全职、实习岗位持续open,欢迎推荐、自荐,简历请发送至南京研究院负责人:songrenjie@megvii.com
编辑于 2021-03-22 08:05
计算机视觉
目标检测
深度学习(Deep Learning)
赞同 19430 条评论291 8
分享
申请转载
未登录用户
30 条评论
默认
最新
瞿可
跪求一个问题! 算mmap的时候是不是应该把置信度调的很低,尽量多检测出框,这样map会更高是吗????
2019-03-27
回复2
zzzz1
作者
是的,因为这样会加长pr曲线的尾巴,并且对pr曲线的前面的部分不会有任何影响。
2019-03-27
回复喜欢
展开其他 3 条回复
zg9uagfv
大佬,map@0.5的mmap等于33.7,是怎么计算出来的?
2019-02-28
回复2
zzzz1
作者
大兄弟你看得很细啊~
实际上这是一个计算上的细节问题。
直观来看Recall最大为0.33,所以0-0.33期间Precision都为1。那么计算下来mAP应该等于0.33才对。但是实际上COCO计算mAP时使用了recall = [0, 0.01, ..., 1.00]共101个采样点,因此共有34(0到0.33)个点的Precision=1,其余均为0。所以其mAP为 34/101 约等于0.337。
2019-03-01
回复11
展开其他 1 条回复
zxhr2793
楼主总结的非常好,解决了我实验中遇到的一些不理解的现象。但是有个疑问:f保留的那个FP会对后面的PR曲线产生影响嘛?在@0.5时,FP之后没有TP,召回率不变,精度下降,但是PR曲线没有变化啊,所以和h@0.5的分数不一样不太明白
2019-02-24
回复1
zzzz1
作者
可能是图画的不太好,分数不清晰。f里面的那个很明显的fp的分数比另外两个tp要高,所以它后面是有tp的,所以该fp会影响性能。
2019-02-24
回复喜欢
展开其他 1 条回复
后仰平行地面
您好楼主,请问一下目标检测算法是不是不能考虑ROC曲线和灵敏度特异度啊?因为fpr和特异度这两个指标计算都涉及tn,但是我看有些论文ROC曲线的横轴也就是fpr直接拿fp画的,这对吗
2020-09-18
回复喜欢
南来北往
您是不是应该注明一下各检测框与gt的iou,不然mmap难得看出来呀...
2020-07-22
回复喜欢
步履不停
请问一下大佬,在iou0.95的情况下,为什么a中没有TP,它0.96不也是属于TP的情况吗,难道是图显示不够清楚
2020-05-26
回复喜欢
小河沟
大多数同一个gt的对应的多个预测框,nms过后差不多都没有了吧
2020-02-06
回复喜欢
付知乎
大佬,请问有碰到过两个检测器在IoU@0.5和IoU@0.7下的Recall差不多,且在0.5下的mAP也差不多,但在0.7下的mAP却差别较大的情况吗?
2019-07-25
回复喜欢
a粒
您好,我想问一下,目标检测的评价中是不是不用ROC?原因是不是在False positive rate=FP/N的计算中,N(negative)的数量无法计算呀?
2019-07-13
回复喜欢
zzzz1
作者
对的,n就不好定义。检测这样的非结构化输出任务的是不好定义TN这个概念的。
2019-07-15
回复喜欢
康康
老哥你可以把这几幅图当面试题了
2019-04-18
回复喜欢
点击查看全部评论
未登录用户
关于作者
zzzz1
回答 11 文章 2 关注者 649
关注他发私信
大家都在搜
换一换
江歌妈妈发长文尘埃终将落定704 万热
中国男足 0-5 巴勒斯坦562 万热
原央视主持人阿丘回应被通报419 万热
华为与赛力斯达成新五年合作409 万热
迪拜航空确认航班发生事故398 万热
东航回应网传空姐跪地道歉326 万
王楚钦:不知道为什么就是感觉累320 万热
江苏高考作文《衬衫的价格为 9 磅 15 便士》爆火268 万
女装网店开始用防拆带了265 万
孕妇骑车别车被司机踹翻257 万
目标检测评价标准mAP 千佛山彭于...发表于机器学习、...
避坑指南:如何选择适当的预测评价指标?| 程序员评测 AI科技大...发表于AI科技大... 想来知乎工作?请发送邮件到 jobs@zhihu.com
打开知乎App
在「我的页」右上角打开扫一扫
其他扫码方式:微信
下载知乎App
无障碍模式
验证码登录
密码登录
开通机构号
中国 +86
获取短信验证码
忘记密码
登录/注册
其他方式登录
未注册手机验证后自动登录,注册即代表同意《知乎协议》《隐私保护指引》
扫码下载知乎 App
关闭二维码