车道检测是自动驾驶系统中的一项基本任务,它支持车道保持、居中和变更等决策。基于深度学习的车道检测方法可以分为三类,即基于分割的方法、基于点检测的方法和基于曲线的方法。如下图所示,基于分割和基于点检测的表示是局部的和间接的。多项式曲线中使用的抽象系数(a、b、c、d)很难优化。三次贝塞尔曲线由 4 个实际存在的控制点定义,这些控制点大致适合线形状并将车道线包裹在其凸包中(红色虚线)。最好以彩色形式观看。
图 1. 车道检测策略
其中,通过依靠经典的分割和对象检测网络,基于分割和基于点检测的方法通常可以实现最先进的车道检测性能。基于分割的方法利用前景纹理线索来分割车道像素并通过启发式将这些像素解码为线路实例。基于点检测的方法通常采用R-CNN框架,通过检测一系列密集的点(例如,垂直轴上每10个像素)来检测车道线。两种方法都通过间接代理(即分割图和点)来表示车道线。为了处理整体车道线的学习,在遮挡或恶劣天气/照明条件下,他们必须依赖低效率的设计,例如实时任务较重的循环特征聚合,亦或大量启发式锚点(即至少需要>1000个锚点,这种方式可能会偏向数据集统计)。
另一方面,只有少数方法提出将车道线建模为多次曲线(又称回旋曲线,例如 x = ay3 + by2 + cy + d)。虽然整体曲线建模车道线的几何特性是简洁且直接的方式,但抽象的多项式系数也很难被精确的定义出来。已有研究表明,这类多项式曲线所建模的车道线方程,其性能大幅落后于精心设计的基于分割和点检测的方法。
在本文所介绍的车道线拟合算法时关于构建最先进的基于曲线的车道检测器问题。由于经典的三次贝塞尔曲线具有足够的自由度来参数化驾驶场景中车道线的变形,且保持了较低的计算复杂度和较高的稳定性。因此,本文介绍的车道检测算法是通过贝塞尔曲线对车道线的细长几何形状特性进行建模的。图像上贝塞尔控制点易于优化,使网络能够通过二分匹配损失进行端到端学习。通过使用来自简单列式池化的一组稀疏待检测车道,不用任何后处理步骤。例如非极大值抑制(NMS)、手工制作的启发式方法或设置多个锚点等,就可以实现运算高速和模型尺寸更小。
此外,对于自动驾驶汽车而言,很容易从前置摄像头看车道线来是基本对称的(例如,在自车道线之间,或紧邻的左车道和右车道之间)。为了对驾驶场景的全局结构进行建模,可以进一步进行特征翻转融合,即将特征图与其水平翻转图进行有效融合。这种基于特征翻转融合的设计是基于可变形卷积来的,主要用于对齐由旋转相机、改变车道、不成对线等引起的道线检测场景。
相关工作
1、基于分割和目标网络的方法
关于车道检测问题,一些方法是基于纯像素分割的分段车道检测方法。比如,SCNN将车道检测制定为多类语义分割,其核心空间 CNN 模块会反复聚合空间信息来完成不连续的分割预测,然后需要启发式后处理来解码分割图。因此,它具有很高的延迟,并且只有在优化之后才能达到实时性。其他人探索知识蒸馏或生成建模,但它们的性能仅仅超越了开创性的 SCNN。此外,这些方法通常假设固定数量行。车道网络LaneNet利用实例分割管道来处理可变数量的行,但它需要推理后聚类来生成行实例。
一些方法利用行分类,这是每像素分割的定制下采样,因此它们仍然需要后处理。建议以性能换取低延迟,但他们使用全连接层会导致模型尺寸过大。简而言之,由于表示未对准,基于分割的方法都需要大量的后处理。受到分割任务局部性的影响,在遮挡或极端照明条件下往往表现更差。
2、基于点检测车道的方法
目标检测方法实际上也可以完全应用于车道检测,将车道检测为一系列点(例如,垂直轴上的每 10 个像素)。有采用经典的 Faster R-CNN 作为单级车道线检测器,但其推理速度较低(<30 FPS)。后来,有采用更通用的单阶段检测方法,实现了优越的性能。然而,这些方法必须设计启发式车道锚,这高度依赖于数据集统计数据,并且需要非极大值抑制(NMS)作为后处理。相反,将车道线表示为具有完全端到端管道(无锚、无 NMS)的曲线。
3、基于回旋曲线的车道检测
这种基于曲线的车道检测是一种可微最小二乘拟合模块,将多项式曲线(例如,x = ay3 + by2 + cy + d)拟合到深度神经网络预测的点。然后,PolyLaneNet直接学习使用简单的全连接层来预测多项式系数。
最近也有使用 Transformer 块以基于 DETR 的端到端方式进行多项式预测。曲线是车道线的整体表示,自然消除遮挡,无需后期处理,并且可以预测可变数量的行。然而,它们在大型且具有挑战性的数据集(例如 CU Lane和 LLAMAS)上的性能仍然落后于其他类别的方法。且整体还存在收敛缓慢(TuSimple 上超过 2000 个训练周期)、高延迟架构(例如,LSTR 使用难以针对低延迟进行优化的转换器块)的问题。这里可以将以上的预测估计方式失败归因于难以优化和抽象的多项式系数。因此,本文提出的方法建议使用参数化贝塞尔曲线(由图像坐标系 1 上的实际控制点定义)来解决这些问题。
4、基于深度学习的贝塞尔曲线拟合算法
实际上,贝塞尔曲线在深度学习中唯一成功的应用是 ABCNet,它使用三次贝塞尔曲线进行文本识别。然而,以上这种方法不能直接用于智能驾驶的道线识别任务。首先,该方法仍然使用非极大值抑制NMS,因此无法实现端到端。非极大值抑制NMS 不是必需的,因此本文介绍的方法可以成为端到端的解决方案。其次,它直接在稀疏的贝塞尔控制点上计算L1损失,这将导致优化参数过程十分困难。为了解决这样的问题,本文通过利用细粒度采样损失来解决这个问题。此外,本文还提出了特征翻转融合模块,专门为车道检测任务设计的。
基于贝塞尔曲线的车道检测网络
1、贝塞尔曲线基础知识
贝塞尔曲线的公式如下式(1)所示,它是由 n + 1 个控制点定义的参数曲线:
其中 Pi 是第 i 个控制点,bi,n 是 n 次 Bernstein 基多项式:
本文使用经典的三次贝塞尔曲线 (n = 3),根据经验发现该曲线足以对车道线进行建模。它显示出比三阶多项式更好的地面实况拟合能力,三阶多项式是先前基于曲线方法的基函数。而对于自动驾驶系统而言,在更加复杂的路况下(如城市工况),一般会考虑采用高阶曲线进行分段拟合从而更加真实的还原实际路况下的车道线情况。然而,这种采用高阶曲线实际上也不会带来十分明显且实质性的增益(因为道路形状本身就是非规则的曲线形式组成,很多是完全无法用曲线段还原出来的),反而由于高阶变量的高自由度则会导致检测极不稳定。
这里讨论点的所有坐标都是相对于图像大小的(即,大部分在 [0, 1] 范围内)。
2、本算法架构
整体模型架构如图 2 所示。首先对输入图像提取特征信息,对来自典型编码器(例如残差网络 ResNet)的特征通过特征翻转融合得到增强;然后,池化对应的特征信息到一维状态并应用两个一维卷积层。最后,卷积网络通过分类分支和回归分支来预测贝塞尔曲线。
图 2. Pipeline
具体来说,这里使用残差网络 ResNets 的第 3 层特征作为主干网络,但需要使用两个具有扩张率的扩张块来替换主干网络内部的扩张。这样就使得本算法做到了速度和准确度的平衡,留下了具有更大感受野的16倍下采样特征图。其次,是通过添加特征翻转融合模块来聚合相反车道特征。
个可选区域。使用两个 1×3 的一维卷积来转换池化特征,同时还可以方便地对附近车道待检测区域之间的交互进行建模,引导网络学习非极大值抑制(NMS)函数的替代函数。最后,通过分类和回归分支(每个分支只有一个 1 × 1 的一维卷积)得到最终的预测。对于 4 个控制点的回归,输出为,对于车道线对象的存在,输出为。
3、特征翻转融合
通过将车道线建模为整体曲线,关注各个车道线的几何特性(例如细、长和连续)。从驾驶场景中的前置摄像头视图考虑车道的全局结构。道路具有等间距的车道线,看起来对称,并且此属性值得建模。例如,左自车道线的存在很可能表明其对应右车道,紧邻左车道的结构可以帮助描述紧邻右车道等。
为了利用这个属性,将特征图与其水平翻转的版本融合在一起(图 3)。对齐是通过计算可变形卷积偏移来实现,以翻转后的特征图和原始特征图为条件,该过程最好以彩色形式观看。具体来说,两个独立的卷积层和归一化层对每个特征图进行变换,然后在 ReLU 激活之前将它们加在一起。通过这个模块,期望模型能够基于两个特征图进行预测。
图 3. 特征翻转融合
为了解决相机捕获图像的轻微未对准问题(例如,旋转、转向、非配对),可以对翻转的特征图应用内核大小为 3 × 3 的可变形卷积,同时学习以原始特征图为条件的偏移量用于进行特征对齐。
向 ResNet 主干添加了一个辅助二进制分割分支(用于分割车道线或非车道线区域,这些区域在训练后将被删除),期望它能够强制学习空间细节。有趣的是,我们发现这个辅助分支只有在与特征融合一起使用时才能提高性能。这是因为分割任务的定位可以提供空间上更准确的特征图,这反过来又支持翻转特征之间的准确融合。
可视化如图 4 所示,(a) 本文提出的模型架构可以从清晰的标记和对面车道线周围的车辆推断出一条标记不清的车道线的存在。请注意,汽车向左偏离,这个场景并不是完美对称地捕捉到的。(b) 当整条道路缺乏清晰的标记时,两侧都用于更好的预测。
图 4. ResNet 主干网最后一层的 Grad-CAM可视化
从图 4(a)中可以看到翻转的特征确实纠正了由汽车引入不对称性引起的误差。
贝塞尔曲线的端到端拟合
1、贝塞尔曲线之间的距离
学习贝塞尔曲线的关键是定义一个良好的距离度量来测量地面真实曲线和预测之间的距离。简单的方式是可以直接计算贝塞尔曲线控制点之间的平均 L1 距离,如 ABC Net中所述。然而,如图 5(a) 所示,(a) 表示控制点的L1距离与曲线间的实际距离相关性不高。(b)表示所提出的采样损失是t采样的一种统一距离度量。(c)表示多项式回归的典型损失,且至少需要 3 个单独的损失:y 采样损失、y 起点损失、y 终点损失。
曲率控制点中较大的 L1 误差可以表明贝塞尔曲线之间的视觉距离非常小,尤其是在小曲率或中等曲率上(车道线通常是这种情况)。
图 5. 车道损失函数
由于贝塞尔曲线由 t ∈ [0,1] 参数化,因此通过在一组均匀间隔的t值(T)处对曲线进行采样,提出了贝塞尔曲线更合理的采样损失。如图 5(b)所示,表示相邻采样点之间的曲线长度相等。t值可以通过重新参数化函数 f(t) 做进一步转换。具体来说,给定贝塞尔曲线 B(t)、B^(t),采样损失 Lreg 可以定义为:
其中, n 是采样点的总数,设置为 100。经验发现 f(t) = t 效果很好。这种简单而有效的损失公式使本算法模型易于收敛,并且对通常涉及其他基于曲线或基于点检测的方法的超参数不会太敏感。从图5(b,c)可以看出端点损失的损失权重和线长度损失。
2、贝塞尔真值
由于车道数据集目前是通过在线关键点进行注释的,因此需要贝塞尔控制点来实现上述采样损失。给定一条车道线上的注释点 {(kxi, kyi)} mi=1,其中(kxi, kyi) 表示第 i 个点的 2D 坐标。本算法目标是获得控制点{Pi(xi,yi)} ni=1。本文使用最小二乘拟合来求解该方程:
{ti}mi=0 ∈ [0, 1]。考虑到 m >> n ,且与b 是线性独立性的。因此,可以通过最左边矩阵(大多是满列秩)的求逆来有效地求解。与先前的方法不同,本算法并没有将 P0 和 Pn 设置为原点和终点,这样做会得出更加优质的求解质量。
3、标签和预测匹配
获得真值后,在训练中,可以使用最佳二分匹配在 G 个标签和 N 个预测(G < N)之间执行一对一分配,以获得完全的端到端的PipeLine。本文算法通过找出 N 个预测π∈ ΠNG 的 G 排列,制定了最佳二分匹配:
其中 Qi,π(i) ∈ [0, 1] 表示第 i 个标签与第 π(i) 个预测的匹配质量,基于曲线 bi,ˆbπ(i)(采样损失)和类别得到 pˆπ 之间的 L1 距离。α默认设置为 0.8。上述方程可以通过著名的匈牙利算法进行有效的求解。
还使用空间先验,将匹配预测限制在标签的空间邻域(以目标中心距离来定)。然而,由于许多车道都是坡度较大的长线,因此这种中心先验没有用处。
4、整体亏损
除了贝塞尔曲线采样损失之外,还有车道目标的分类损失 Lc也需要进行综合考虑。由于正反例之间的不平衡在车道检测中不像物体检测中那么严重,因此可以使用简单的加权二元交叉熵损失来代替焦点损失:
其中,w是负样本的权重,二进制分段分支的损失 Lseg 采用相同的格式。
总损失是所有三个损失的加权和:
其中,λ1、λ2、λ3分别设置为1、0.1、0.75。
总结
本文介绍了一种新颖的基于曲线参数的RGB图像车道检测方法。与最先进的基于分段和基于点检测的方法通常需要启发式方法来解码预测或制定大量锚点不同,基于曲线的方法可以自然地学习整体车道表示。为了解决现有多项式曲线方法的优化困难,这里是利用参数贝塞尔曲线,因为它易于计算、稳定且变换自由度高。同时,利用驾驶场景中车道的对称性,可以实现基于可变形卷积的特征翻转融合。
本算法在 TuSimple 和 CULane 数据集上实现了相对准确的检测效果,且检测效率低延迟 (>150 FPS) 和检测模型大小适中 (<10M)。该方法可以作为新的baseline,以对车道检测的参数曲线进行有效建模。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理