目标检测任务,常使用mAP这一评价标准来判断分类是否准确。
1. 精度(precision)和召回率(recall)
关注一个二分类问题,如判断一个照片是不是一辆车。
对于一个样本,如果其本身确实是一辆车。经过预测之后,这个样本是车的概率是0.6,这时候我们需要有一个阈值,设定阈值为0.7,那么由于0.6<0.7,这个样本是个负样本(即不是车),是Negative,这个判断是错误的,即False;如果阈值设为0.5,显然,这个样本是正样本(即是一辆车),是Positive,这个判断正确,即True。
对于多个样本,可以用下面的混淆矩阵来统一描述。
实际Positive | 实际Negative | |
---|---|---|
预测Positive | TP | FP |
预测Negative | FN | TN |
很容易知道上面TP、TN、FP、FN四个的意思。
- True positives(TP): 实际为正样本且被分类器划分为正样本的样本数;
- True negatives(TN): 实际为负样本且被分类器划分为负样本的样本数;
- False positives(FP): 实际为负样本但被分类器划分为正样本的样本数;
- False negatives(FN):实际为正样本但被分类器划分为负样本的样本数;
根据这四个值就可以定义出精度和召回率这两个参数。
Recall = TP/(TP+FN)
Precision = TP/(TP+FP)
可以看到,Recall和Presion两个参数的分子都是TP。Recall的分母是实际中的正样本数;Presion的分母则是预测出来的正样本数。
2. P-R曲线
如上面小节中的二分类问题,选定的阈值不同,分类结果是不同的,Recall和Presion的值自然也不同,画出两者随着阈值变化的曲线图就是P-R曲线,其形状如下图所示。可以看到两者之间有一定的反比关系,为什么会出现这种波形呢?用一个实例来说明。
假设有10个样本,标号为1, 2 … 10。其中1, 2, 3, 4和6是有车的,也就是正样本;其他的是没车的负样本。经过分类器的运算之后,这10个样本中有车的概率分别是:1, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1.
-
设置阈值为1
显然只有标号为1的样本被预测为正样本,其余都是负样本,如下表所示。实际Positive 实际Negative 预测Positive TP: 1 FP: 0 预测Negative FN: 4 TN: 5 根据公式计算出Recall和Presion分别为0.2, 1.
-
设置阈值为0.6
这时标号为1-5的样本都被预测成正样本,其余为负样本。实际Positive 实际Negative 预测Positive TP: 4 FP: 1 预测Negative FN: 1 TN: 4 根据公式计算出Recall和Presion分别为0.8, 0.8.
-
设置阈值为0
所有样本都是正样本。实际Positive 实际Negative 预测Positive TP: 5 FP: 5 预测Negative FN: 0 TN: 0 根据公式计算出Recall和Presion分别为1, 0.5.
显然,随着阈值变小,Recall的值越来越大,而Precision的值越来越小。其原因就是随着阈值变小,越来越多的样本会被划分为正样本,当阈值变为0,所有的样本都会被划为正样本,Recall显然会越来越大,因为分子TP越来越大了;Precision会变小也是因为更多的负样本被预测成了正样本,导致分母之一FP增加。
3. mAP
平均精度(Average-Precision,AP): P-R曲线围起来的面积,通常来说一个越好的分类器,AP值越高。
平均精度均值(Mean Average Precision,mAP): 即是把每个类别的AP都单独拿出来,然后计算所有类别AP的平均值,代表着对检测到的目标平均精度的一个综合度量。