首先我们为什么要使用这些呢?

举个简单的例子,假设我们图像里面只有1个目标,但是定位出来10个框,1个正确的,9个错误的,那么你要按(识别出来的正确的目标/总的正确目标)来算,正确率100%,但是其实效果不是很好,而且还有框的各种情况,因此我们需要下面的指标来衡量一个目标检测模型的好坏。

1.IOU(Intersection Over Union)

这是关于一个具体预测的Bounding box的准确性评估的数据,意义也就是为了根据这个IOU测定你这个框是不是对的,大于等于IOU就是对的,小于就是错的。对于目标检测任务来说,一个具体的目标预测包括一个bounding box的坐标和它的置信度。通过predict(测量预测的)bndbox(bounding box)和ground truth(物体真实的)bndbox之间的重合度,我们来得出此次预测是true还是false。一旦确定了IOU,那么我们就能决定这个Bounding box是不是对的。计算公式如下图:

通俗来说,也就是(预测的包围盒和物体实际包围盒的交集)/(预测的包围盒和物体实际包围盒的并集)。一般来说,重合区域的面积(上面公式的分子)和2个bndbox的面积并集的比例(上面公式的分母)如果大于50%,那么认为这是一个成功的预测(true),否则认为这是一个失败的预测(false)。公式等号的左边就是IoU,但是这个IOU是根据人来定的。

2.AP(average precision)

这个的意义是为了评估你目标检测模型的对于某一类的准确度。要弄清这个,先等搞清楚2个概念:precision(查准率)和recall(召回率),借用知乎上一张图: (关于2个参数想要了解更多可以去看这个教程https://www.bilibili.com/video/av9912938/?p=68)

在2010年以前,PASCAL VOC CHALLENGE AP是这么定义的:,我们把recall的值从0到1 (0%到100%)划分为11份:0、0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1.0,在每个recall尺度上我们计算下准确率(最大值),然后再计算总和并平均,就是AP值

在以后,换了一种计算方法(从后往前算每个recall都取precision的最大值,会让PR曲线递减):多个类别物体检测中,每一个类别都可以根据recall和precision绘制一条曲线,AP就是该曲线下的面积/x,y坐标轴(0,1)范围的面积(也就是1)。类似于下图:

AP的值就是曲线下的面积除以1。

3.mAP(mean average precision)

这个的意义是为了评估你整个目标检测模型的准确度。方法是:计算每个分类的AP,求和再平均,得到的就是mAP。目前基于只有COCO数据集目标检测的模型mAP一般在0.3-0.4 , 但基于PASCAL VOC+COCO数据集训练的模型的mAP可以达到0.8以上

这里要多说几句,因为在mscoco里面,它有这么几句话:(这里先不讨论AR)

1.Unless otherwise specified, AP and AR are averaged over multiple Intersection over Union (IoU) values. Specifically we use 10 IoU thresholds of .50:.05:.95. This is a break from tradition, where AP is computed at a single IoU of .50 (which corresponds to our metric APIoU=.50). Averaging over IoUs rewards detectors with better localization.

2.AP is averaged over all categories. Traditionally, this is called "mean average precision" (mAP). We make no distinction between AP and mAP (and likewise AR and mAR) and assume the difference is clear from context.

也就是说:它是直接把mAP当成AP,然后再把IOU值大于0.5的AP(mAP),以0.05的增量,到0.95,也就是以(0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95)IOU值的AP(mAP)的平均值当成AP(at IoU=.50:.05:.95),mscoco进行这样IOU增量平均的考虑可能是:只以0.5IOU为阀值的时候不一定就是更好的模型,可能仅仅在0.5阀值表现的很好,在0.6,0.7...阀值表现的很差,为了更好地评估整体模型的准确度,从而计算一个模型在各个IOU值的AP(mAP),取平均值。

参考链接:

http://cocodataset.org/#detections-eval

http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf  (第11页)

https://www.zhihu.com/question/41540197

http://blog.sina.com.cn/s/blog_9db078090102whzw.html

https://www.zhihu.com/question/53405779

 

评价目标检测(object detection)模型的参数:IOU,AP,mAP的更多相关文章

  1. 关于目标检测(Object Detection)的文献整理

    本文对CV中目标检测子方向的研究,整理了如下的相关笔记(持续更新中): 1. Cascade R-CNN: Delving into High Quality Object Detection 年份: ...

  2. 关于目标检测 Object detection

    NO1.目标检测 (分类+定位) 目标检测(Object Detection)是图像分类的延伸,除了分类任务,还要给定多个检测目标的坐标位置.      NO2.目标检测的发展 R-CNN是最早基于C ...

  3. 深度学习中目标检测Object Detection的基础概念及常用方法

    目录 关键术语 方法 two stage one stage 共同存在问题 多尺度 平移不变性 样本不均衡 各个步骤可能出现的问题 输入: 网络: 输出: 参考资料 What is detection ...

  4. 目标检测Object Detection概述(Tensorflow&Pytorch实现)

    1999:SIFT 2001:Cascades 2003:Bag of Words 2005:HOG 2006:SPM/SURF/Region Covariance 2007:PASCAL VOC 2 ...

  5. object detection模型转换成TensorFlow Lite,在Android应用

    环境 tensorflow = 1.12.0 bazel = 0.18.1 ubuntu = 16.04 python = 3.6.2 安装 bazel (0.18.1) 如果tensorflow是1 ...

  6. 目标识别(object detection)中的 IoU(Intersection over Union)

    首先直观上来看 IoU 的计算公式: 由上述图示可知,IoU 的计算综合考虑了交集和并集,如何使得 IoU 最大,需要满足,更大的重叠区域,更小的不重叠的区域. 两个矩形窗格分别表示: 左上点.右下点 ...

  7. 目标检测算法(1)目标检测中的问题描述和R-CNN算法

    目标检测(object detection)是计算机视觉中非常具有挑战性的一项工作,一方面它是其他很多后续视觉任务的基础,另一方面目标检测不仅需要预测区域,还要进行分类,因此问题更加复杂.最近的5年使 ...

  8. 10分钟内基于gpu的目标检测

    10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...

  9. ng-深度学习-课程笔记-13: 目标检测(Week3)

    1 目标定位( object localization ) 目标定位既要识别,又要定位,它要做的事就是用一个框框把物体目标的位置标出来. 怎么做这个问题呢,我们考虑三目标的定位问题,假定图中最多只出现 ...

随机推荐

  1. Mysql优化系列之查询性能优化前篇3(必须知道的几个事实)

    事实一:临时表没有任何索引 最常见的临时表莫过于在from子句中写子查询,遇到这种情况,Mysql会先将其查询结果放到一张临时表中, 然后将这个临时表当做普通表对待 事实二:执行计划优化 大多数的sq ...

  2. Python操作三大主流数据库✍✍✍

    Python操作三大主流数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库, ...

  3. <Django> MVT三大块之view(视图)

    1.视图简介 作用:接受web请求,返回web响应 本质:一个函数,定义在views.py文件中(定义在其他地方也行,约定俗成) 流程:(如果匹配不到,报一个404错误)-----结果返回http r ...

  4. <Python基础>列表的基本操作

    s = 'abCDeFg aBcDea' s1 = s.split('D',3) #以s1列表为例 print(s1) #增 s1.append('foxabc') #返回值None,直接增到列表的最 ...

  5. LGP5495 Dirichlet 前缀和

    题目 不是很明白为什么要叫做模板 考虑到\(a_i\)能对\(b_j\)产生贡献,当且仅当\(a_i=\prod p_k^{a_k},b_j=\prod p_k^{b_k},\forall k \ a ...

  6. Luogu P2458 [SDOI2006]保安站岗(树形dp)

    P2458 [SDOI2006]保安站岗 题意 题目描述 五一来临,某地下超市为了便于疏通和指挥密集的人员和车辆,以免造成超市内的混乱和拥挤,准备临时从外单位调用部分保安来维持交通秩序. 已知整个地下 ...

  7. 服务器迁移部署PosEdi

    绑定 基本配置 高级配置

  8. 北京信息科技大学校赛 题解 | AK记录贴

    比赛链接:https://ac.nowcoder.com/acm/contest/940#question 花了一天时间全部解决,题目不难,全是基础题+模板题. A - kotori和糖果 链接:ht ...

  9. PHP面向对象魔术方法基本了解

    简单介绍 (1) 魔术方法都是系统提供,程序员使用即可. (2) 所有的魔术方法,前面都是以  __ 开头的 _是两个下划线. (3) 我们在自定义函数时,就不要使用 __开头了. (4) 魔术方法是 ...

  10. NTP时钟同步学习记录

    --1 要点回顾 . 1. NTP唯一配置文件:/etc/ntp.conf . 2. NTP系统日志记录:/var/log/ntp . 3. ntp.conf简要介绍 - 利用 restrict 来管 ...