参考代码:Ultra-Fast-Lane-Detection
1. 概述
导读:现有很多车道线检测方法都是基于分割网络去做的,这就导致了其在车道线检测困难场景(严重遮挡和极限光照条件下)下的适应性和infer速度上存在问题。在困难场景下车道线的检测往往很依赖车道线区域的上下文和全局信息的获取,但传统的分割网络却很难去获取这样的信息,对此文章提出了一种基于行切分的车道线检测算法,其在特征图的H维度进行展开,并通过全链接(使得其具有全局视野,不同于卷积的局部相关性)的方式在W维度去预测车道线(这里确切应该叫对应切片上的“点”了)可能存在的位置。且相对于传统的语义分割方法,文章基于在特征图上进行切分展开可以极大减少计算量,从而其速度可以在1080 TI GPU上跑到300+ FPS。由于车道线存在其固有的几何特征,文章对此提出了对于行车道线预测的结构性约束(通过行间的相似性与形状约束),从而建立不同行间车道线(“点”)之间的关联。
对于车道线检测中的困难场景(严重遮挡和极限光照条件)如图1所示:
传统的分割方法是很难从中获取有效的上下文和全局信息的,对此有SCNN提出了复杂的信息融合策略从而极大增强了分割网络的性能,但是其却带来了更大的计算量开销。对此文章使用在特征图(stride=4)行上进行逐行预测,将车道线检测问题转换为了在行上寻找最大响应的问题,并通过全连接的形式极大限度丰富和使用上下文和全局信息,并且还可以降低所需的计算量,见图2所示:
2. 车道线检测方法的构建
2.1 方法的整体形式
这里输入网络的图片尺寸是
(
H
∗
W
)
(H*W)
(H∗W),经过文章提出的网络生成特征图
X
X
X其尺寸为
(
h
,
w
)
(h,w)
(h,w),对于每个不同的数据集其中包含的最大车道线的数据为
C
C
C。经过文章的预测网络使用全局信息得到车道线的预测结果
P
∈
R
C
∗
h
∗
(
w
+
1
)
P\in R^{C*h*(w+1)}
P∈RC∗h∗(w+1),其预测的形式为:
P
i
,
j
,
:
=
f
i
,
j
(
X
)
,
s
.
t
.
i
∈
[
1
,
C
]
,
j
∈
[
1
,
h
]
P_{i,j,:}=f^{i,j}(X),\ s.t.\ i\in[1,C],j\in[1,h]
Pi,j,:=fi,j(X), s.t. i∈[1,C],j∈[1,h]
而其对应的监督GT也是
T
∈
R
C
∗
h
∗
(
w
+
1
)
T\in R^{C*h*(w+1)}
T∈RC∗h∗(w+1),在进行行切分之后是
1
∗
w
1*w
1∗w的特征,进行预测之后得到
(
w
+
1
)
(w+1)
(w+1)维度的预测结果(添加了一个背景,代表车道线的缺失),则其监督使用的是交叉熵的形式:
L
c
l
s
=
∑
i
=
1
C
∑
j
=
1
h
L
C
E
(
P
i
,
j
,
:
,
T
i
,
j
,
:
)
L_{cls}=\sum_{i=1}^C\sum_{j=1}^hL_{CE}(P_{i,j,:},T_{i,j,:})
Lcls=i=1∑Cj=1∑hLCE(Pi,j,:,Ti,j,:)
与语义分割相比infer快速的原因:
文章将文章结果的预测方式与分割网络的预测方式进行对比,见下图所示:
分割网路的输出分辨率为:
(
H
∗
W
)
(H*W)
(H∗W),则分割部分的计算量描述为:
H
∗
W
∗
(
C
+
1
)
H*W*(C+1)
H∗W∗(C+1)。但是对于文章的方法其是在特征图上进行的,则满足
h
≪
H
,
w
≪
W
h\ll H,w\ll W
h≪H,w≪W,则其计算量描述为:
C
∗
h
∗
(
C
+
1
)
C*h*(C+1)
C∗h∗(C+1)。举个例子,在CULane数据下文章的方法计算量为1.7e4,而分割的计算量为1.15e6,还是相差了几个数量级的。
视觉不可见场景下的预测:
在这样的场景下网络如何使用上下和全局信息便变得很重要了,文章的方法直接使用全连接的方式从而拥有了全局的视野,从而增加了对于这样场景的适应性。
2.2 车道线的结构约束
在上文中对车道线(“点”)的位置进行了估计,但是车道线其本身是存在一定的几何特征的,对此从这个点出发文章提出了对应的结构损失用于去建立这些定位点之间的联系,这是通过定位之间的相似性和形状一致性进行约束的。
定位的相似性约束:
这部分描述的是相邻行之间预测向量是近似的,其约束描述为:
L
s
i
m
=
∑
i
=
1
C
∑
j
=
1
h
−
1
∣
∣
p
i
,
j
,
:
−
P
i
,
j
+
1
,
:
∣
∣
1
L_{sim}=\sum_{i=1}^C\sum_{j=1}^{h-1}||p_{i,j,:}-P_{i,j+1,:}||_1
Lsim=i=1∑Cj=1∑h−1∣∣pi,j,:−Pi,j+1,:∣∣1
车道线形状约束:
由于车道线其本身是存在一定位置关系的直线或是曲线,则相邻行之间的朝向性应该是一致的,对于一个行中某个车道线点的位置计算描述为:
L
o
c
i
,
j
=
arg max
k
P
i
,
j
,
k
,
s
.
t
.
k
∈
[
1
,
w
]
Loc_{i,j}=\argmax_k P_{i,j,k},\ s.t.\ k\in[1,w]
Loci,j=kargmaxPi,j,k, s.t. k∈[1,w]
但是上面的计算形式却是不可微的,进而无法进行梯度反传。对此文章对其采用求去期望的方式进行近似,则首先将每个位置(cell)上可能存在的概率描述为:
P
r
o
b
i
,
j
,
:
=
s
o
f
t
m
a
x
(
P
i
,
j
,
1
:
w
)
Prob_{i,j,:}=softmax(P_{i,j,1:w})
Probi,j,:=softmax(Pi,j,1:w)
则之前的argmax过程变为求取期望的形式,描述为:
L
o
c
i
,
j
=
∑
k
=
1
w
k
⋅
P
r
o
b
i
,
j
,
k
Loc_{i,j}=\sum_{k=1}^wk\cdot Prob_{i,j,k}
Loci,j=k=1∑wk⋅Probi,j,k
这样使得优化的目标可导,并且使得之前的离散变量变成了连续的形式,则对应的形状约束描述为:
L
s
h
p
=
∑
i
=
1
C
∑
j
=
1
h
−
2
∣
∣
(
L
o
c
i
,
j
−
L
o
c
i
,
j
+
1
)
−
(
L
o
c
i
,
j
+
1
−
L
o
c
i
,
j
+
2
)
∣
∣
1
L_{shp}=\sum_{i=1}^C\sum_{j=1}^{h-2}||(Loc_{i,j}-Loc_{i,j+1})-(Loc_{i,j+1}-Loc_{i,j+2})||_1
Lshp=i=1∑Cj=1∑h−2∣∣(Loci,j−Loci,j+1)−(Loci,j+1−Loci,j+2)∣∣1
上述是二阶差分的形式,至于为什么不使用一阶,文章的解释是一阶的结果在大多数场景下是非0的,但是二阶则可以将其弱化,因而可以相应减少对应的参数量,从而减少车道线弯曲带来的影响。这个结构损失描述为:
L
s
t
r
=
L
s
i
m
+
λ
L
s
h
p
L_{str}=L_{sim}+\lambda L_{shp}
Lstr=Lsim+λLshp
2.3 全局和局部有效信息提取
在之前的内容中重点关注的是车道线区域和车道线的定位约束,缺少对全局和局部信息的提取,对此文章引入了额外的语义分割损失去监督生成更加具有分辨能力的特征表达(在infer的时候可以将其删除),其结构见下图所示:
因而整个网络部分的损失便描述为:
L
=
L
c
l
s
+
α
L
s
t
r
+
β
L
s
e
g
L=L_{cls}+\alpha L_{str}+\beta L_{seg}
L=Lcls+αLstr+βLseg
上述文章的不同分量对整体性能的影响见下表所示:
3. 实验结果
文章的方法在两个不同数据集下的性能表现:
文章方法与其它方法的性能比较:
PS:文章在进行数据增广的是也同时将车道线进行了延长