目前车道线检测的三种方案:
point-based
segmentation-based
curve-based:利用贝塞尔曲线(贝塞尔曲线(B′ezier)基础_b′ezier 是什么-CSDN博客),检测起始点和结束点以及曲线参数,将2D车道线当做曲线回归问题。
目前curved-based的方法检测不准确的原因,作者认为并不是因为曲线拟合缺少自由度(也就是曲线方程参数不够),因为过度增加参数可能会过拟合局部车道线而忽略其整体性。但这种方法相较于其他方法的优势在于其整体性。车道线的设计本身也是简单的,连续的。
经过研究发现,现实中出现的Lane的不平整主要是来自于道路的问题
具体方法
在2021年的提出的RESA模块,在提取Lane特征时,在垂直和水平方向上循环移动切片特征图,并使每个像素能够收集全局信息,用于丰富图像信息
这种方法显然增加了对于Lane特征的提取效果,但对于边缘位置的Lane,在水平方向上提取的特征是相同的。而且丢失了高度信息。如下图所示,这将会的模型造成困扰,因此本文使用anchor-based方法提取特征。
本文不使用IPM变换,因为IPM变化会把其变成top view,也就是正面视角,在这个过程中,IPM变换假设该视角是平坦的,而实际上道路是高度是变换的,这样的变换反而增加了噪音。
IPM变换:关于IPM逆透视变换的理解_ipm矩阵逆变换-CSDN博客
输入2DLane图片,利用DLA-34作为backone提取特征,然后定义anchor,获取车道线特征,然后利用ROI Align将特征图池化为固定形状,接下来一部分用于生成curve特征,一部分生成height特征。接下来将他们结合生成3D Lane特征,再将其转化为2D Lane特征。
其中curveFormer用于在BEV空间中,拟合x和z的关系(忽略高度关系);具体结构如下所示:
ROI feature(前文提到的固定形状特征)作为Query,global feature map作为key 和value;ROI特征有两种编码形式,一种为Position Embedding 包含位置信息;另一种针对每个anchor的可学习的Region-aware Embedding,通过训练使其包含整个车道线的全局信息,最后flatten输出并加入MLP(全连接层)
Height Former具有相同的结构和Curver Former,然后生成point-based的高度特征,接着将高度特征和Lane特征融合,生成3D Lane特征。
本文使用匈牙利匹配算法去匹配不同位置的predict与gt:
第一部分为predict和GT的水平距离,第二部分和第三部分分别为开始点和终止点的predict和GT的竖直距离
3D车道线的损失函数如下:
我们使用L1损失(深度学习中常见的损失函数(L1Loss、L2loss)_l1 loss-CSDN博客)将预测的Y值与地面实况进行比较,这被称为高度损失Lh。此外,我们使用端点LZ损失来估计起点和终点的Z值之间的误差
其中:
其中e是控制车道半径的超参数,Xi是均匀采样点的对应X值。
对于2D通道,我们采用透视空间中的通道IoU损失Lper和端点损失Lv来估计2D空间中起点和终点的v值之间的误差: