在自动驾驶中,检测模型的速度和准确率都很重要,出于这个原因,论文提出Gaussian YOLOv3。该算法在保持实时性的情况下,通过高斯建模、损失函数重建来学习bbox预测值的不确定性,从而提高准确率和TP,能够显著地降低FP,在KITTI和BDD数据集上分别提升了3.09mAP和3.5mAP。整体的思路类似于添加一个不确定性分支,没有带来过多的计算,设计十分巧妙,推荐大家阅读学习
来源:晓飞的算法工程笔记 公众号
论文: Gaussian YOLOv3: An Accurate and Fast Object Detector Using Localization
Uncertainty for Autonomous Driving
Introduction
在自动驾驶中实时性和准确率都十分重要,论文为了增加检测算法的准确率,以及减少误判(FP)的出现,论文提出了Gaussian YOLOv3。该算法基于实时性框架YOLOv3,对bbox的预测值进行高斯建模输出不确定性(localization uncertainty),并且修改了bbox的loss函数,能够有效地提高准确率且保持实时性
这里可能会有个比较大的疑问,YOLOv3的objectness是否就可以表示bbox的不确定性。个人认为论文的观点是objectness能表示bbox的不确定性,但又跟论文提到的预测值不确定性不一样。因为objectness为
,主要跟IoU相关,是整体的不确定性,而相同的IoU有不同的相交方法,不能准确地代表单个bbox预测值的不确定性,而文中直接使用高斯模型来表示单个预测值的不确定性,是另外一种更细的维度,可以认为是一种补充
Gaussian YOLOv3
Gaussian modeling
使用单个高斯模型来分别预测 、 、 和 的不确定性,高斯模型计算如公式1, 为均值函数, 为标准差函数,即在当前分布下 的值,越高越好
为了构建bbox 每个值的高斯模型,将每个bbox的预测值改为均值 和标准差 ,如图2所示,为 , , , , , , , ,使用这8个预测值构建4个分布,如图2。由于在构建的分布中,均值 处的值是最大的,所以取均值 为bbox 4个维度( , , , )的预测值,用法跟YOLOv3的值的意义一样。标准差则代表不确定性,因为标准差越大,概率分布中均值处的值会越低
论文没有直接使用上面提到的 , , , , , , , ,而是根据YOLOv3的bbox计算方法,对输出各预测值前进行sigmoid函数预处理,使其值在 。处理后, 和 代表bbox的中心点在grid中的偏移坐标,由于YOLO中 和 要过指数函数,值可以有正负,所以不进行sigmoid处理。标准差代表不确定性,直接进行sigmoid函数处理到 间
Reconstruction of loss function
由于输出是作为高斯模型的参数,bbox的损失函数将修改为负对数似然(negative log likelihood, NLL)损失,objectness和class的损失函数不变。公式5为 的NLL损失, 、 和 分别为特征图宽高的grid数以及anchor数, 和 为 的值和不确定性,由模型在 grid的 -th anchor输出。 为 的GT,公式5计算GT在当前分布下的值,均值越接近GT且标准差越小,则loss越小。为了数值计算不出差,加上
GT的计算如公式6和公式7,跟预测值的处理一样, 、 、 和 都为GT box的缩放比例, 和 为输入图片的宽高, 和 为 -th anchor的预设宽高。在YOLOv3中,中心点在grid单元中计算,而bbox的尺寸则基于预设的anchor box,
此外,损失函数还要加上权重
,计算如公式8,GT越大,权重越小。其中,
基于GT box的宽高在图中的比例由公式9计算,
为指示函数,仅当GT对应的grid中IOU最大的anchor才为1
另外,论文提到,YOLOv3的bbox使用交叉熵损失,不能够处理噪声数据,噪声会导致很大的loss干扰训练。而论文重新设计的loss则能够对抗噪声数据。邮件咨询作者后,作者回复可以对loss进行均值偏导和标准差偏导看看,还推荐了一篇论文,不过那篇论文直接将不确定性
作为loss的系数,和本篇的实现还不太一样,具体大家可以去看看,文末的参考内容有该篇论文地址。强行解释的话,大概是因为一般噪声数据的预测值都会有很高的不确定性且GT远离预测值,即GT在高斯分布的两侧,当标准差越大,两侧的值会增大,使得loss会稍微减小。但是感觉在loss中加一个类似
的系数和一个关于
的正则项会更直接点,不知道这样理解是否正确,如果有问题麻烦大家评论或私信讨论一下
Utilization of localization uncertainty
将objectness、class和Uncertainty结合作为最后的分数,计算如公式10, 为4个预测结果的平均不确定性。由于将box的不确定性考虑到最终的分数中,因此可以大量降低FP结果
Experimental Results
在不同的数据集上每个detection layer的anchor设计如表1
Validation in utilizing localization uncertainty
Performance evaluation of Gaussian YOLOv3
Visual and numerical evaluation of FP and TP
置信度为0.5
CONCLUSION
在自动驾驶中,检测模型的速度和准确率都很重要,出于这个原因,论文提出Gaussian YOLOv3。该算法在保持实时性的情况下,通过高斯建模、损失函数重建来学习bbox预测值的不确定性,从而提高准确率和TP,能够显著地降低FP,在KITTI和BDD数据集上分别提升了3.09mAP和3.5mAP。整体的思路类似于添加一个不确定性分支,没有带来过多的计算,设计十分巧妙,推荐大家阅读学习
参考内容
- What uncertainties do we need
in bayesian deep learning for computer vision? - https://arxiv.org/abs/1703.04977
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】