深度学习-目标检测中的mAP计算

本文详细介绍了目标检测中的关键评价指标,包括交并比(IoU)、查准率(Precision)、查全率(Recall)以及平均精度均值(mAP)。通过实例解析了如何计算这些指标,阐述了它们在评估模型性能中的作用。
摘要由CSDN通过智能技术生成

谨以本文记录深度学习入门过程中学习的目标检测常见指标,如有错误还请朋友不吝指教!

目标检测评价指标——mAP

如上图所示,绿颜色的为GT Box,红颜色的Predict Box。如果要正确检测出图中的猫和狗,那怎么才能算是正确的检测呢?下边的这三个标准是都需要看的:
  1. GT与预测框的IoU是否大于阈值?
  2. 预测的类别是否正确?
  3. 置信度是否大于阈值?

交并比(IoU,Intersection over Union)

IoU的作用是评价两个矩形框之间的相似性,在目标检测中是度量两个检测框的交叠程度。计算公式如下:
I O U = a r e a ( B g t ∩ B p ) a r e a ( B g t ∪ B p ) IOU=\frac{area(B_{gt}\cap B_{p})}{area(B_{gt} \cup B_p)} IOU=area(BgtBp)area(BgtBp)
其中 B g t B_{gt} Bgt表示GT Box, B p B_p Bp表示Predict Box。

查准率和查全率

什么是TP、TN、FP、FN?

  • TP:True Positive
  • TN:True Negative
  • FP:False Positive
  • FN:False Negative

TP、TN、FP和FN的对应解释如上所述,其中的Positive和Negative表示模型对样本预测的结果是正样本还是负样本True和False表示预测的结果和真实结果是否相同。例如:True Positive就是模型预测样本为正样本,该结果与实际结果相同,该样本实际上本来就是标签为正的样本。

如果假设IoU阈值为0.5的话,那在目标检测中:

  • TP:表示 I o U > 0.5 IoU>0.5 IoU>0.5的检测框的数量,也就是检测正确的数量。
  • FP:表示 I o U ≤ 0.5 IoU \le 0.5 IoU0.5的检测框数量(或者是检测到同一GT的多余的检测框的数量),属于误检一类了。
  • FN:表示没有检测到的GT数量,即漏检的数量。

查准率(Precision)

被预测为正样本的检测框中预测正确的占比:
P r e c i s i o n = T P T P + F P = T P a l l   d e t e c t i o n s Precision=\frac{TP}{TP+FP}=\frac{TP}{all \ detections} Precision=TP+FPTP=all detectionsTP

如上图所示,图中GT共有5只猫待检测,但实际上只检测出来了一只,而且这个检测是正确的。那这种情况下的查全率就是:
P r e c i s i o n = 1 1 = 100 % Precision=\frac{1}{1}=100\% Precision=11=100%

查全率(Recall)

被正确检测出来的真实框占所有真实框的比例:
R e c a l l = T P T P + F N = T P a l l   g r o u n d   t r u t h s Recall=\frac{TP}{TP+FN}=\frac{TP}{all \ ground \ truths} Recall=TP+FNTP=all ground truthsTP

同样是上边有5个待检测的GT,这次得到了50个预测框,其中5个全部预测正确,这种情况下TP=5,漏检FN=0最终的查全率为:

R e c a l l = 5 5 + 0 = 100 % Recall=\frac{5}{5+0}=100\% Recall=5+05=100%

AP和mAP

AP 是计算某一类 P-R 曲线下的面积,mAP 则是计算所有类别 P-R 曲线下面积的平均值。其中P是查准率Precision,R是查全率Recall。

下面以3张图片为例,说明AP和mAP的计算过程:

在所有的图片中(当前只有上图一张),待检测的目标的数量 n u m o b = 2 num_{ob}=2 numob=2,上图中的检测情况如下表所示:

GT idConfidenceOB(IoU=0.5)
10.98True
10.61False

该表中的顺序是按Confidence从高到低排序的,对于一个GT来说,只能有一个检测框为正确的检测。

加入第二张图片,此时待检测的目标数量 n u m o b = 3 num_{ob}=3 numob=3,检测情况如下表所示

GT idConfidenceOB(IoU=0.5)
10.98True
30.89True
30.66False
10.61False

加入第三张图片,加上前两张中的待检测目标,共有 n u m o b = 7 num_{ob}=7 numob=7 个目标需要检测,检测情况如下表所示:

GT idConfidenceOB(IoU=0.5)
10.98True
30.89True
60.88True
70.78True
30.66False
10.61False
40.52True

依次取Confidence的阈值为[0.98, 0.89, 0.88, 0.78, 0.66, 0.61, 0.52],计算对应的查准率和查全率如下表所示:

RankPrecisionRecallConfidence thread
11.00.140.98
21.00.280.89
31.00.420.88
41.00.570.78
50.800.570.66
60.660.570.61
70.710.710.52

以Confidence thread=0.52为例:
此时的TP=5,误检FP=2,第一张和第三张两张图片共漏检FN=2,所以
P r e c i s i o n = T P T P + F P = 5 5 + 2 = 0.71 Precision=\frac{TP}{TP+FP}=\frac{5}{5+2}=0.71 Precision=TP+FPTP=5+25=0.71
R e c a l l = T P T P + F N = 5 5 + 2 = 0.71 Recall = \frac{TP}{TP+FN}=\frac{5}{5+2}=0.71 Recall=TP+FNTP=5+25=0.71
绘制出对应的P-R曲线图:

计算曲线下方的面积,也就是猫这一类别的AP:
( 0.14 − 0 ) × 1.0 + ( 0.28 − 0.14 ) × 1.0 + ( 0.42 − 0.28 ) × 1.0 + ( 0.57 − 0.42 ) × 1.0 + ( 0.71 − 0.57 ) × 0.71 = 0.6694 \begin{aligned} & (0.14-0)\times 1.0+(0.28-0.14) \times1.0 + (0.42-0.28)\times 1.0+ \\ & (0.57-0.42) \times1.0 + (0.71-0.57)\times 0.71=0.6694 \end{aligned} (0.140)×1.0+(0.280.14)×1.0+(0.420.28)×1.0+(0.570.42)×1.0+(0.710.57)×0.71=0.6694
对于表格中Recall相同的,只保留Precision最高的值进行计算,最终得到猫这一类的AP=0.6694,如果要计算mAP则需要计算出其他类别的AP,并取平均值。


参考链接:
https://www.zhihu.com/question/53405779/answer/399478988
如果想看视频讲解的朋友可以移步这位up主的投稿,文中的例子也是来源于该视频:视频传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值