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

举个简单的例子,假设我们图像里面只有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. LTE基本架构

    1.LTE结构 这是一张非常有名的LTE架构图,从图中可以看出,整个网络构架被分为了四个部分:  (1)UE就可以看作是我们的手机终端 (2)PDN可以看作是网络上的服务器 (3)E-UTRAN可以看 ...

  2. Java基础拾遗(一) — 忽略的 Integer 类

    学习前我们先看一个笔者之前项目踩过的坑 public static void main(String[] args) { Integer a = 127; Integer b = 127; Syste ...

  3. 03_springboot2.x日志处理

    1.日志框架 ​ 市场上存在非常多的日志框架.JUL(java.util.logging),JCL(Apache Commons Logging),Log4j,Log4j2,Logback.SLF4j ...

  4. java笔试之参数解析(正则匹配)

    在命令行输入如下命令: xcopy /s c:\ d:\, 各个参数如下: 参数1:命令字xcopy 参数2:字符串/s 参数3:字符串c:\ 参数4: 字符串d:\ 请编写一个参数解析程序,实现将命 ...

  5. SpringBoot集成JPA根据实体类自动生成表

    数据库是mysql,在application.properties中的写法如下: 原来配置这样的时候确实可以生产表的 #spring.jpa.hibernate.ddl-auto=update 多方查 ...

  6. loj6247 九个太阳

    题意: k<=2^20,n<=10^15. 标程: #include<cstdio> using namespace std; typedef long long ll; ; ...

  7. Tensorflow入门篇

     参考Tensorflow中文网(http://www.tensorfly.cn/tfdoc/get_started/introduction.html) ,写一个入门. 1.打开pyCharm,新建 ...

  8. HAVING方法也是连贯操作之一

    HAVING方法也是连贯操作之一,用于配合group方法完成从分组的结果中筛选(通常是聚合条件)数据. having方法只有一个参数,并且只能使用字符串,例如: $this->field('us ...

  9. 基于OneMap的水利行业共享服务平台搭建步骤

    今天上午再次学习Esri技术培训中心的“GIS服务共享与运维管理——之OneMap解决方案”课程,从中学习了OneMap的产品架构以及基于OneMap共享服务平台的搭建步骤.下面把其中水利行业的共享服 ...

  10. Java-JPA:JPA

    ylbtech-Java-JPA:JPA JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对 ...