深度学习——mAP 计算

0、引言

本文仅作为学习mAP相关知识点的记录,主要参考博文为Bubbliiiing大佬所创作的以及百度飞桨相关在线课程,在此表示感谢

睿智的目标检测20——利用mAP计算目标检测精确度

1、IoU(交并比)

在中学数学中,我们学习了交集、并集,而在深度学习中,使用交并的概念设计了交并比IoU用以评估预测质量,简单来说就是计算预测框与标注框的交集面积、并集面积,当IoU值越大时,则表明预测结果与标注结果越接近。公式如下图所示:
深度学习——mAP 计算_第1张图片

2、Precision(准确率)

T是True;
F是False;
P是Positive;
N是Negative。

T或者F代表的是该样本 是否被正确分类。
P或者N代表的是该样本 被预测成了正样本还是负样本。
正样本代表分类正确、负样本代表分类错误
TP(True Positives)意思就是被分为了正样本,而且分对了。 正正
TN(True Negatives)意思就是被分为了负样本,而且分对了。正负
FP(False Positives)意思就是被分为了正样本,但是分错了(事实上这个样本是负样本)负负
FN(False Negatives)意思就是被分为了负样本,但是分错了(事实上这个样本是正样本)负正

precision(精准度)指分类器找出TP与TP+FP的比例,即正确分类的正样本在整个被分为正样本(无论对错)中的比例。
深度学习——mAP 计算_第2张图片
在这里插入图片描述

3、Recall(召回率)

recall(召回率)指的是正类被分对的比例。
分类器认为是正类并且确实是正类的部分占所有确实是正类的比例
在这里插入图片描述
计算举例:
假如设定IoU阈值为0.3,即TP的数量为>0.3,FP的数量为<0.3,假设标注的图片上有十个框,预测结果>0.3的框有8个,其中6个正确,2个错误,那么

Precision=6/8=0.75
Recall=6/10=0.6

待补充两者在评估过程中的实际作用,与置信度的阈值设置规则

4、AP

简单而言,AP指的是average precision,即平均精度,是在该类的不同置信度的情况下使用Precision和Recall所构建的曲线所围成的面积。AP的计算有两套标准,07年所提出的11点法由于无法很好的表示实际情况,后为此情况,提出了如下新的计算方法,举例如下:

假设我们获得了很多个预测框与标注框的IoU,并以此计算出了对应的Recall与Precision
然后,我们以IoU的大小进行从上自下进行排序(当然,你也可以不全取)
以Precision为纵坐标,Recall为横坐标做出P-R曲线
根据P-R曲线,计算所围图形的面积,该面积就是对应类的AP值

深度学习——mAP 计算_第3张图片
大家应该都学过定积分,在计算中,可以将两个端点围成的矩形面积进行累加计算,以此求出AP值。

5、AP计算逻辑

5.1、提取测试集中真实框的数据的(真实框的坐标,类名)。
5.2、运行模型程序,对测试集中的预测结果进行获取(预测框的坐标、类名、置信度)。
5.3、保证预测结果与真实结果的样本数量一一对应。
5.4、对预测结果的置信度进行排序或设置增长率,用于后面得到P-R曲线
5.5、根据设置的置信度,结合标定数据计算TP\FP\FN\TN数,
后计算Precision(精准度)Recall(召回率)
5.4、根据得到的不同置信度下的P-R,计算AP值
(可将P-R均放入列表中,使用[(Pi + Pi+1)*(Ri+1 - Ri)]/2,计算单次结果,后使用循环语句,计算全部。)

6、mAP(mean average precision)

AP衡量的是学出来的模型在单独的一个类别上的好坏,而mAP衡量的是学出的模型在所有类别上的好坏
mAP的计算就是所有类的AP值累加做均值

你可能感兴趣的:(TensorFlow,深度学习)