文章目录

  • 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的评估指标,具体内容见:官方网址

以下分别对其进行解析:

  1. 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数据集上最主要的评判指标

  1. AP Across Scales:

在这个指标中,可以看见有AP针对小面积的(APsmall) / 中等面积的(APmedium) / 大面积的(APlarge)三种指标。

  • 其中小目标的定义为:area < 322 的目标
  • 其中中目标的定义为: 322 < area < 962 的目标
  • 其中大目标的定义为:area > 962 的目标
  1. Average Recall (AR):
  • ARmax=100:指的是对图片最多提供100个预测边界框
  • ARmax=10:指的是对图片最多提供10个预测边界框
  • ARmax=1:指的是对图片最多提供1个预测边界框

其实取100和取10,没有太大的区别,所以其实图片中的数目并不会很多,基本在10以内,但是目标个数也一般会大于1.

  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相关推荐

  1. ap 目标检测算法map_目标检测算法的评估指标:mAP定义及计算方式

    前面依次介绍了: 本节介绍目标检测算法的评估指标:mAP定义及计算方式 mAP:mean Average Precision,平均精度均值,即AP(Average Precision)的平均值,它是目 ...

  2. 目标检测模型的评价指标(Acc, Precision, Recall, AP, mAP, RoI)

    目标检测模型的评价指标(Acc, Precision, Recall, AP, mAP, RoI) 对于一个目标检测模型的好坏,总的来说可以从以下三个方面来评估: 分类的精度如何.一般可以用准确度(A ...

  3. 目标检测模型的评估指标mAP详解(附代码)

    https://zhuanlan.zhihu.com/p/37910324 对于使用机器学习解决的大多数常见问题,通常有多种可用的模型.每个模型都有自己的独特之处,并随因素变化而表现不同. 每个模型在 ...

  4. 目标检测相关概念:IOU,precision, recall, AP, mAP

    1.IOU(交并比) IOU,交并比,顾名思义,就是预测框bounding box与真实框ground truth的交集比上并集.可以用来衡量检测物体位置的偏差.形象点可以看下图(用画图软件所画): ...

  5. 深度学习-目标检测评估指标P-R曲线、AP、mAP

    基本概念 P-R曲线中,P为图中precision,即精准度,R为图中recall,即召回率. Example 下面通过具体例子说明. 首先用训练好的模型得到所有测试样本的confidence  sc ...

  6. 目标检测中的precision,recall,AP,mAP计算详解

    大雁与飞机 假设现在有这样一个测试集,测试集中的图片只由大雁和飞机两种图片组成,如下图所示: 假设你的分类系统最终的目的是:能取出测试集中所有飞机的图片,而不是大雁的图片. 现在做如下的定义: Tru ...

  7. ROC曲线和PR曲线,AP,mAP

    ROC曲线 对于两类分类任务,y的值可以为1或0,为1时称为正样本(positive),在医学上称为阳,为0时称为负样本(False),在医学上称为阴. TP:y的值为1,y^为1,预测值和真值都为1 ...

  8. 目标检测中的一些指标——学习笔记

    1.参考: https://blog.csdn.net/asasasaababab/article/details/79994920 2.TP.FP.TN.FN 用人脸识别做一个例子, TP:True ...

  9. 如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?

    参考文章:深度学习-目标检测评估指标P-R曲线.AP.mAP 文章目录 P-R曲线: AP计算: 下面通过具体例子说明. 首先用训练好的模型得到所有测试样本的confidence score,每一类( ...

最新文章

  1. JDK 5.0 注解的使用
  2. java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇
  3. 桌面级linux推荐,七大顶级桌面比较!Linux平台自由选择
  4. [Windows编程] 通过GetModuleHandleEx 得到函数调用者所在的DLL/EXE 原创陈本峰2009-02
  5. WCF 第二章 契约 系列文章
  6. silverlight项目工作小结
  7. 更好的使用Java集合(三)
  8. 实验一 MATLAB软件的使用
  9. linux工作技能第二发:vi
  10. c语言中函数的递归调用,用C语言函数调用与递归解决问题
  11. CentOS-7 安装mosquitto(MQTT的开源消息代理)
  12. 20221103使用ffmpeg提取mp4视频的字幕
  13. 八皇后问题 (25分)
  14. PyQt上位机软件开发简介
  15. 软件人员kpi制定模板_最常用5大绩效工具(附模板):OKR、KPI、MBO、平衡计分卡、360度...
  16. java 免费 cms建站系统_最受欢迎免费开源CMS建站系统排行榜
  17. 18V降压3.3V,15V降压3.3V的降压IC和LDO芯片方案
  18. 2017.7.7 C组总结
  19. 海信E8K和E8H区别对比哪个好
  20. 中南大学青年志愿者协会电脑维修部

热门文章

  1. CAD中如何识别CAD标高范围?
  2. 队内基本伺服系统与传感系统
  3. win10安装mujoco
  4. Hydration failed because the initial UI does not match what was rendered on the server
  5. java中rank函数_SQL中的排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  6. 正则表达式,生成器,迭代器
  7. Android 7.0 Nougat(牛轧糖)---对开发者来说
  8. opencv启动摄像头并且操作摄像头拍照
  9. Thinking in java-35 String 字符串
  10. linux centos 7安装极点五笔输入法