1.基本概念
1.IOU交并比
2.TP TN FP FN
TP(True Positives)意思是“被分为正样本,并且分对了”
TN(True Negatives)意思是“被分为负样本,而且分对了”
FP(False Positives)意思是“被分为正样本,但是分错了”
FN(False Negatives)意思是“被分为负样本,但是分错了”
按下图来解释,左半矩形是正样本,右半矩形是负样本。一个2分类器,在图上画了个圆,分类器认为圆内是正样本,圆外是负样本。那么左半圆分类器认为是正样本,同时它确实是正样本,那么就是“被分为正样本,并且分对了”即TP,左半矩形扣除左半圆的部分就是分类器认为它是负样本,但是它本身却是正样本,就是“被分为负样本,但是分错了”即FN。右半圆分类器认为它是正样本,但是本身却是负样本,那么就是“被分为正样本,但是分错了”即FP。右半矩形扣除右半圆的部分就是分类器认为它是负样本,同时它本身确实是负样本,那么就是“被分为负样本,而且分对了”即TN
3.精度和召回率
精度:
P
=
T
P
T
P
+
F
P
P = \frac{TP}{TP + FP}
P=TP+FPTP即分类器认为是正类并且确实是正类的部分占所有分类器认为是正类的比例
召回率: R = T P T P + F N R = \frac{TP}{TP + FN} R=TP+FNTP即分类器认为是正类并且确实是正类的部分占所有确实是正类的比例
2. mAP计算
假设下面三张图为测试数据集,我们需要计算人脸目标检测的AP值,图中蓝色区域表示GT检测框,绿色框表示预测框,红色表示检测框的分类置信度。
1. 根据IOU计算TP,FP
首先我们计算每张图的预测框和GT框的IOU,根据IOU是否大于0.5来判断该pre是属于TP还是属于FP。显而易见,pre1是TP,pre2是FP,pre3是TP。
2.根据置信度排序
根据每个pre的置信度进行从高到低排序,这里pre1、pre2、pre3置信度刚好就是从高到低。
3.在不同置信度阈值下获得Precision和Recall
首先,设置阈值为0.9,无视所有小于0.9的pre。那么检测器检出的所有框pre即TP+FP=1,并且pre1是TP,那么Precision=1/1。因为所有的label=3,所以Recall=1/3。这样就得到一组P、R值。
然后,设置阈值为0.8,无视所有小于0.8的pre。那么检测器检出的所有框pre即TP+FP=2,因为pre1是TP,pre2是FP,那么Precision=1/2=0.5。因为所有的label=3,所以Recall=1/3=0.33。这样就又得到一组P、R值。
再然后,设置阈值为0.7,无视所有小于0.7的pre。那么检测器检出的所有框pre即TP+FP=3,因为pre1是TP,pre2是FP,pre3是TP,那么Precision=2/3=0.67。因为所有的label=3,所以Recall=2/3=0.67。这样就又得到一组P、R值。
4.绘制PR曲线并计算AP值
根据上面3组PR值绘制PR曲线如下。然后每个“峰值点”往左画一条线段直到与上一个峰值点的垂直线相交。这样画出来的红色线段与坐标轴围起来的面积就是AP值。图中蓝色区域面积就是AP值:
A
P
=
1
∗
0.33
+
0.67
∗
0.33
≈
0.55
AP = 1*0.33 + 0.67 * 0.33 \approx 0.55
AP=1∗0.33+0.67∗0.33≈0.55
5.计算mAP
AP衡量的是对一个类别检测好坏,mAP就是对多个类别的检测好坏。就是简单粗暴的把所有类的AP值取平均就好了。比如有两类,类A的AP值是0.5,类B的AP值是0.2,那么 m A P = ( 0.5 + 0.2 ) / 2 = 0.35 mAP=(0.5+0.2)/2=0.35 mAP=(0.5+0.2)/2=0.35