[tensorflow应用之路]目标检测中mAP的概念及使用

mAP全称为mean average precision,多类别目标平均精度。与其对应的,还有average precision(AP),即单个分类的平均精度。在目标检测任务中,我们常常会见到各类论文中会使用mAP的概念进行精度的总结,这归功于它良好的表达能力。mAP计算方式看起来简单,但很多人却搞不懂这是怎么计算的,网上相关的资料许多也语焉不详,只是粗粗介绍了概念。这篇文章中,我们会详细的讲它的概念、计算公式以及tensorflow的实现。


Precision、Recall、AP的概念

要了解mAP,一般从AP开始,mAP只是其多类的扩展。AP又由两个概念衍生而来:Precision和Recall。

Precision和Recall的公式如下:
P r e c i s i o n = t p t p + f p R e c a l l = t p t p + f n Precision= \frac{tp} {tp+fp} \\ Recall= \frac{tp} {tp+fn} Precision=tp+fptpRecall=tp+fntp

其中,p表示positive,即检出目标;n表示negative,即未检出目标;t表示true,即正确;f表示false,即错误。上式中,tp表示检出的正确目标数量,fp表示误检的目标数量,fn表示漏检的目标数量。所以,tp+fp为算法检出目标数,tp+fn为真实目标数量。

一般来说,Precision和Recall无法单独使用。因为在极端条件下,只要认为所有物体都是检出目标,那么我们就能得到Recall为100%,但是precision为0%。反之亦然。所以,这两种变量会配合使用,这就造成统计和比较上的困难。比如A算法达到precision=80%,Recall=50%;B算法达到precision=85%,Recall=45%,此时很难通过这两个指标来比较2种算法的优劣。

由于上述的困难,我们引进了AP的概念。它即Recall和Precision组成曲线下的面积(Area Under Curve,AUC)。
在这里插入图片描述

由AP的定义可知,在多分类时,我们可以在每一种类别都得到一个AP。此时,我们可以通过mAP来得到算法精度:
m A P = 1 n ∑ n i A P i mAP=\frac {1} {n} \sum_{n}^{i}AP_{i} mAP=n1niAPi


目标检测中的AP计算及代码实现

下面就讲讲目标检测中是如何计算AP的。
在这里插入图片描述
上图中,红框表示真实的目标物体,蓝框表示算法检出的目标物体,左上角的数字代表检出分数。此时,我们需要设置一个IOU阈值(定义见下文),高于该阈值才被认为是检出物体,那么显然,3个蓝框中只有2个算正确检出。假设我们设置了0.5的iou阈值,此时,我们可以画一个precision和recall的对应表格

precisionrecall
0.661
0.50.5
10.5
10

一般来说,我们假定precision从小到大(第一个值改为0.5)。将四个点依次绘出,P-R曲线如下:
在这里插入图片描述
我们可以很容易得到此时AP=0.5。

上面就是tensorflow/models中,mAP的实现过程。关键点有二,一个是tp_fp_labels的计算方法,戳我看代码;另一个是precision和recall的计算,戳我看代码

IOU的计算方式

iou的计算很简单,即目标的最小重叠面积与最大轮廓矩形面积的比值
在这里插入图片描述
图片来源:https://medium.com/@jonathan_hui/map-mean-average-precision-for-object-detection-45c121a31173

Recall超过1怎么办?

recall有可能超过1吗?在目标检出任务中,这是有可能发生的。假设图像仅有一个目标,但这个物体检出了2个预测框,此时根据定义,recall可以达到2/1=200%。tensorflow/models中使用单个真实物体检出标量(代码在此)is_gt_box_detected来控制重复的检出动作,使recall在1以内。


总结

本文详细讲述了何为mAP,为何用它来定义目标检测算法的精度,以及mAP的计算方法。希望能给研究目标检测的读者带来一点帮助。

最后,祝您身体健康,再见!

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值