浅析“自动驾驶” (三) 模型评测与分析

评价指标可以正向反馈模型的优劣。场景的复杂度增大了模型的复杂度,同时需要去不断迭代更加合理的评测方法和评价指标。

目录

  • 一、常用评测方法基本概念
  • 二、具体场景下的评测方法和评价指标

一、常用评测方法基本概念

从最简单的二分类问题出发,比如我们有一个模型“判断一个人的性别”,正例为男性,负例为女性。对应的混淆矩阵应该是下面这个样子:
浅析“自动驾驶” (三) 模型评测与分析_第1张图片

对应就会出现四个概念:

  1. TP (True Positive): 真正例,模型的结果和真实结果相同,都为正例
  2. FP (False Positive):假正例,模型预测为正例,但是实际为负例,属于模型误报
  3. FN (False Negative):假负例,模型预测为负例,但实际是正例,属于模型漏检
  4. TN (True Negative):真负例,模型的结果和真实结果相同,都为负例

其实是对应两个字母,T/F代表模型预测结果是否正确;P/N代表模型预测为正例或者为负例

四个概念会得到如下的总数计算:

  1. 所有样本总数(GT) = TP + FP + FN + TN
  2. 真实情况为正例的总数 = TP + FN
  3. 预测结果为正例的总数 = TP + FP

然后我们在如上的混淆矩阵和总数计算扩展开来:
浅析“自动驾驶” (三) 模型评测与分析_第2张图片
如上,就得到了三个新的指标:

  1. Recall (召回率,简称R):反映模型对这个类别的真值的召回程度,即真值正例中,被模型正确预测为正例的比例
  2. Precision (精确率,简称P):反映模型对这个类别的识别准确程度,即模型预测为正例中,确实是正例的比例
  3. Accuracy (准确率吧,简称Acc):反映模型对所有类别的识别准确程度,即在所有样本中,模型预测分类成功的比例

此外,还可以定义P和R的调和平均数:F1_Score
F 1 S c o r e = 2 ∗ P r e c i s i o n ∗ R e c a l l / ( P r e c i s i o n + R e c a l l ) . F1_Score = 2 * Precision * Recall / (Precision + Recall). F1Score=2PrecisionRecall/(Precision+Recall).
除此之外,在实际应用中,还会有一些常用的指标,比如:

  1. mean Recall (平均召回率):各个类别召回率的算数平均和
  2. mean Precision (平均精确率):各个类别精确率的算数平均和

在理想情况下,上面的指标已经可以去评价一个模型的优劣了,但是现实情况往往没有那么理想,主要有两个问题:

  1. 数据集类别不均衡,或者某些类别极难被模型分类成功,会导致上面平均指标的计算被样本多的类别指标所主导
  2. 以逻辑回归为例,模型给出的不是0或1,而是0-1的区间,表示模型预测的概率,所以需要人为卡一个阈值,小于阈值的为负例,大于阈值的为正例

对于以上的两个问题,我们引入了一个新的指标:AP

因为模型的输出是0-1的一个数值,所以需要我们手动卡一个阈值,对应的 Precision 和 Recall 其实也变成了一个随score变化的函数 P(score) 和 R(score),然后我们从0到1遍历所有score值,得到每个score对应的P和R,分别把两个值对应到坐标的Y,X轴上,即得到一条曲线:
浅析“自动驾驶” (三) 模型评测与分析_第3张图片
这个曲线则直观的表示出了模型在不同recall下的precision,可以看到随着召回率不断增大,对应的精确率是不断减小的,这就需要我们去根据实际应用场景,牺牲某个指标,找到平衡点的阈值。这个曲线也被叫做 PR曲线
有了曲线,我们很自然地会去看曲线和X,Y轴围成的面积,它其实就是上面提到的Average Precision,简称AP, 它反映出了模型在某一类别上面不同recall下的平均精确率。可以看到,AP是和阈值score无关的,多个类别的AP算数平均值,即得到了mAP

二、具体场景下的评测方法和评价指标

对于分类任务,其实使用上面的mAP/P/R、F1、PR曲线已经足够。对应其他任务,比如检测任务,模型的输出是检测框,如下图:
浅析“自动驾驶” (三) 模型评测与分析_第4张图片
绿色代表标注框,黄色代表预测框;在这种场景下,我们不仅需要模型分类正确,也需要框的位置要满足一定要求,所以引入了一个新的概念:IOU
IOU其实就是预测框和标注框的面积交并比,如下所示:
浅析“自动驾驶” (三) 模型评测与分析_第5张图片
假设A为标注框,B为预测框,蓝色C则为交集框,对应的IOU计算应该是:
I o U ( A , B ) = I n t e r s e c t i o n ( A , B ) / U n i o n ( A , B ) = A r e a ( C ) / ( A r e a ( A ) + A r e a ( B ) − A r e a ( C ) ) IoU(A,B) = Intersection(A, B) / Union(A,B) = Area(C) / (Area(A) + Area(B) - Area(C)) IoU(A,B)=Intersection(A,B)/Union(A,B)=Area(C)/(Area(A)+Area(B)Area(C))
所以对于检测任务,当预测框和标注框类别相同,且IOU大于某个阈值,B才能称为TP。反之,类别错误或者IOU不满足指定条件,都是FP;FN则是那些没有匹配到正确预测框的标注框。

而对于分割任务,可以理解为逐像素分类的任务,对应IOU则是分类正确的像素点个数与该类别所有像素点个数(分类正确的像素点个数 + 分类错误的像素点个数 + 漏检的像素点个数)的比值。

你可能感兴趣的:(机器学习,自动驾驶,深度学习)