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

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

时间2025-07-30 09:10:38分类IT科技浏览5084
导读:前言 相信刚刚接触目标检测的小伙伴也是有点疑惑吧,目标检测的知识点和模型属实有点多,想要工作找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
tensorflow指定显卡(历时两天,我终于在TensorFlow里面调用起来了gpu) hadoop的生态项目(Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn)