浅析“自动驾驶” 模型评测与分析
Posted Chook_lxk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析“自动驾驶” 模型评测与分析相关的知识,希望对你有一定的参考价值。
评价指标可以正向反馈模型的优劣。场景的复杂度增大了模型的复杂度,同时需要去不断迭代更加合理的评测方法和评价指标。
一、常用评测方法基本概念
从最简单的二分类问题出发,比如我们有一个模型“判断一个人的性别”,正例为男性,负例为女性。对应的混淆矩阵应该是下面这个样子:
对应就会出现四个概念:
- TP (True Positive): 真正例,模型的结果和真实结果相同,都为正例
- FP (False Positive):假正例,模型预测为正例,但是实际为负例,属于模型误报
- FN (False Negative):假负例,模型预测为负例,但实际是正例,属于模型漏检
- TN (True Negative):真负例,模型的结果和真实结果相同,都为负例
其实是对应两个字母,T/F代表模型预测结果是否正确;P/N代表模型预测为正例或者为负例
四个概念会得到如下的总数计算:
- 所有样本总数(GT) = TP + FP + FN + TN
- 真实情况为正例的总数 = TP + FN
- 预测结果为正例的总数 = TP + FP
然后我们在如上的混淆矩阵和总数计算扩展开来:
如上,就得到了三个新的指标:
- Recall (召回率,简称R):反映模型对这个类别的真值的召回程度,即真值正例中,被模型正确预测为正例的比例
- Precision (精确率,简称P):反映模型对这个类别的识别准确程度,即模型预测为正例中,确实是正例的比例
- 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=2∗Precision∗Recall/(Precision+Recall).
除此之外,在实际应用中,还会有一些常用的指标,比如:
- mean Recall (平均召回率):各个类别召回率的算数平均和
- mean Precision (平均精确率):各个类别精确率的算数平均和
在理想情况下,上面的指标已经可以去评价一个模型的优劣了,但是现实情况往往没有那么理想,主要有两个问题:
- 数据集类别不均衡,或者某些类别极难被模型分类成功,会导致上面平均指标的计算被样本多的类别指标所主导
- 以逻辑回归为例,模型给出的不是0或1,而是0-1的区间,表示模型预测的概率,所以需要人为卡一个阈值,小于阈值的为负例,大于阈值的为正例
对于以上的两个问题,我们引入了一个新的指标:AP
因为模型的输出是0-1的一个数值,所以需要我们手动卡一个阈值,对应的 Precision 和 Recall 其实也变成了一个随score变化的函数 P(score) 和 R(score),然后我们从0到1遍历所有score值,得到每个score对应的P和R,分别把两个值对应到坐标的Y,X轴上,即得到一条曲线:
这个曲线则直观的表示出了模型在不同recall下的precision,可以看到随着召回率不断增大,对应的精确率是不断减小的,这就需要我们去根据实际应用场景,牺牲某个指标,找到平衡点的阈值。这个曲线也被叫做 PR曲线
有了曲线,我们很自然地会去看曲线和X,Y轴围成的面积,它其实就是上面提到的Average Precision,简称AP, 它反映出了模型在某一类别上面不同recall下的平均精确率。可以看到,AP是和阈值score无关的,多个类别的AP算数平均值,即得到了mAP。
二、具体场景下的评测方法和评价指标
对于分类任务,其实使用上面的mAP/P/R、F1、PR曲线已经足够。对应其他任务,比如检测任务,模型的输出是检测框,如下图:
绿色代表标注框,黄色代表预测框;在这种场景下,我们不仅需要模型分类正确,也需要框的位置要满足一定要求,所以引入了一个新的概念:IOU
IOU其实就是预测框和标注框的面积交并比,如下所示:
假设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则是分类正确的像素点个数与该类别所有像素点个数(分类正确的像素点个数 + 分类错误的像素点个数 + 漏检的像素点个数)的比值。
以上是关于浅析“自动驾驶” 模型评测与分析的主要内容,如果未能解决你的问题,请参考以下文章