代码地址:KL-Loss
1. 概述
导读:这篇文章对于数据集中标注不明确的标注框给检测带来的影响做了研究,其中原有的检测框的回归函数Smooth L1函数并不能很好反应不明确检测框带来的影响,对此文章提出了一个新的检测框损失函数——KL-Loss,它同时学习检测框的变换与定位的方差(localization variance,定位的不确定性),这样的改进可以扩展到多种不同结构的检测网络,扩展之后的网络其精度得以提升,并且带来的计算量很小。学习到的方差信息使得可以在NMS阶段融合掉邻近的检测框,从而进一步提升检测精度。在MS-COCO数据集上使用VGG-16的Faster RCNN网络其AP从23.6%提升到29.1%,对于ResNet-50-FPN的Mask RCNN网络使用文章的方法在AP与 A P 90 AP^{90} AP90上分别提升1.8%与6.2%。
在实际的COCO数据中会存在GT标注不准确的情况,下图1的(a)(c)图是标注不准确的示例,图(d)是存在遮挡的情况。
一般情况下分类的置信度是与检测框的回归是正相关的,但是也会存在一些不一样的情况,见图2所示:
对于上面的问题文章提出了KL-Loss用于解决上述问题,它可以同时学习边界框的回归以及定位的不确定性。为了捕捉边界框预测的不确定性,首先将边界框的预测及ground truth 框分别看作时高斯分布及Dirac delta函数。则新定义的回归损失可以看作是预测分布及真实分布之间的KL散度。使用KL-Loss会有三个优点:
- 1)可以成功捕获数据集中的歧义(不明确)现象。边界框回归器从有歧义的边界框中得到更小的损失;
- 2)网络学习到的方差信息是在后处理阶段是很有用的,即是使用周围定位的权值来vote出候选框的位置,而这些权重是通过NMS中预测得来的方差;
- 3)学习到的概率分布是具有解释性的,其反应的是检测框预测的不确定性,这样的性质在诸如自动驾驶车辆上是很有帮助的;
2. 方法设计
2.1 网络结构
由于文章的方法源自于Faster RCNN系列的算法,其前面的网络部分是相似的,其网络结构上最大的区别在于RCNN头的部分,改动了预测回归的目标与添加了一个预测检测框方差的分支,这个分支与检测框的预测组合起来计算KL-Loss,其网络示意见下图所示:
2.2 检测框的定义
这篇文章没有采用Faster RCNN中
(
x
,
y
,
w
,
h
)
(x,y,w,h)
(x,y,w,h)形式的检测框表达而是使用了
(
x
1
,
y
1
,
x
2
,
y
2
)
(x_1,y_1,x_2,y_2)
(x1,y1,x2,y2)的四维表达,分别表示检测框的4个边界,其预测与反向计算偏移的过程见下面的公式所示:
其中,
t
x
1
,
t
x
2
,
t
y
1
,
t
y
2
t_{x_1},t_{x_2},t_{y_1},t_{y_2}
tx1,tx2,ty1,ty2代表网络预测的结果,对应的带星号的是GT,带小标
a
a
a的是anchor。
这篇文章中检测框的概率分布而不是直接检测框的位置。为了表达检测框的概率分布,文章从简单起见假设其是属于独立且但方差的高斯分布,其表述为:
其中,
θ
\theta
θ是学习到的参数,
x
e
x_e
xe是评估的检测框位置,标准差
σ
\sigma
σ体现了评估的不确定性,当这个标准差接近于0的时候,网络评估的置信度就很高了。
对于GT的边界框也同样计算其对应的高斯分布,不过这里的
σ
\sigma
σ同样趋近于0,从而得到Dirac delta函数:
x
g
x_g
xg是GT边界框的位置。
2.3 基于KL_Loss的边界框回归
在上面的参数化描述中已经将预测与GT的高斯分布表示出来了,接下来就是约束他们的KL散度了,其形式见下面的公式所示:
其中的两个分布的散度可以展开为:
在图4中展示了
x
e
x_e
xe评估的质量与GT分布的一个关系,在评估质量较差的时候就希望方差尽可能大,从而覆盖到GT的分布。
由于公式5中后面的两项与阐述
θ
\theta
θ无关,因而公式4可以描述为与下面两项相关的形式:
在
σ
=
1
\sigma=1
σ=1的时候KL-Loss退化为标准的Euclidean Loss:
因而边界框的预测
x
e
x_e
xe与定位的标准差的导数可以描述为:
由于标准差在分母上,在计算梯度的时候会引起梯度问题,这里使用换元法将
α
=
l
o
g
(
σ
2
)
\alpha=log(\sigma^2)
α=log(σ2),因而公式7就可以描述为:
在满足
∣
x
g
−
x
e
∣
>
1
|x_g-x_e|\gt1
∣xg−xe∣>1的时候采用类似Smooth L1类似的损失函数:
在训练的初始阶段FC层的参数初始化是使用标准差为0.0001,均值为0的高斯分布初始化。
2.4 Variance Voting
这部分算是检测框的后处理部分了,这里涉及到的是合框的算法,其算法流程为:
完成合并之后的框的概率与坐标表示为:
3. 实验结果
性能比较:
消融实验: