评价目标检测(object detection)模型的参数:IOU,AP,mAP
首先我们为什么要使用这些呢?
举个简单的例子,假设我们图像里面只有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的更多相关文章
- 关于目标检测(Object Detection)的文献整理
本文对CV中目标检测子方向的研究,整理了如下的相关笔记(持续更新中): 1. Cascade R-CNN: Delving into High Quality Object Detection 年份: ...
- 关于目标检测 Object detection
NO1.目标检测 (分类+定位) 目标检测(Object Detection)是图像分类的延伸,除了分类任务,还要给定多个检测目标的坐标位置. NO2.目标检测的发展 R-CNN是最早基于C ...
- 深度学习中目标检测Object Detection的基础概念及常用方法
目录 关键术语 方法 two stage one stage 共同存在问题 多尺度 平移不变性 样本不均衡 各个步骤可能出现的问题 输入: 网络: 输出: 参考资料 What is detection ...
- 目标检测Object Detection概述(Tensorflow&Pytorch实现)
1999:SIFT 2001:Cascades 2003:Bag of Words 2005:HOG 2006:SPM/SURF/Region Covariance 2007:PASCAL VOC 2 ...
- 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 ...
- 目标识别(object detection)中的 IoU(Intersection over Union)
首先直观上来看 IoU 的计算公式: 由上述图示可知,IoU 的计算综合考虑了交集和并集,如何使得 IoU 最大,需要满足,更大的重叠区域,更小的不重叠的区域. 两个矩形窗格分别表示: 左上点.右下点 ...
- 目标检测算法(1)目标检测中的问题描述和R-CNN算法
目标检测(object detection)是计算机视觉中非常具有挑战性的一项工作,一方面它是其他很多后续视觉任务的基础,另一方面目标检测不仅需要预测区域,还要进行分类,因此问题更加复杂.最近的5年使 ...
- 10分钟内基于gpu的目标检测
10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...
- ng-深度学习-课程笔记-13: 目标检测(Week3)
1 目标定位( object localization ) 目标定位既要识别,又要定位,它要做的事就是用一个框框把物体目标的位置标出来. 怎么做这个问题呢,我们考虑三目标的定位问题,假定图中最多只出现 ...
随机推荐
- C# 串口编程 对端口的访问被拒绝
感谢Sunny秋刀鱼.https://www.cnblogs.com/527289276qq/p/5595798.html 在页面或者窗口Unloaded事件中关闭串口即可.
- java中的Math类
一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double 等 在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形.为了解决这个问题,Ja ...
- Shuffle过程详解
- uboot 的移植过程
1. 工作用户 uboot 2. uboot 版本 1.1.4 3. 工具链 2.95.3 步骤 我们为开发板取名叫: crane2410, 并在 uboot 中建立自己的开发板类型 修改 Mak ...
- mongodb 3.2 yaml 配置详解及范例
mongodb3.x版本后就是要yaml语法格式的配置文件,下面是yaml配置文件格式如下:官方yaml配置文件选项参考:https://docs.mongodb.org/manual/ ... #c ...
- Python+Selenium基础入门及实践
Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...
- linux 系统优化初始化配置
一.系统优化配置 1.修改yum源 配置国内yum源 阿里云yum源地址 #CentOS 5.x wget -O /etc/yum.repos.d/CentOS-Base.repo http://m ...
- 深入理解Java虚拟机(类加载机制)
文章首发于微信公众号:BaronTalk 上一篇文章我们介绍了「类文件结构」,这一篇我们来看看虚拟机是如何加载类的. 我们的源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行.虚拟机 ...
- DRF 请求生命周期以及各模块解析
目录 rest_framework框架的封装特点 原生Django与DRF比较 APIView 的请求生命周期 请求模块(request) 解析模块(parser_classes) 异常模块(exce ...
- 关于promise的用法
promise是一个对象,里面保存着某个未来才会结束的事件,通常是一个异步事件. promise对象的两个特点: 1.对象的状态不受外界影响:pending(进行中) fulfilled(已成功) r ...