看完这篇就懂了。

IoU

intersect over union,中文:交并比。指目标预测框和真实框的交集和并集的比例。

mAP

mean average precision。是指每个类别的平均查准率的算术平均值。即先求出每个类别的平均查准率(AP),然后求这些类别的AP的算术平均值。其具体的计算方法有很多种,这里只介绍PASCAL VOC竞赛(voc2010之前)中采用的mAP计算方法,该方法也是yolov3模型采用的评估方法,yolov3项目中如此解释mAP,暂时看不明白可以先跳过,最后再回过头来看就能明白了。

比如我们现在要在一个给定的测试样本集中计算猫这个类别的AP,过程如下:
首先,AP要能概括P-R曲线的形状,其被定义为采用如下公式来计算:

那么,我们先来看看P-R曲线是什么:用蓝色笔迹遮住的部分不需要关注。

图中的曲线C就是一条P-R曲线,P表示纵轴的查准率precision,R表示横轴的召回率或称为查全率recall。P-R曲线下的面积可以用于评估该曲线对应的模型的能力,也就是说比较2个目标检测模型哪个更好,可以用P-R曲线面积来比较,面积越大模型越好。然而可能是因为这个面积并不好计算,所以定义了公式(1)来计算出一个叫AP的东西,反正这个东西也能体现出precision和recall对模型能力的综合影响。

从公式(2)可以知晓,Pinterpo(r)表示所有大于指定召回率r的召回率rhat所对应的的p的最大值。大于某个r的rhat有很多,我们要找到这些rhat中所对应的p是最大的那个,然后返回这个p。公式(1)中规定了r会从0-1.0以0.1为步长取11个值,然后将这11个r对应的11个p累加求算术平均值就得到了AP。所以我们要先得到一组rhat和p,这需要我们先了解recall和precision是如何计算的。

我们先来看看P(precision)和R(recall)的计算公式:
precision = TP / (TP+FP)
recall = TP / (TP+FN)

TP是检测对了的正样本,FP是检测错了的正样本,FN是漏检的正样本。

对于目标检测模型一般最后都会输出一个置信度(如果样本图片中有不止一个目标,本例中只选择猫类别的置信度即可),所以可以设置一个置信度阈值,比如0.6,那么高于0.6的就认为该样本被检测为了正样本(即检测为猫),这样我们会得到0.6阈值下的一组正样本。

然后在这组正样本的基础上,设定一个IoU的阈值,其值为0.5(意思是检测为猫的目标的预测边界框和真实边界框的交并比要大于0.5),大于该阈值的认为是TP,其它的认为是FP。然后用测试样本中真实的正样本数量减去TP,就得到了FN。

这样,在置信度阈值为0.6的情况下,我们就得到了一对P(precision)和R(recall),接着我们取不同的置信度阈值,得到更多的P-R对,然后根据公式(2)找到所有大于指定召回率r的召回率rhat所对应的的p的最大值(采用这种方法是为了保证P-R曲线是单调递减的,避免摇摆),作为当前指定召回率r条件下的最大查准率p,然后根据公式(1)计算出AP。这个AP就是猫这个类别的AP,接着我们可以计算其它类别的AP,然后对这些AP求算术平均值,就得到了mAP。

了解了mAP之后,我们就容易理解为什么目标检测模型的度量指标不能像图像分类模型那样直接计算一遍precision和recall,因为目标检测任务中会包含多个类别的目标,并且除了给目标分类,还要预测目标的边界框,所以要加入IoU的概念,并考虑多个类别,而mAP就是在考虑了IoU和多类别之后计算出的度量指标。

参考文献:

http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf
https://github.com/AlexeyAB/darknet

推荐阅读:

还再@微信官方要国旗?这才是正确的打开方式~

转载于:https://www.cnblogs.com/anai/p/11588912.html

目标检测中常提到的IoU和mAP究竟是什么?相关推荐

  1. 关于肺结节检测相关的FROC曲线和目标检测中Precision-Recall曲线,ROC曲线,mAP,AP,APs,APm,APl,AP0.5等的理解。

    ps自己之前也不理解这个FROC是什么鬼,连mAP,AP也不太理解(还有APs,APm,APl,AP0.5等等)后来花了挺长时间的,今天又有人问我FORC是什么,这里我就稍微总结下: 1.Precis ...

  2. 目标检测中NMS和mAP指标中的的IoU阈值和置信度阈值

    有时候路走的太远,会忘了为什么要出发. 学习亦如是 在目标检测中,经常看到置信度阈值和IoU阈值这两个关键参数,且NMS计算和mAP计算中都会有这两个,那它们的区别是什么?本文就这个问题做一次总结. ...

  3. 目标检测中的Iou与map指标详细介绍(零基础)

    目标检测中的Iou与map指标详细介绍(零基础) 最近在算法岗实习,更新的频率会低一点,希望在实习过程中学到更多有用的视觉知识. IOU指标 下图中Ground truth为标记的正确框,Predic ...

  4. 目标检测中的IoU、GIoU、DIoU与CIoU

    什么是IOU? 简单来说IOU就是用来度量目标检测中预测框与真实框的重叠程度.在图像分类中,有一个明确的指标准确率来衡量模型分类模型的好坏.其公式为: acc=PtrueNN=全部样本的数量,Ptru ...

  5. 论文推荐 | 目标检测中不平衡问题算法综述

    (图片付费下载于视觉中国) 作者 | CV君 来源 | 我爱计算机视觉(ID:aicvml) 今天跟大家推荐一篇前几天新出的投向TPAMI的论文:Imbalance Problems in Objec ...

  6. 目标检测中的Tricks

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来自 | 知乎    作者 | roger 链接 | https: ...

  7. 什么是目标检测中的旋转敏感度错误?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文章导读 旋转框的目标检测任务通常出现在遥感数据,文本数据,以及点 ...

  8. 目标检测中的特征冲突与不对齐问题

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|深度学习这件小事 前言 昨天看到一篇商汤的刷榜文< ...

  9. 【TPAMI2020】目标检测中的不平衡问题:综述论文,34页pdf

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:ChenJoya 知乎链接:https://zhuanlan.zhihu.c ...

最新文章

  1. 【收藏】万字综述,核心开发者全面解读PyTorch内部机制
  2. php的filesystem基本函数的学习(1)
  3. NeuSoft(2)添加系统调用
  4. linux如何找到桌面,我怎样才能找到我正在使用的桌面环境?
  5. 阿里巴巴对Java编程【代码格式】的规约
  6. JavaScript大杂烩17 - 性能优化
  7. vue3中v-model的重大更新
  8. codeforces 258div2 B Sort the Array
  9. sql oraoledb.oracle,无法创建链接服务器XXXXX的 OLE DB 访问接口OraOLEDB.Oracle的实例。 (Microsoft SQL Server,错误7302)...
  10. eplan加密狗已损坏_[转载]EPLAN Electric P8 仿真加密狗 error 1068 问题
  11. Android手机应用开发之手机GPS定位
  12. python:实现牛顿法算法(附完整源码)
  13. Forever young
  14. thinkadmin 单页面多个富文本初始化
  15. 电脑安卓手机模拟器怎么修改IP地址
  16. vue+elementUI+vue-i18n实现中英文切换。
  17. Ubuntu 16.04 可以ping通网络,但打开网页很慢
  18. 德州仪器宣布收购12寸晶圆厂
  19. 微信小程之swiper
  20. 网络安全菜鸟学习之漏洞篇——XXEXML注入

热门文章

  1. vmstate内存事件详解
  2. [C]C语言基本语句(5/7)→ 用scanf语句输入int, float, double, char型数据
  3. 考研英语 - word-list-31
  4. 2023美团面试真题
  5. Haxe - Actuate.Tween
  6. 树莓使用CUPS服务搭建打印机服务器
  7. JS的特性:异步 + 事件驱动
  8. Wireline SerDes,高速信号的均衡技术
  9. 今天是2022年5月21日
  10. Android Compose——一个简单的Bilibili APP