目标检测中的评估指标:PR曲线、AP、mAP
文章目录
- 1.precision & recall
- 2.P-R曲线
- 3.AP计算
- 4.mAP计算
- 5.COCO Evaluation Result
1.precision & recall
规定IOU > 0.5表示物体被检测出来
以下面一个猫狗的例子介绍precision与recall,任务找其中狗
我们将被正确识别的狗,称为True positives。我们将被正确识别的猫称为True negatives。为什么会有这个概念?什么是被正确识别的猫?我们知道我们这里的目标是找狗,那么那些我们没有标注的猫,是不是从反向说明我们的查找准确率(precision)呢?接着,我们定义被错误识别为狗的猫为False positives。被错误识别为猫的狗称为False negatives。
positive指的是识别出来是狗,如偶是True表示识别正确,他就是狗True positives;False表示识别错误,他是只猫False positives;
negative指的是识别出来是猫,如果是True表示识别正确,他就是只猫True negatives;False表示识别错误,他是只狗不是猫False negatives。
- 查准率(precision)=True positives / (True positives + False positives)
- 查全率(recall)= True positives / (True positives + False negatives)
- 精确率(accuracy) = (True positives + True negatives)/ (ALL)
在这个例子中:precision = 3/4,recall = 3/4,accuracy = 4/7
而且一般来说,这两个指标是相互矛盾的,使用需要综合考虑这两者,所以就有了AP这个指标,AP为Precision-Recall曲线下的面积
2.P-R曲线
我们得到top-5的结果,前score最高的前5个样本,预测label为1,即:
此例中采用top-5评估,也可采用其他评估,如AP50,即当预测框与真实框的IoU值大于这个阈值时,该预测框才被认定为真阳性(True Positive, TP),反之就是假阳性(False Positive,FP)。
在这个例子中,true positives就是指第4和第2张图片,false positives就是指第13,19,6张图片。是相对于方框内的元素而言,在这个例子中,confidence score排在top-5之外的元素为false negatives和true negatives,即:
其中,false negatives是指第9,16,7,20张图片,true negatives是指第1,18,5,15,10,17,12,14,8,11,3张图片。
那么,这个例子中Precision=2/5=40%,意思是对于car这一类别,我们选定了5个样本,其中正确的有2个,即准确率为40%;Recall=2/6=30%,意思是在所有测试样本中,共有6个car,但是因为我们只召回了2个,所以召回率为30%。同理图中第一个样本点:P=1,R=1/6,第二个样本点,考虑前两个样本,P=1,R=2/6=1/3…以下我列出了一个Precision与Recall的表格:
这个例子的precision-recall曲线如下:
实际多类别分类任务中,我们通常不满足只通过top-5来衡量一个模型的好坏,而是需要知道从top-1到top-N(N是所有测试样本个数,本文中为20)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。
3.AP计算
接下来说说AP的计算,此处参考的是PASCAL VOC CHALLENGE的2010年之前计算方法。首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。
其计算的结果大概是如图蓝色阴影下的面积:
当然PASCAL VOC CHALLENGE自2010年后就换了另一种计算方法。新的计算方法假设这N个样本中有M个正例,那么我们会得到M个recall值(1/M, 2/M, …, M/M),对于每个recall值r,我们可以计算出对应(r’ >= r)的最大precision,然后对这M个precision值取平均即得到最后的AP值。计算方法如下:
细节计算如图:
其实也就是如图蓝色的阴影面积:
相应的Precision-Recall曲线(这条曲线是单调递减的)如下:
计算代码:
def voc_ap(rec, prec, use_07_metric=False):""" ap = voc_ap(rec, prec, [use_07_metric])Compute VOC AP given precision and recall.If use_07_metric is true, uses theVOC 07 11 point method (default:False)."""if use_07_metric:# 11 point metricap = 0.for t in np.arange(0., 1.1, 0.1):if np.sum(rec >= t) == 0:p = 0else:p = np.max(prec[rec >= t])ap = ap + p / 11.else:# correct AP calculation# first append sentinel values at the endmrec = np.concatenate(([0.], rec, [1.]))mpre = np.concatenate(([0.], prec, [0.]))print(mpre)# compute the precision envelopefor i in range(mpre.size - 1, 0, -1):mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i])# to calculate area under PR curve, look for points# where X axis (recall) changes valuei = np.where(mrec[1:] != mrec[:-1])[0]ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1])print(mpre)return ap
4.mAP计算
AP衡量的是学出来的模型在每个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。
5.COCO Evaluation Result
另外一个比较常用的就是COCO的评估指标,具体内容见:官方网址
以下分别对其进行解析:
- Average Precision (AP):
APIoU=.50% AP at IoU=.50 (PASCAL VOC metric) # 该指标就是pascol voc的评价指标
APIoU=.75% AP at IoU=.75 (strict metric)
这两行分别表示IoU取不同时候的mAP结果
AP% AP at IoU=.50:.05:.95 (primary challenge metric) # 该指标是coco数据集的评价指标
这行表示当 IoU从0.5~0.95这段范围中,间隔为0.05,一共10个IoU值上mAP的均值,这个是coco数据集上最主要的评判指标
- AP Across Scales:
在这个指标中,可以看见有AP针对小面积的(APsmall) / 中等面积的(APmedium) / 大面积的(APlarge)三种指标。
- 其中小目标的定义为:area < 322 的目标
- 其中中目标的定义为: 322 < area < 962 的目标
- 其中大目标的定义为:area > 962 的目标
- Average Recall (AR):
- ARmax=100:指的是对图片最多提供100个预测边界框
- ARmax=10:指的是对图片最多提供10个预测边界框
- ARmax=1:指的是对图片最多提供1个预测边界框
其实取100和取10,没有太大的区别,所以其实图片中的数目并不会很多,基本在10以内,但是目标个数也一般会大于1.
- AR Across Scales:
这里的AR Across Scales与刚刚所说的Average Precision (AP)其实是类似的,这里不再重复。
参考资料:
https://blog.csdn.net/qq_17550379/article/details/79875784
https://blog.csdn.net/qq_41994006/article/details/81051150
https://cocodataset.org/#detection-eval
目标检测中的评估指标:PR曲线、AP、mAP相关推荐
- ap 目标检测算法map_目标检测算法的评估指标:mAP定义及计算方式
前面依次介绍了: 本节介绍目标检测算法的评估指标:mAP定义及计算方式 mAP:mean Average Precision,平均精度均值,即AP(Average Precision)的平均值,它是目 ...
- 目标检测模型的评价指标(Acc, Precision, Recall, AP, mAP, RoI)
目标检测模型的评价指标(Acc, Precision, Recall, AP, mAP, RoI) 对于一个目标检测模型的好坏,总的来说可以从以下三个方面来评估: 分类的精度如何.一般可以用准确度(A ...
- 目标检测模型的评估指标mAP详解(附代码)
https://zhuanlan.zhihu.com/p/37910324 对于使用机器学习解决的大多数常见问题,通常有多种可用的模型.每个模型都有自己的独特之处,并随因素变化而表现不同. 每个模型在 ...
- 目标检测相关概念:IOU,precision, recall, AP, mAP
1.IOU(交并比) IOU,交并比,顾名思义,就是预测框bounding box与真实框ground truth的交集比上并集.可以用来衡量检测物体位置的偏差.形象点可以看下图(用画图软件所画): ...
- 深度学习-目标检测评估指标P-R曲线、AP、mAP
基本概念 P-R曲线中,P为图中precision,即精准度,R为图中recall,即召回率. Example 下面通过具体例子说明. 首先用训练好的模型得到所有测试样本的confidence sc ...
- 目标检测中的precision,recall,AP,mAP计算详解
大雁与飞机 假设现在有这样一个测试集,测试集中的图片只由大雁和飞机两种图片组成,如下图所示: 假设你的分类系统最终的目的是:能取出测试集中所有飞机的图片,而不是大雁的图片. 现在做如下的定义: Tru ...
- ROC曲线和PR曲线,AP,mAP
ROC曲线 对于两类分类任务,y的值可以为1或0,为1时称为正样本(positive),在医学上称为阳,为0时称为负样本(False),在医学上称为阴. TP:y的值为1,y^为1,预测值和真值都为1 ...
- 目标检测中的一些指标——学习笔记
1.参考: https://blog.csdn.net/asasasaababab/article/details/79994920 2.TP.FP.TN.FN 用人脸识别做一个例子, TP:True ...
- 如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?
参考文章:深度学习-目标检测评估指标P-R曲线.AP.mAP 文章目录 P-R曲线: AP计算: 下面通过具体例子说明. 首先用训练好的模型得到所有测试样本的confidence score,每一类( ...
最新文章
- JDK 5.0 注解的使用
- java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇
- 桌面级linux推荐,七大顶级桌面比较!Linux平台自由选择
- [Windows编程] 通过GetModuleHandleEx 得到函数调用者所在的DLL/EXE 原创陈本峰2009-02
- WCF 第二章 契约 系列文章
- silverlight项目工作小结
- 更好的使用Java集合(三)
- 实验一 MATLAB软件的使用
- linux工作技能第二发:vi
- c语言中函数的递归调用,用C语言函数调用与递归解决问题
- CentOS-7 安装mosquitto(MQTT的开源消息代理)
- 20221103使用ffmpeg提取mp4视频的字幕
- 八皇后问题 (25分)
- PyQt上位机软件开发简介
- 软件人员kpi制定模板_最常用5大绩效工具(附模板):OKR、KPI、MBO、平衡计分卡、360度...
- java 免费 cms建站系统_最受欢迎免费开源CMS建站系统排行榜
- 18V降压3.3V,15V降压3.3V的降压IC和LDO芯片方案
- 2017.7.7 C组总结
- 海信E8K和E8H区别对比哪个好
- 中南大学青年志愿者协会电脑维修部
热门文章
- CAD中如何识别CAD标高范围?
- 队内基本伺服系统与传感系统
- win10安装mujoco
- Hydration failed because the initial UI does not match what was rendered on the server
- java中rank函数_SQL中的排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
- 正则表达式,生成器,迭代器
- Android 7.0 Nougat(牛轧糖)---对开发者来说
- opencv启动摄像头并且操作摄像头拍照
- Thinking in java-35 String 字符串
- linux centos 7安装极点五笔输入法