关于AP, MAP的一些理解
涉及概念:
平均精度(AP:Average Precision)、平均精度均值(mAP:Mean Average Precision)、查准率(precision)、查全率(recall),IOU(Intersection over Union)、置信度阈值(confidence thresholds)
查准率(precision)和查全率(recall,召回率):
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为
真正例(true positive):预测为1,实际也为1
假正例(false positive):预测为1,实际也为0
真反例(true negative):预测为0,实际也为0
假反例(false negative):预测为0,实际也为1
四种情形,令TP(真正例)、FP(假正例)、TN(真反例)、FN(假反例)分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数。分类结果的“混淆矩阵”(confusion matrix)如表所示:
查准率P和查全率R分别定义为:
实际上(单类别):预测为反例0则不框
查准率Precision为所有预测为1中正确预测的比例,也就是框对的/所有预测框数目;
查全率Recall为所有真实框中被成功预测出1的比例,也就是框对的/所有真框数目
一个例子为:P=“挑出来的西瓜中有多少比例是好瓜”,R=“所有好瓜中有多少比例被挑出来”。
查全率和查准率是一对矛盾的度量。一般来说查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
平均精度(AP)和平均精度均值(mAP)
Mean Average Precision(mAP)通常在信息检索和目标检测中作为评估标准使用。在这两个领域中mAP的计算方法不同,这里主要介绍目标检测中的mAP。
目标检测中定义的mAP最先在PASCAL VisualObjects Classes(VOC) challenge中使用。至少有两个变量用来决定precison和recall,分别是IOU(Intersection over Union)和置信度阈值(confidence thresholds)。IOU(交并比)是一个简单的几何度量,可以容易地被标准化。另一方面置信度也影响模型,会改变precison _recall曲线形状。因此PASCAL VOC组织提出了一种方法来解释这个变化。
AP即为求precison_recall曲线下方的面积,即为平均精度。2010年前后计算方法不同而已。2010前时11点插值平均精度,算出来是曲线下近似面积;2010年后新方式采用在所有点插值,算出来时更加精确的曲线下方面积(因为可以减小曲线震荡摇摆的影响)。
我们需要以模型不可知的方式来作为评估模型的标准。论文中提出一种称为Average Precision(AP)的方法来计算。对给定的任务和类别,precision_recall曲线以一种方法的排序输出来计算。Recall被定义为给定序列上所有正样本的部分;precison被定义为正类别序列上的所有样本。
AP概括了precision_recall曲线的形状,被定义为在一组11个等间距recall水平[0, 0.1, 0.2,…,1]上的precision平均值(这种方法比较旧,英文叫做11-point interpolated average precision)。这意味着我们选择11个不同的置信度阈值(这决定序列)。置信度阈值的设定需要使recall值为0,0.1,0.2,…,1。这使得mAP可以纵览整个precison_recall曲线(尽量让Recall值增长的同时保持Precision的值在一个很高的水平。而性能比较差的分类器可能会损失很多Precision值才能换来Recall值的提高)。
当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, ..., M/M),对于每个recall值r,我们可以计算出对应(r' > r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。
MAP就是所有AP值的平均值。
Approximated Average precision(近似平均精度):
对每一种阈值分别求(Precision值)乘以(Recall值的变化情况),再把所有阈值下求得的乘积值进行累加
Interpolated average precision(插值平均精度):
不再使用当系统识别出k个图片的时候Precision的值与Recall变化值相乘。而是使用在所有阈值的Precision中,最大值的那个Precision值与Recall的变化值相乘。
上述两种求AP方法,前者与精度曲线(precision_recall)很接近,后者算出来比前者值高,一般重要的论文都使用后者,因为可以减轻抖动。PASCAL VOC CHALLENGE 就用的后者。
下面是几个在比较mAP值时需要记住的几个重点:
1、 mAP需要计算完整个数据集;
2、 虽然模型输出的绝对量化是难以解释的,但mAP可以通过一个很好的相关性标准来帮助我们。当我们在流行的公开数据集上计算这个标准时,它可以很容易地用来比较目标检测的新旧方法。 3、 根据类别在训练集上的分布方式,AP值可能在某些类别上从很高(这有很好的训练数据)变化到很低(对数据很少或不好的类别)。所以你的mAP可能是合适的,但你的模型可能对某些类别非常好而对某些类别非常差。因此当分析你的模型结果时,观察独立类别的AP是明智的。这些值可能作为添加更多训练样本的指示器。
参考链接:
https://github.com/rafaelpadilla/Object-Detection-Metrics
https://www.zhihu.com/question/53405779/answer/419532990
https://blog.csdn.net/zdh2010xyz/article/details/54293298
关键看参考链接1,但是其中关于新的voc计算方法举例中,作者为了计算简单省略了一些点,实际应该是全用。下面这个图是连接2最后的计算,为正确方式。
关于AP, MAP的一些理解相关推荐
- 目标检测模型的评价指标(Acc, Precision, Recall, AP, mAP, RoI)
目标检测模型的评价指标(Acc, Precision, Recall, AP, mAP, RoI) 对于一个目标检测模型的好坏,总的来说可以从以下三个方面来评估: 分类的精度如何.一般可以用准确度(A ...
- 【机器学习基本理论】详解最大后验概率估计(MAP)的理解
[机器学习基本理论]详解最大后验概率估计(MAP)的理解 https://mp.weixin.qq.com/s/dQxN46wEbFrpvV369uOHdA 最大似然估计(Maximum likeli ...
- CNN之性能指标:卷积神经网络中常用的性能指标(IOU/AP/mAP、混淆矩阵)简介、使用方法之详细攻略
CNN之性能指标:卷积神经网络中常用的性能指标(IOU/AP/mAP.混淆矩阵)简介.使用方法之详细攻略 目录 CNN中常用的性能指标(IOU/AP/mAP.混淆矩阵)简介 IOU 1.IOU简介 2 ...
- 【mAP】关于目标检测mAP的一些理解
mAP是目标检测中的基本指标,详细理解有助于我们评估算法的有效性,并针对评测指标对算法进行调整. 1.基本概念定义 在目标检测中IoU为检测框与GroundTruth重叠的比例,如果大于0.5则算作正 ...
- 信息检索中的度量precison@k,recall@k,f1@k,MRR,ap,map,CG, DCG,NDCG
转载自:信息检索中度量指标全解析 导读 由浅入深逐个解析信息检索中的度量指标. 我们如何评估前n个结果有多好? 问题1:二元相关性 让我们通过一个简单的玩具例子来理解各种评估指标的细节和权衡.我们有一 ...
- 目标检测算法之评价标准AP,mAP
TP.TN.FP.FN概念 首先有关TP.TN.FP.FN的概念.大体来看,TP与TN都是分对了情况,TP是正类,TN是负类.则推断出,FP是把错的分成了对的,而FN则是把对的分成了错的.(我的记忆方 ...
- Map Set list 理解
对JAVA的集合的理解是想对于数组 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 j ...
- map集合——阅读理解(洛谷 P3879)
题目选自洛谷P3879 直接用map<string,vecotr<int> > 代替这题里的trie树,注意开map的时候后面两个> >之间要有一个空格. 用vec ...
- 目标检测相关概念:IOU,precision, recall, AP, mAP
1.IOU(交并比) IOU,交并比,顾名思义,就是预测框bounding box与真实框ground truth的交集比上并集.可以用来衡量检测物体位置的偏差.形象点可以看下图(用画图软件所画): ...
最新文章
- 让dwz 的表格或者表单显示竖滚动条的代码
- golang获取md5
- Java工作笔记-Spring Boot + Jdbc + dm7Driver访问数据库(Spring Boot连接达梦数据库)
- fpga如何约束走线_FPGA设计约束技巧之XDC约束之I/O篇 (上)
- SQL Server - 聚集索引 第六篇
- 第19章 可空值类型
- 2019/3/27写给自己
- 回文问题
- 论 Java 中的内存分配
- 《SpringMVC视频教程》(p2~p3)
- 用WPF做报表控件(一)
- axios post方式同时传递pram和json参数
- java实现积分抽奖_java毕业设计_springboot框架的超市消费积分抽奖
- 彩蛋-管理员root@‘locahost‘ 密码丢失,处理方案。
- 对于Jenkins和gitlab连接的注意事项
- 卫星天线如何接受CCTV-5nbsp;CCTV-6
- iOS 如何在一个已经存在多个project的workspace中引入cocoapods管理第三方类库
- cssK中的常用单词之相对,绝对
- jquery控制元素的隐藏和显示
- iOS Zip文件压缩