目标检测中的PR曲线绘制与mAP

  • 1. 基本概念
    • (1)交并比 - Intersection Over Union (IOU)
    • (2)TP、FP、FN、TN
    • (3)查准率、查全率
    • (4)AP & mAP
  • 2. PR曲线的绘制与mAP的计算

原文链接: 目标检测中的mAP是什么含义?

1. 基本概念

(1)交并比 - Intersection Over Union (IOU)

交并比(IOU)是度量两个检测框(对于目标检测来说)的交叠程度,公式如下:
IOU=area(Bp∩Bgt)area(Bp∪Bgt)IOU = \frac{area(B_p \cap B_{gt})}{area(B_p \cup B_{gt})} IOU=area(Bp​∪Bgt​)area(Bp​∩Bgt​)​
B_gt 代表的是目标实际的边框(Ground Truth,GT),B_p 代表的是预测的边框,通过计算这两者的 IOU,可以判断预测的检测框是否符合条件,IOU 用图片展示如下:

(2)TP、FP、FN、TN

  • True Positive (TP): IoU>IOUthresholdIOU_{threshold}IOUthreshold​ 一般取 0.5 ) 的检测框数量(同一 Ground Truth 只计算一次)。

  • False Positive (FP): IoU<=IOUthresholdIOU_{threshold}IOUthreshold​的检测框数量,或者是检测到同一个 GT 的多余检测框的数量。

  • False Negative (FN): 没有检测到的 GT 的数量。

  • True Negative (TN): 在 mAP 评价指标中不会使用到。

(3)查准率、查全率

  • 查准率(Precision): Precision=TPTP+FPPrecision = \frac{TP}{TP + FP}Precision=TP+FPTP​
  • 查全率(Recall): Recall=TPTP+FNRecall = \frac{TP}{TP + FN}Recall=TP+FNTP​

二者绘制的曲线称为 P-R 曲线:

(4)AP & mAP

  • AP:某一个类别PR 曲线下面积(PR曲线的绘制方法下面会说明)。

  • mAP:mean Average Precision,即各类别 AP 的平均值。

2. PR曲线的绘制与mAP的计算

先规定两个公式,一个是 Precision,一个是 Recall,这两个公式同上面的一样,我们把它们扩展开来,用另外一种形式进行展示,其中 all detctions 代表所有预测框的数量, all ground truths 代表所有 GT 的数量。
Precision=TPTP+FP=TPalldetectionsPrecision = \frac{TP}{TP + FP}=\frac{TP}{all\ detections} Precision=TP+FPTP​=all detectionsTP​

Recall=TPTP+FN=TPallgroundtruthsRecall = \frac{TP}{TP + FN}=\frac{TP}{all\ ground\ truths} Recall=TP+FNTP​=all ground truthsTP​

AP 是计算某一类 P-R 曲线下的面积,mAP 则是计算所有类别 P-R 曲线下面积的平均值。

假设我们有 7 张图片(Images1-Image7),这些图片有 15 个目标(绿色的框,GT 的数量,上文提及的 all ground truths)以及 24 个预测边框(红色的框,A-Y 编号表示,并且有一个置信度值)

根据上图以及说明,我们可以列出以下表格,其中 Images 代表图片的编号,Detections 代表预测边框的编号,Confidences 代表预测边框的置信度,TP or FP 代表预测的边框是标记为 TP 还是 FP(认为预测边框与 GT 的 IOU 值大于等于 0.3 就标记为 TP;若一个 GT 有多个预测边框,则认为 IOU 最大且大于等于 0.3 的预测框标记为 TP,其他的标记为 FP,即一个 GT 只能有一个预测框标记为 TP),这里的 0.3 是随机取的一个值

通过上表,我们可以绘制出 P-R 曲线(因为 AP 就是 P-R 曲线下面的面积),但是在此之前我们需要计算出 P-R 曲线上各个点的坐标,根据置信度从大到小排序所有的预测框,然后就可以计算 Precision 和 Recall 的值,见下表。(需要记住一个叫累加的概念,就是下图的 ACC TP 和 ACC FP

  • 标号为 1 的 Precision 和 Recall 的计算方式:Precision=TP/(TP+FP)=1/(1+0)=1,Recall=TP/(TP+FN)=TP/(all ground truths)=1/15=0.0666 (all ground truths 上面有定义过了
  • 标号 2:Precision=TP/(TP+FP)=1/(1+1)=0.5,Recall=TP/(TP+FN)=TP/(all ground truths)=1/15=0.0666
  • 标号 3:Precision=TP/(TP+FP)=2/(2+1)=0.6666,Recall=TP/(TP+FN)=TP/(all ground truths)=2/15=0.1333
  • 其他的依次类推

然后就可以绘制出 P-R 曲线

得到 P-R 曲线就可以计算 AP(P-R 曲线下的面积),要计算 P-R 下方的面积,一般使用的是插值的方法,取 11 个点 [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] 的插值所得

得到一个类别的 AP 结果如下:

要计算 mAP,就把所有类别的 AP 计算出来,然后求取平均即可。

目标检测中PR曲线和mAP相关推荐

  1. 目标检测中的Iou与map指标详细介绍(零基础)

    目标检测中的Iou与map指标详细介绍(零基础) 最近在算法岗实习,更新的频率会低一点,希望在实习过程中学到更多有用的视觉知识. IOU指标 下图中Ground truth为标记的正确框,Predic ...

  2. yolov3--25--Detectron目标检测可视化-P-R曲线绘制-Recall-TP-FP-FN等评价指标

    Detectron目标检测平台 评估训练结果(生成mAP) CUDA_VISIBLE_DEVICES=4 python tools/test_net.py --cfg experiments/2gpu ...

  3. 关于肺结节检测相关的FROC曲线和目标检测中Precision-Recall曲线,ROC曲线,mAP,AP,APs,APm,APl,AP0.5等的理解。

    ps自己之前也不理解这个FROC是什么鬼,连mAP,AP也不太理解(还有APs,APm,APl,AP0.5等等)后来花了挺长时间的,今天又有人问我FORC是什么,这里我就稍微总结下: 1.Precis ...

  4. 目标检测中准确率accuracy的计算(precision是精度、查准率)(Recall是召回率、查全率)

    准确率定义为: 查准率P和查全率R分别定义为: 查准率关心的是"预测出正例的正确率"即从正反例子中挑选出正例的问题. 查全率关心的是"预测出正例的保证性"即从正 ...

  5. 通俗地讲解目标检测中AP指标

    声明:以下内容全是我的个人见解,如有问题,欢迎指正! AP(Average Precision)即平均精度,是目标检测中的一个常用指标. 一.精确率和召回率 说道AP,那不得不提准确率和召回率.首先我 ...

  6. 一文讲清楚目标检测中mAP、AP、precison、recall、accuracy、TP、FP、FN、TN

    TP.FP.FN.TN 分类中TP.FP.FN.TN含义 目标检测中TP.FP.FN.TN的含义 precision .recall .accuracy precision recall accura ...

  7. 目标检测中的mAP是什么含义?

    目标检测中的mAP是什么含义? 1.mAP定义及相关概念 mAP: mean Average Precision, 即各类别AP的平均值 AP: PR曲线下面积,后文会详细讲解 PR曲线: Preci ...

  8. 目标检测中NMS和mAP指标中的的IoU阈值和置信度阈值

    有时候路走的太远,会忘了为什么要出发. 学习亦如是 在目标检测中,经常看到置信度阈值和IoU阈值这两个关键参数,且NMS计算和mAP计算中都会有这两个,那它们的区别是什么?本文就这个问题做一次总结. ...

  9. 目标检测中map的计算

    文章目录 前言 一.IoU和TP.FP.TN.FN的概念 IoU(Intersection over Union): TP.FP.TN.FN 二.Precision和Recall 1.Precisio ...

  10. 对于目标检测中mAP@0.5的理解

    文章目录 前言 mAP@0.5 AP是Precision-Recall Curve(PRC)下面的面积!!! 理一下思路 参考 前言 一直不是很理解目标检测中的mAP是如何的,今天具体来写一下,加深一 ...

最新文章

  1. unity如何停止不用字符串方式开启协程的方法
  2. tomcat启动前端项目
  3. python sklearn_KFold 什么是K折?
  4. oracle怎么设置能使用别的账户存储过程的全向_教你怎么重装100%纯净的Win10系统,告别蓝屏,卡顿。...
  5. 贪心算法-Best cow line-字典序问题
  6. 安卓dts音频解码_DTS音效、解码、编码概念剖析
  7. Protocol Buffers的应用
  8. Mr.J-- HTTP学习笔记(七)-- 缓存
  9. 如何在 Raspberry Pi 上快速安装 Oracle Linux ?
  10. 国外大神一张图学会python-关于可以访问国外网站的浏览器的阿里云论坛用户知识和技术交流...
  11. 机器学习基础算法15-回归实例-线性回归、Ridge回归、LASSO、ElasticNet的高阶参数与过拟合以及TSS>=ESS+RSS代码验证
  12. 前端js日期时间格式转换
  13. c#检查SQL语法是否正确,不执行SQL语句
  14. SpringBoot2.4.2+Vue集成Activiti6流程引擎
  15. 高斯课堂数电讲义笔记_《高数上》讲义笔记【高斯课堂】 (1).pdf
  16. nividia 自定义分辨率整合进了显示器原生支持的分辨率,如何删除
  17. 游戏开发设计模式:单例模式
  18. 网络安全没有“银弹”
  19. 产品经理也要懂ASO
  20. OrientDB入门

热门文章

  1. C语言显示图书信息的讲解,C语言图书信息管理系统解析.pdf
  2. jQ实现简单放大镜效果
  3. 使用WireShark生成地理位置数据地图
  4. 基于aspnet+20ajax问卷调查系统的设计和实现_百度文库,基于ASP.NET问卷调查系统的设计与实现.doc...
  5. 【劣等上等】MMD动作+镜头数据下载
  6. 外卖小程序邀请入口获取推广路径
  7. origin画已知函数曲线_使用Origin进行函数绘图的方法
  8. Mybatis-plus 之sql注入器
  9. AquaCrop_原理学习笔记05:土壤水分平衡及土壤属性基本概念
  10. AquaCrop_原理学习笔记06:土壤水分运动