首页IT科技目标检测map怎么计算出来的(目标检测指标mAP详解)

目标检测map怎么计算出来的(目标检测指标mAP详解)

时间2025-06-20 17:28:27分类IT科技浏览4610
导读:前言 相信刚刚接触目标检测的小伙伴也是有点疑惑吧,目标检测的知识点和模型属实有点多,想要工作找CV的话,目标检测是必须掌握的方向了。我记得在找实习的时候,面试官就问到了我目标检测的指标是什么,答:mAP!问:mAP是什么?我:.......!☺...

前言

相信刚刚接触目标检测的小伙伴也是有点疑惑吧            ,目标检测的知识点和模型属实有点多                     ,想要工作找CV的话      ,目标检测是必须掌握的方向了              。我记得在找实习的时候         ,面试官就问到了我目标检测的指标是什么                     ,答:mAP!问:mAP是什么?我:.......!☺

所以在本文中我也是详细说一下mAP 的含义         ,有什么不对的或者不全的欢迎大家指正!

mAP是mean of Average Precision的缩写      ,意思是平均精确度(average precision)的平均(mean)                     ,是object detection中模型性能的衡量标准                  。object detection中             ,因为有物体定位框   ,分类中的accuracy并不适用                    ,因此才提出了object detection独有的mAP指标                 ,但这也导致mAP没有分类中的accuracy那么直观       。但也没有那么复杂           。首先,简单回顾几个基础概念                  。

一              、查准率(Precision)和查全率(Recall)

查准率:预测所有为正的结果中                ,真正正确的结果的比例          。

查全率:所有正例中被正确预测的比例                     ,即预测正确的覆盖率        。

来一张别人总结过的图片:

好的   ,看得有点懵没关系            ,大体有个印象就好                     ,后面还会进行总结升华的!

关于IOU的部分在这里我就不多做介绍了      ,感兴趣的 朋友可以看看我这篇文章:NMS及IOU原理讲解和代码解析

二                  、一个类别的AP计算

物体检测中的每一个预测结果包含两部分         ,预测框(bounding box)和置信概率(Pc)                   。bounding box通常以矩形预测框的左上角和右下角的坐标表示                     ,即x_min, y_min, x_max, y_max         ,如下图             。置信概率Pc有两层意思      ,一是所预测bounding box的类别                     ,二是这个类别的置信概率             ,如下图中的P_dog=0.88   ,代表预测绿色框为dog                    ,并且置信概率为88%    。

Rank | BB | confidence | GT ---------------------------- 1 | BB1 | 0.9 | 1 ---------------------------- 2 | BB2 | 0.8 | 1 ---------------------------- 3 | BB1 | 0.8 | 1 ---------------------------- 4 | BB3 | 0.5 | 0 ---------------------------- 5 | BB4 | 0.4 | 0 ---------------------------- 6 | BB5 | 0.4 | 1 ---------------------------- 7 | BB6 | 0.3 | 0 ---------------------------- 8 | BB7 | 0.2 | 0 ---------------------------- 9 | BB8 | 0.1 | 1 ---------------------------- 10 | BB9 | 0.1 | 1 ----------------------------

 因此                 ,如果设置P_threshold=0,则有 TP=5 (BB1, BB2, BB5, BB8, BB9)                ,FP=5 (重复检测到的BB1也算FP)                    。除了表里检测到的5个GT以外                     ,我们还有2个GT没被检测到   ,因此: FN = 2.

然后依次从上到下设定对应的rank为正反分界线            ,此rank之前(包含此rank)的预测为正                     ,此rank之后的预测为反      ,然后计算对应的Precision和Recall:

rank=1 precision=1.00 and recall=0.14 -------------------------------------- rank=2 precision=1.00 and recall=0.29 -------------------------------------- rank=3 precision=0.66 and recall=0.29 -------------------------------------- rank=4 precision=0.50 and recall=0.29 -------------------------------------- rank=5 precision=0.40 and recall=0.29 -------------------------------------- rank=6 precision=0.50 and recall=0.43 -------------------------------------- rank=7 precision=0.43 and recall=0.43 -------------------------------------- rank=8 precision=0.38 and recall=0.43 -------------------------------------- rank=9 precision=0.44 and recall=0.57 -------------------------------------- rank=10 precision=0.50 and recall=0.71 --------------------------------------

 比如rank=4时         ,TP=2 (BB1, BB2)                     ,则

Precision=2/4=0.5         ,Recall=TP/GT=2/7=0.29

 可以看出      ,随着预测正反分割线的向下移动                     ,Recall稳步变大             ,Precision整体减小   ,局部上下跳动                    ,PR曲线如下图:

AP(Average Precision)的计算基本等同于计算PR曲线下的面积                 ,但略有不同                。需要先将PR曲线平滑化。方法是,查全率r对应的查准率p                ,取查全率大于等于r时最大的查准率p                 。即                     ,

 平滑后的曲线如下图中的绿色曲线:

PASCAL VOC挑战赛计算AP的老标准VOC07是:等间距选取11个recall[0.0,0.1,0.2...0.8,0.9,1.0]   ,然后取这11个recall点对应的Precision值做平均                   。

 以上图为例            ,AP的计算过程为

2010年后的是取所有不同新标准的recall点对应的Precision值做平均                     ,如下图所示    。新标准算出的AP更准              。 

根据新标准      ,AP计算可以定义为经过插值的precision-recall曲线与X轴包络的面积                  。这种方式称为:AUC (Area under curve) 

r1         ,r2,...,rn是按升序排列的Precision插值段第一个插值处对应的recall值       。

三       、mAP 

AP值计算仅仅是针对一个类别                     ,得到AP后mAP的计算就变得很简单了         ,就是计算所有类别的AP      ,然后取平均值           。mAP衡量的是训练出来的模型在所有类别上的检测能力的好坏                  。假设有K种类别                     ,K>1             ,那么mAP的计算公式:

当K=1时   ,mAP = AP          。

Pascal VOC新标准定义的mAP计算方式可以认为是mAP的标准计算方式        。

COCO挑战赛定义了12种mAP计算方式                    ,典型的有:

mAP(IoU@0.5)                 ,跟Pascal VOC mAP标准计算方式一致;

mAP(IoU@[0.5:0.05:0.95]),需要计算10个IoU阈值下的mAP                ,然后计算平均值                   。这个评估指标比仅考虑通用IoU阈值(0.5)评估指标更能体现出模型的精度             。

mAP(IoU@0.75)                     ,这是一个对检测能力要求更高的标准    。

除了根据不同的IoU阈值来计算mAP外   ,还可以根据检测目标的大小来计算                    。

mAP@small            ,检测目标的面积 ≤ 32x32

mAP@medium                     ,32x32 < 检测目标的面积 ≤ 96x96

mAP@Large      ,96x96 < 检测目标的面积

总结

查准率其实就是精确度         ,当Precision=1的时候就意味着我找一个对一个                     ,Precision=0.1的时候意味着我找了十个检测框才对了一个         ,所以我们需要这个值越大越好      ,but要是只限制这一个指标的时候                     ,然而这就会出现找不全的情况                。即一共十个目标             ,我只找了一个检测框   ,这个检测框是对的                    ,这时候我的precision也是1                 ,所以为了避免这种情况的出现,就加了另外一个定义:查全率--召回率。Recall是预测为正实际为正占总体正样本的比例                ,Recall可以视作是模型在数据集中                     ,检测出目标类型数据的能力   ,即是否把想找出来的都找出来了            ,Recall=1表示已经把想找出来的数据全部找出来了                 。所以就加了这个限制                     ,也是为什么在这两个坐标轴下呈现下降的情况      ,所以我们需要的最好的情况就是precision=1 AND Recall=1而在这种情况下AUC就是最容易计算的一种方式                   。

参考:目标检测算法的评估指标:mAP定义及计算方式

           详解object detection中的mAP

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
js直接执行function(夯实基础上篇-图解 JavaScript 执行机制)