3D-LaneNet : End-to-End 3D Multiple Lane Detection
文章目录
3D-LaneNet是ICCV 2019的一篇文章,其主要构造了一个**双通路(dual-pathway)的网络结构,其中一个通路通过相机原始图像实现相机外参(高度和pitch)的学习,另一个通路在俯视图下实现3D车道线的检测,**第二条通路通过第一条通路学习到的外参使用类似 STN(Spatial transformer Network)的方法实现两条通路之间特征的融合。本文车道线检测采用anchor的方法,同时文章提出了一种 获得虚拟3D车道线数据的方法。
1. 实现方法 (Method)
1.1 坐标系设置和透视投影
本文假设在相机内参已知的基础上,相机相对地面roll角度为0,则相机相对地面坐标系的外参仅由相机距离地面的高度和pitch角度决定。相机坐标系和路面坐标系的设置如下图a,相机坐标系中
y
′
y^{\prime}
y′为相机光轴的方向,
P
r
o
a
d
P_{road}
Proad为与当前路面相切的平面,路面坐标系的z方向为
P
r
o
a
d
P_{road}
Proad的法线方向,y方向和
C
r
o
a
d
C_{road}
Croad为
y
′
y^{\prime}
y′和
C
c
a
m
e
r
a
C_{camera}
Ccamera在
P
r
o
a
d
P_{road}
Proad平面上的投影。所以已知两个坐标系之间的高度,以及pitch角度就可以得到相机外参
T
c
2
r
T_{c2r}
Tc2r,配合相机内参以及预定义好的IPM相关参数(比如图像边界,米到像素的缩放尺度),就可以得到透视变换后的图像。配合插值grid
S
I
P
M
S_{IPM}
SIPM便可以得到俯视图。
1.2. 网络结构与anchor构建
该文章设计的网络结构如下图所示,由两个pathway组成,两个pathway之间的特征连接由Projective transformation layer连接。
Image-view pathway 用来学习"road projection plane",根据section 1.1中的假设该path way学习输出中间量pitch角度( θ \theta θ)和相机坐标系原点到其road plane上投影点的距离( h c a m h_{cam} hcam)。使用这两个输出变量对Image-view pathway中的特征图使用Projective transformatiion layer (图中蓝色部分)进行俯视图的转换,并保持通道数不变并与Top-view pathway过程中的相应特征进行concate(除了Top-view pathway的第一层紫色部分),并使用卷积依次进行降采样最终得到车道线anchor的相关预测。
Top-view pathway输出最终车道线的预测,所以anchor预定义的位置和最后输出车道线的坐标都是在 C r o a d C_{road} Croad坐标系下的。anchors的预定义在top view视图中,在x方向均匀分布(图中虚线 X A i X_{A}^{i} XAi),在预定义的直线 Y r e f Y_{ref} Yref上,ground truth与其在 Y r e f Y_{ref} Yref上交点最近的anchor进行匹配,这种匹配方法会导致每个anchor可能与多条线进行配对(如图中两条centerline在直线 Y r e f Y_{ref} Yref处重合),所以每个anchor输出三种类型的描述符(c1,c2,d)前两者表示该anchor拟合的不同的中心线(centerline),d表示该anchor预测的边界线(dlimiter)。最终Top-view pathway的网络输出的size为 3 ⋅ ( 2 ⋅ K + 1 ) × 1 × N 3\cdot(2\cdot K + 1)\times1\times N 3⋅(2⋅K+1)×1×N,第一维度中的3则表示3个type,K表示每个anchor有K个点组成,每个点预测一个偏移和一个深度z,即{ x i x_i xi, z i z_i zi}以及每个anchor每个type输出一个置信度 p i p_i pi,表示该anchor该type是否在拟合一个车道线。N表示anchor的个数,这样网络最终的输出经过目标检测领域的非极大值抑制,便可以得到最后车道线的检测结果。
1.3 训练和GT的匹配
整个训练的流程如下:首先通过已知的h, θ \theta θ定义ground truth的坐标系即 C r o a d C_{road} Croad坐标系,其次将每一个3D的车道线(原始在 C c a m e r a C_{camera} Ccamera坐标系下)投影到 C r o a d C_{road} Croad坐标系的x-y平面上,找到在直线 Y r e f Y_{ref} Yref处距离该GT最近的anchor进行匹配。若一个anchor匹配多条线,最左边的centerline和delimiter为 c 1 c_1 c1和d,剩下的一条centerline为c2。最后根据网络输出计算损失,并更新参数。其损失函数如上图,置信度使用CE损失,offset和深度使用L1损失,外参使用L1损失。
2. 论文启示
2.1 论文可完善的点
-
本文最重要的一个问题在下一篇工作GenLaneNet中被提出。其anchor的定义和ground truth,以及网络的输出的车道线坐标均是在 C r o a d C_{road} Croad坐标系下的,当路面为平面时 C r o a d C_{road} Croad坐标系下车道线的x,y坐标与通过相机内外参获得的透视图像中车道线的x,y坐标是一致的,但当路面不为理想平面时这一规则将不再满足。但3D-lanenet仍使用透视变换到地平面的特征进行车道线的预测,所以会导致特征和预测结果不匹配的问题,这也导致网络的泛化性能较差。这一点在GenLaneNet中有详细的说明:
下图展示了这一缺点,如图蓝线和红线分别表示设定的gt和网络预测结果。在透视图像中可以发现二者与实际的透视头像中车道线的位置是不同的,但3DLaneNet使用的特征仍是透视变换后图像的特征,所以会存在上述问题。
- 由于部分delimiter在直线 Y r e f Y_{ref} Yref处没有交点,所以有些delimiter无法与anchor进行匹配,在本文中训练和验证过程中直接将这部分lane进行了忽略。
- 本文先验条件较多,比如相机和地面的位置,roll角度为零等。
2.2 论文可参考的方法
- 文章提出一种获得模拟数据集的方法。
- 文章采用two path way的方法,以及使用project transformer layer进行两阶段特征交互的方法。
- 本文anchor的设计,一个anchor可能对应多个gt时的处理方式。