【目标检测】mAP评价指标介绍

1 基础概念

1.1 IoU

Intersection Over Union (IoU),又称交并比,用来衡量两个box重叠的程度,通过这个名称我们大概可以猜到 IoU 的计算方法。IoU 计算的是 “预测的边框” 和 “真实的边框” 的交集和并集的比值。对于1个真实bbox​和1个预测的bbox ​, 它们的IoU计算如下:

I o U = a r e a ( b o x p r e ⋃ b o x g t ) a r e a ( b o x p r e ⋂ b o x g t ) . IoU= \frac{area(box_{pre}\bigcup box_{gt})}{area(box_{pre}\bigcap box_{gt})}. IoU=area(boxpreboxgt)area(boxpreboxgt).

在这里插入图片描述

1.2 Precision and Recall

在这里插入图片描述

  • True Positive (TP): IOU>=阈值的检测框
  • False Positive (FP): IOU<阈值的检测框
  • FalseNegative (FN): 未被检测到的GT
  • True Negative (TN): 忽略不计

精确率Precision的计算公式为:
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
召回率Recall的计算公式为:
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP

1.3 PR Curve(PR曲线)

PR曲线用途:当confidence阈值改变时,衡量模型的performance

好模型的标志:PR曲线鼓大(靠近右上方),见下图示例,recall变大时precision下降小,意味着模型不需要通过预测更多的BBOX来检测出GT。对于好的模型,当confidence阈值改变,precision和recall都保持在较高水平

在这里插入图片描述

1.4 AP(average precision)

AP:PR曲线下面积的近似,是一个0~1之间的数值,也可用来衡量模型的performance
在这里插入图片描述
在实际应用中,我们并不直接对该PR曲线进行计算,而是对PR曲线进行平滑处理。即对PR曲线上的每个点,Precision的值取该点右侧最大的Precision的值。
用公式来描述就是在这里插入图片描述
用该公式进行平滑后再用上述公式计算AP的值。

AP VS PR曲线

  • PR曲线比较直观,但由于曲线的上下震荡,不方便比较不同模型的PR曲线
  • AP是一个数字,模型的AP大,则模型更好,方便比较不同模型

2 mAP计算方法

2.1 VOC

对于AP的计算,VOC采用过两种不同方法:

1. 11点插值法
VOC2010以前,选取当Recall >= 0, 0.1, 0.2, …, 1共11个点时的Precision最大值,AP是这11个Precision的平均值,此时只由11个点去近似PR曲线下面积。
在这里插入图片描述

2. 所有点插值法
11点插值法有两个缺陷,第一个是使用11个采样点在精度方面会有损失。第二个是,在比较两个AP值较小的模型时,很难体现出两者的差别。

VOC2010及以后,采用绘制出平滑后的PR曲线后,用积分的方式计算平滑曲线下方的面积作为最终的AP值。该方法需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值:
在这里插入图片描述

2.2 COCO

最新的目标检测相关论文都使用coco数据集来展示自己模型的效果。对于coco数据集来说,使用的也是Interplolated AP的计算方式。与VOC 2007不同的是,为了提高精度,在PR曲线上采样了100个点进行计算。而且Iou的阈值从固定的0.5调整为在 0.5 - 0.95 的区间上每隔0.5计算一次AP的值,取所有结果的平均值作为最终的结果。

采用COCO mAP的论文中,我们除了AP,还能看到例如 A P 50 AP_{50} AP50 A P 75 AP_{75} AP75 A P S AP_{S} APS A P M AP_{M} APM A P L AP_{L} APL,其代表意义如下:

A P 50 AP_{50} AP50:IoU阈值为0.5时的AP测量值
A P 75 AP_{75} AP75:IoU阈值为0.75时的AP测量值
A P S AP_{S} APS: 像素面积小于 3 2 2 32^{2} 322的目标框的AP测量值
A P M AP_{M} APM : 像素面积在 3 2 2 − 9 6 2 32^{2}-96^{2} 322962之间目标框的AP测量值
A P L AP_{L} APL : 像素面积大于 9 6 2 96^{2} 962目标框的AP测量值

### 目标检测模型评估指标 mAP (Mean Average Precision) #### 定义 均值平均精度(mAP, Mean Average Precision)是一个综合性的度量标准,用于评估目标检测模型的整体表现。该指标不仅考虑了模型对不同类别的识别能力,还考量了其定位准确性。 对于单个类别而言,先计算出各个置信阈值下的精确率(Precision)和召回率(Recall),进而获得该类别的平均精度(AP)[^1]。具体来说,在给定一系列预测框的情况下,通过设定不同的IoU交并比阈值来判断哪些预测被认为是正确的(True Positive),从而统计TP、FP(False Positive)以及FN(False Negative),最终得出Precision和Recall曲线图上的多个位数据[^3]。 #### 计算过程 为了求得某个特定类别的AP: - 对于每一个测试样本中的真实对象实例,按照预测得分从高到低排序; - 遍历这些预测结果,每当遇到一个新的True Positive时更新当前累计的TP数,并据此重新计算此时此刻为止所累积起来的所有预测案例中TP占总数量的比例作为新的Precision值;同时记录下对应的Recall比率; - 将上述过程中形成的若干组(P,R)坐标连接成一条PR曲线; - AP等于这条曲线下方面积大小,可以采用积分法近似估算或者简单地取固定间隔处的最大Precision值得分加权平均而得。 当完成了所有类别的AP计算之后,就可以很容易地得到整个系统的mAP——只需将各单独类目的AP相加以总数除之即可完成最后一步运算[^2]。 ```python def calculate_ap(precisions, recalls): """Calculate the area under PR curve.""" ap = 0. for i in range(len(recalls)-1): delta_recall = recalls[i+1] - recalls[i] avg_precision = (precisions[i]+precisions[i+1])/2 ap += delta_recall * avg_precision return ap def mean_average_precision(all_precisions, all_recalls): """Compute mAP over multiple classes""" class_aps = [] for precisions, recalls in zip(all_precisions.values(), all_recalls.values()): ap = calculate_ap(precisions, recalls) class_aps.append(ap) map_score = sum(class_aps)/len(class_aps) return map_score ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值