深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]mAP评估

大家好,又见面了,我是你们的朋友全栈君。

基本概念

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

P-R曲线中,P为图中precision,即精准度,R为图中recall,即召回率。

Example

下面通过具体例子说明。

首先用训练好的模型得到所有测试样本的confidence  score,每一类(如car)的confidence   score保存到一个文件中(如comp1_cls_test_car.txt)。假设共有20个测试样本,每个的id,confidence  score和ground  truth  label如下:​​

ground  truth  label通过预测的bbox与ground  truth的iou确定为正样本或负样本。

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

接下来对confidence  score排序,得到:

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

P-R曲线:

我们得到top-5的结果,前score最高的前5个样本,预测label为1,即:

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

此例中采用top-5评估,也可采用其他评估,如AP50,即当预测框与真实框的IoU值大于这个阈值时,该预测框才被认定为真阳性(True Positive, TP),反之就是假阳性(False Positive,FP)。

在这个例子中,true   positives就是指第4和第2张图片,false   positives就是指第13,19,6张图片。是相对于方框内的元素而言,在这个例子中,confidence   score排在top-5之外的元素为false   negatives和true  negatives,即:

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

其中,false   negatives是指第9,16,7,20张图片,true   negatives是指第1,18,5,15,10,17,12,14,8,11,3张图片。

那么,这个例子中Precision=2/5=40%,意思是对于car这一类别,我们选定了5个样本,其中正确的有2个,即准确率为40%;Recall=2/6=30%,意思是在所有测试样本中,共有6个car,但是因为我们只召回了2个,所以召回率为30%。此时为下图中第5个样本点。同理图中第一个样本点:P=1,R=1/6,第二个样本点,考虑前两个样本,P=1,R=2/6=1/3。。。

这个例子的precision-recall曲线如下:

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。

AP计算:

接下来说说AP的计算,此处参考的是PASCAL  VOC  CHALLENGE的2010年之前计算方法。首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。​

当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值r,我们可以计算出对应(r’ >= r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。计算方法如下:​

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

相应的Precision-Recall曲线(这条曲线是单调递减的)如下:​

深度学习-目标检测评估指标P-R曲线、AP、mAP[通俗易懂]

AP衡量的是学出来的模型在每个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。

参考:https://blog.csdn.net/zdh2010xyz/article/details/54293298

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148106.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 个人微信号API接口,微信机器人

    个人微信号API接口,微信机器人前段时间公司需求开发一套自定义的微信机器人,需求是可以自己批量添加好友、批量打标签等进行好友管理,社群管理需要自动聊天,自动回复,发朋友圈,转发语音,以及定时群发等,还可以提取聊天内容,进行数据汇总,收藏快捷回复各种功能!一堆需求砸下来,调研开发了3个月,3个月啊!!!(主要被各种技术走偏路),终于成功了,都是走过的心酸泪,分享给大家,大家学习完,记得给我点个赞!!!大家一般需求点无非是以下几个需求:1.开发个人微信营销系统2.开发自定义的微信机器人,3.开发微信智能聊天客服系统

    2022年5月18日
    77
  • 怎么设置超链接网址css,css应该怎么设置超链接样式「建议收藏」

    怎么设置超链接网址css,css应该怎么设置超链接样式「建议收藏」css设置超链接样式的方法是,给超链接添加伪类,例如【a:visited{color:#00FF00;}】。【a:visited】表示用户已经访问过的链接。本文操作环境:windows10系统、css3、thinkpadt480电脑。如果我们要设置超链接的样式,其实是可以使用任何一个css属性的,比如颜色、字体、背景等等。但是如果你想设置特别的样式,就需要使用到伪类。下面我们一起来看下伪类。…

    2022年7月19日
    20
  • 编译CTK「建议收藏」

    编译CTK「建议收藏」 使用ctkPluginFramework作为插件系统框架的确有着众多开发上的优势。最近收到一些站内信,大家都想使用ctkPluginFramework但是不知道如何编译,这篇教程就来讲一讲ctkPluginFramework插件系统在Windows下的编译过程。准备条件:https://wenku.baidu.com/view/83ef9e1be97101f69e3143323968011ca3…

    2022年5月3日
    75
  • 永恒之蓝病毒解决方法蠕虫_永恒之蓝病毒解决方法

    永恒之蓝病毒解决方法蠕虫_永恒之蓝病毒解决方法辛亏“永恒之蓝”爆发在周末,绝大部分员工在家休息,为我们避免内网病毒爆发赢取了时间,整个周末一直加固已有系统和准备应急预案,避免周一发生大规模“永恒之蓝”在内部大面积爆发的可能。整体措施和预防传染病的原理类似:控制传染源、切断传播途径,保护易感人群。1控制传染源:所有的办公电脑开机前都必须网络隔离,所有计算机严禁插入U盘,一旦出现感染电脑,直接拔电源。就内网环境而言,一旦出现一例,大概率爆…

    2022年10月10日
    4
  • 2022年南京Java培训机构排名,实力突出遥遥领先

    2022年南京Java培训机构排名,实力突出遥遥领先2022年南京Java培训机构排名,实力突出遥遥领先近日,中国权威机构公布了2022年南京Java培训机构排名,本次排名第一的机构仍是动力节点,在2021年中,动力节点在Java培训机构排名中始终始名列前茅,那为什么动力节点在Java培训机构排名中始终名列前茅呢?一生只做一件事,动力节点为Java而生贵在专一多元化发展是人性的冲动,最容易干扰企业的方向。一个教育企业真正想要做大做强就要突破人骨子里的“贪婪”,专注到自己核心竞争力上,才会有不断提升持续进步的基础。动力节点从2009年成立至

    2022年10月3日
    5
  • php常用几种设计模式的应用场景

    php常用几种设计模式的应用场景

    2021年11月6日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号