目标检测中的评价指标

1. 问题定义

目标: 预测图像中各个物体是否出现及其位置。目标检测涉及图像中物体的定位分类
Stanford’s CS231n Course slides(lecture 8)
例如我们要区分出红细胞(RBC)、白细胞(WBC)和血小板(platelets)。除了需要用框(bounding box)框出物体,还需要对他们分类,标在框上。每个类别后跟着一个数字即判定为该类别的置信度。
在这里插入图片描述
那么如何判断那个模型好(准确)呢?
比如上图中绿色的框标出大部分的白细胞 ,但是有些边缘的没有标出,但是我们不能通过图片,凭直觉判断模型的好坏。我们需要一个量化指标。即直接量化每个模型在测试集中的图像、类和不同置信阈值下的表现。这个工具就是mAP。
为了学习mAP,需要先了解几个概念。

2. 几个概念

  • mAP: (Mean Average Precision)平均AP
  • AP:P-R下面积,平均精度。
  • P-R曲线:Precision-Recall曲线
  • Precision:精度,即所有检测结果中,正确(IoU>0.5)个数的占比。TP/(TP+FP)
  • Recall:召回率,即所有真实物体中被检测出来的个数占比。TP/(TP+FN)
  • TP:(True Positive)真正例。IoU>0.5的检测框个数,同一个Ground Truth只计算一次
  • FP:(False Positive)假正例。IoU<0.5的检测框个数,同一个GT的多余检测框也计算
  • FN:(False Negatives)假负例。GT里没有被检测到的数量。即模型漏检的物体。
  • IoU:交并比。评价边界框正确性的度量指标

一张有猫的图片中,不光要检测出猫,还要检测的猫的位置正确。

3. Precision-Recall曲线

可以分别用一句话区分精度Precision和召回率Recall

Precision : “when your model guesses how often does it guess correctly?” (模型多少次预测正确?)
Recall :“has your model guessed every time that it should have guessed?” (模型应该检测到的某一物体时候是否检测到了物体?)

例如上面的例子。假设一张图里有10个红细胞,模型检测到一个红细胞,并且标注位置和类别都正确,那么模型就是有高精度(1个红细胞的框是准确的),低召回率(10个只检测到1个)

通过调整阈值可以控制召回率。具体做法要看模型需要的环境。比如当避免假真例比避免假负例更重要时(可以不都检测到,但检测到的一定要正确),可以设置高阈值。

建立Precision和Recall之前的函数关系并绘制在图上,这个曲线就是P-R曲线。该曲线向下倾斜的(递减),因为当置信度降低时,会做出更多的预测(提升召回),而做出的预测则不那么精确(影响精度)。打个比方,当要求“说出每一种鲨鱼的名称”,你会从熟悉且肯定的说起(高精度),但是很难保证说出来的都正确(接近于高召回率,低精度)。如果PR曲线不是向下倾斜的,说明模型有问题,需要回去检测。
在这里插入图片描述

那么如何通过P-R曲线找到最好的阈值呢?
有三种思路。
(1)斜率接近-1
(2)计算P-R曲线下的面积(AUC,Area Under the Curve)
(3)计算平均精度(AP,Average Precision)
通常我们采用AP的方法。下面将开始介绍AP的计算。
在这里插入图片描述

4. AP

VOC2010前:Recall >= 0, 0.1, 0.2, …, 1共11个recall下precision的平均值。熟悉微积分的可以看出,下面公式的含义就是 p ( r ) p(r) p(r)即precision-recall曲线下的面积。
A P = 1 11 ∑ r ∈ { 0 , 0.1 , . . . , 1 } p i n t e r p ( r ) AP = \frac {1}{11}\sum_{r\in{\lbrace 0,0.1,...,1\rbrace}}p_{interp}(r) AP=111r{0,0.1,...,1}pinterp(r)
VOC2010后:所有数据点,而不是仅使用11个recall值来计算AP。
p i n t e r p ( r ) = max ⁡ r ^ : r ^ ≥ r p ( r ^ ) p_{interp}(r)=\max_{\hat{r}:\hat{r}\geq{r}}p(\hat{r}) pinterp(r)=r^:r^rmaxp(r^)
为保证p-r曲线单调递减,对于某个recall值r,precision值取所有recall>=r中的最大值。

5. mAP

AP是针对一个类别的计算。所有类别的AP平均值即mAP。
建议在分析模型结果时查看各个类的AP值。这些值也许暗示你需要添加更多的训练样本。
例如下面的分析结果:

// EfficientDet模型
78.59% = Platelets AP 
77.87% = RBC AP 
96.47% = WBC AP 
mAP = 84.31%
// YOLOv3模型
72.15% = Platelets AP 
74.41% = RBC AP 
95.54% = WBC AP 
mAP = 80.70%

表明在这一数据集上EfficientDet更精确 ,同时,对于白细胞检测比红细胞更容易。
mAP除了分不同的IOU阈值(COCO从0.5到0.95,步长为0.05),还通常分为小、中、大三个对象,帮助识别模型(或数据集)可能出错的地方。


【参考】

[1] Measuring Object Detection models - mAP - What is Mean Average Precision?

[2]What is Mean Average Precision (mAP) in Object Detection?

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值