评价目标检测(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 ) 目标定位既要识别,又要定位,它要做的事就是用一个框框把物体目标的位置标出来. 怎么做这个问题呢,我们考虑三目标的定位问题,假定图中最多只出现 ...
随机推荐
- Mysql优化系列之表设计规范和优化
一.范式 如果详细的讲范式,要写大大大篇文章来讲,这里假设大家知道一些基本的范式规则,我用简洁的语句和例子说明 第一范式:列不可再分,譬如地址字段,可以再细分为省市区门牌号等等(其实还是看需求怎么整) ...
- <随便写>进程基本知识
from multiprocessing import Process, Queue,Pool import time import os def producer(q): for i in rang ...
- java笔试之参数解析(正则匹配)
在命令行输入如下命令: xcopy /s c:\ d:\, 各个参数如下: 参数1:命令字xcopy 参数2:字符串/s 参数3:字符串c:\ 参数4: 字符串d:\ 请编写一个参数解析程序,实现将命 ...
- 小程序中template的用法
demo案例: wxml代码: <view> <text>template使用demo</text> <!-- <view wx:for="{ ...
- ZOJ2562
ZOJ2562https://vjudge.net/problem/11781/origin<=n的且因子数最多的那个数做法:同因子数取最小,dfs更新答案 #include <iostr ...
- Loadrunner系列学习--Loadrunner架构(1)
Loadrunner系列学习--Loadrunner架构(1) 最近在学习Loadrunner,发现一个英文网站http://www.wilsonmar.com/1loadrun.htm里面介绍的比较 ...
- Jmeter教程 简单的压力测试【转】
Jmeter教程 简单的压力测试[转] Jmeter是一个非常好用的压力测试工具. Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 阅读目录 什么是压力 ...
- day1-初识Python以及环境搭建
---恢复内容开始--- 为什么学习Python? 软件质量:python的可读性很强,易于理解,非常接近于人类的自然语言. 提高开发者效率:相当于C,C++和JAVA等编译/静态型语言,Python ...
- 【转载】TCP演进简述
TCP演进简述 http://www.cnblogs.com/fll/ 一.互联网概述 TCP,即传输控制协议,是目前网络上使用的最多的传输协议,我们知道,整个互联网的体系结构是以IP协议提供的无连接 ...
- thinkphp 快捷查询
快捷查询方式是一种多字段查询的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如: 大理石平台价格 一.不同字段相同的 ...