一,IoU的计算:
IoU是用来衡量两个box的重合度的,值越大重合度越高,求法简单来说就是交集/并集。
二, TP,FP,FN,TN的解释:
原本的解释是:T/F表示模型预测的对错,P/N表示模型认为是正样本还是负样本。这样说不好理解。下面通俗的解释:
模型预测出来的所有box都是P,模型没有预测出来的box都是N.
TP:预测框和GT(GroundTruth)的IoU, 大于阈值threshold
FP:预测框和GT的IoU,小于阈值threshold
目标检测中不区分FN,TN。因为N没有预测出来,所以不存在TN,FN的区分
三,Precision和Recall的解释:
前一个等号是公式,后一个等号是实际表达的意思。
precision: 准确率(也叫查准率,反映查得准不准)
这个公式表达的意思是:模型预测出来的所有box中,预测正确(IoU大于阈值)的所占的比例。
同上。
公式表达的意思是: 所有GT中,预测正确所占的比例。
recall: 召回率(也叫查全率,反映查得全不全)
四,AP,mAP的求法:
AP(Average Precision)是用来评价一个模型的综合性能的.
AP的计算针对某一个类(label)来说的,一般来说,我们模型预测box的时,会有物体分类的置信度。例如:预测的物体有5类,box的坐标 [ x1,y1,x2,y2 ],置信度为 [0.1,0.15,0.5,0.15,0.3]。针对第1类计算AP,那么取置信度为0.1,说白了计算哪一类就取哪一类的置信度。
这里我就不画图了,直接上别人的图。下面的讲解是针对每一类来说的。
这个数据集有7张图,所有GT(绿色的box)有15个,预测的所有box(红色的box,从A到Y)有24个。如下图:
对每一个预测的box置信度由大到小排,求与GT的IoU,大于threshold为TP,否则为FP。
下图就是置信度从大到小排序后的结果,每一张图像的precision和recall都是上面累加下来的结果。求法就是按照precison和recal的公式,只不过TP,FP都是依次累加的。
例如,第一行: ,。第二行:, ,第四行:, .其他的以此类推。
得到precision和recall序列后,就要求这一类的AP。
1. 11点插值法计算AP:
横轴为recall,纵轴为precision,画图。
采样11个recall值[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1],不是平均插值,而是取recall大于等于r时最大的precision,有点像外包络。得到对应的11个precision值,取这11个precision的平均值:
如下表所示:
recall大于0的结果中,最大的precision,recall大于0.1的所有结果中,最大的precision,以此类推。
如下图所示:通过相加取平均值的方法得到这一类的AP。
2. 所有点插值法计算AP:
按照横轴recall的值划分,取每一个recall区间内,precision的最大值
求每一个recall区间上小长方形的面积,底为:区间的长度,高为:区间的最大precision,最后把每一个长方形的面积相加就是这一类的AP。两种求法结果是一样的。
前面的AP是求的一类的AP,最后把所有类别的AP加起来处以分类就是mAP。
,n表示label有n类。
至于代码部分网上都有,大家可以自行参考,但是思想就是这么个思想。这一篇讲的是目标检测中的mAP的求法,下一篇我会介绍动作检测中的v-mAP的求法,它们有相同点,也有不同点。但我查了一圈好像网上没有关于V-mAP的参考,所以自己阅读了相关的论文,以及看别人的代码,自己很有感悟,下一篇分享出来!!!
参考链接: