刘 彬,魏为民
(上海电力大学 计算机科学与技术学院,上海 201306)
车道线检测是自动驾驶的基础技术之一,其检测的准确率和效率直接影响着自动驾驶的性能。车道线检测技术作为当前自动驾驶[1]领域尚未完全解决的问题之一,仍然具有较高的难度和挑战性。
目前对车道线检测的研究主要分为两种,分别是基于传统的图像处理方法和基于深度学习的方法。
传统的图像处理方法[2-4]往往通过Canny边缘检测、Hough变换、最小二乘法等技术拟合出车道线,该方法具有实时性强、准确率高的特点。但对于能见度较低的路况,比如雨雪天气,其检测准确率将大大下降。
对于基于图像分割的方法,PINet[5]模型提出了在车道线检测时基于关键点信息,从而实现使用较少的参数便可以检测不同数量,不同方向的车道线;HOU等[6]提出自注意力蒸馏算法(Self Attention Distillation, SAD),该使用语义分割及知识蒸馏的方式,增强了卷积神经网络的特征表达能力,从而使分割效果得到了大幅提升;胡序洋等[7]提出了基于LaneSegNet网络的检测方法,其综合使用了基于编解码的原理构建Lane-Net、多尺度空洞卷积和混合注意力机制实现了对车道线的提取;何春明等[8]提出了空间卷积神经网络(Spa- tial CNN, SCNN)模型,基于模糊熵的灰度局部熵(Gray Level and Local Entropy, GLLE)熵阈值分割方法,相较于传统的图像分割方法,该方法得到更加准确的阈值,提高了分割精度。这类基于图像分割的方法在检测准确度上有着明显的优势,但是在车道线提取速度上很难达到要求(+30 FPS)。
车道线检测速度慢、精度差是目前以深度学习为基础的车道线检测方法普遍存在的问题。针对这些问题,本文新提出了LaneBezierNet,一种端到端的车道标线检测的卷积神经网络。如图1所示,该算法从安装在车辆前端的摄像头得到图像后,经过LaneBezierNet直接输出表示图像中每条车道线的贝塞尔曲线控制点,不需要任何后处理来进行车道估计。
图1 LaneBezierNet工作流程
本文中使用3阶贝塞尔曲线作为回归方程式,如图2所示,获取图像后先对图像进行数据增强,然后将处理后的数据作为主干网络的输入,并在主干网络后加入一层全连接层,全连接层的输出包含了贝塞尔曲线的控制点坐标,通过这些控制点的坐标信息便可得到整条车道线的数据。LUCAS等[9]提出的基于多项式回归的方法,将每条车道线看作一条3阶或更高阶的多项式,比如y=ax3+bx2+cx+d。但是对于一些曲率较大的道路并不能很好地找到一条多项式曲线与之对应。本文则是将每条车道线视为一条贝塞尔曲线,实验结果表明3阶贝塞尔曲线便可准确的描述各类车道线信息。
图2 LaneBezierNet算法流程图
为了提高算法的泛化能力,本方法在将图像传给主干网络之前加入了数据增强模块,其中包括10°的随机旋转、随机水平翻转和随机裁剪,如图3所示。
图3 数据增强
贝塞尔曲线是一种被大量应用于图形绘制的曲线。该曲线是由节点、节点与节点之间的线段组成,使用它可以精确地绘制出任何想要的曲线。下面以三级贝塞尔曲线为例,具体介绍如何通过控制点绘制出对应的贝塞尔曲线,如图4所示。
图4 贝塞尔曲线
贝塞尔曲线依据四个坐标点P0、P1、P2、P3来控制生成的一条曲线,其中P0为起始点,P3为终止点,P1和P2为曲率的控制点。
根据贝塞尔曲线方程定义,以t=0.25为例,令P0P1线段的1/4处为点Q0,P1P2线段的1/4处为点Q1,P2P3线段的1/4处为点Q2,连接点Q0和点Q1,并取Q0Q1线段的1/4处为点R0,同样的方法得到R1,连接点R0和点R1,并取R0R1线段的1/4处为点B,B点所在位置即为t=0.25时该贝塞尔曲线对应点的坐标。当t=0时对应坐标点P0,t=1时对应坐标点P3,由此t取[0,1]时,B点滑过的轨迹即为该控制点下的贝塞尔曲线。
本方法分别使用Resnet和EfficientNet作为主干网络。
1.4.1 Resnet
在使用深度神经网络去解计算机视觉相关问题时,研究者往往会堆叠多层卷决积,试图使该网络能够更有效地解决复杂问题。虽然堆叠大量卷积层可以丰富模型的特征,但更深层次的网络可能会退化,即随着卷积层数量的增加,模型的性能可能会降低。
残差网络[10](ResNet)是利用残差块来提高模型的性能。其核心“跳跃连接”(Shortcut Connec- tions)是这种网络的优势所在,如图5右侧从X到⊕的连接部分。图5中,X表示残差块的输入,F(x)为残差块在第二层激活函数之前的输出,即
图5 残差块
式中,w1为第一层的权重;w2为第二层的权重;σ为激活函数ReLU;σ(F(x)+x)为残差块最后的输出。
跳跃连接在两个方面起作用。第一,它们通过为梯度设置另一条捷径,缓解了梯度消失的问题。第二,它们使模型能够学习一个恒等函数(Identity),这确保了模型的高层不会比低层的表现差。因此,跳跃连接使得训练更深的网络成为可能。
1.4.2 EfficientNet
为了提高模型的性能,当得到一个基础模型后,往往都会对模型做适当的缩放,一般的做法有:增加模型的宽度,也就是增加每一个卷积层的通道数;增大模型的深度,将每一个重复的单元增加,比如Resnet34到Resnet101的扩展;增加输入图片的分辨率。模型精度会随着单一的缩放得到提升,但是它会很快就到达饱和状态。
TAN等[11]提出了一种神经网络架构搜索(Neural Architecture Search, NAS)的模型Effi- cientNet。该网络提出了一种全新的模型缩放方法,将输入图片分辨率、宽度及网络深度使用一种既容易计算又运算效率高的系数来进行三者之间的权衡。以EfficientNets模型为基础,通过对其进行放大,从而得到了一系列的EfficientNets模型。由于其综合考虑了三方面的影响,使其无论在准确率还是效率上都超越了之前所有的卷积神经网络(Convolutional Neural Networks, CNN)模型。将它和当时准确率最高的其他模型对比,效率提高了6.1倍的同时,大小也缩小到原来的11.9%。通过迁移学习,EfficientNets在许多知名的开放数据集上都取得了优异的效果。
图6 EfficientNet缩放示意图
LaneBezierNet从前置摄像头中得到输入图像后,为每个图像输出Lmax条车道线(表示为贝塞尔曲线控制点)。LaneBezierNet中包含一个用于提取车道线信息的主干网络,在主干网络之后添加了一个全连接层,共有N个输出,其中N表示式(3)。
式中,n为贝塞尔曲线阶数的参数;P为预测的贝塞尔曲线控制点;St为该条车道线的起始点纵坐标;Hi为该车道线终止点纵坐标,Co为预测的置信度。
LaneBezierNet采用贝塞尔曲线方程表示法而不是一组标记点。而对应的曲线则可通过该网络输出的P表示为
显然,每条车道线的起点坐标的t值为0,终点坐标的t值为1。
LaneBezierNet的输出可以表示为
式中,I为输入图像;θ为超参数,置信度Co≥阈值的车道线被视为有效车道线。
对于单个摄像头的输入图像,假设L为该图像中的带标注的车道线的数量。通常交通场景中车道线的数量满足L≤4。我们将每个带标注的车道标记为j,j=1,...,L。在损失函数中,输出L+ 1,...,Lmax有关的预测将被忽略。对于每个车道标记j,置信度定义为
对于单个图像,使用多任务损失函数进行训练。
式中,Lreg为均方误差(Mean Squared Error, MSE),Lcls为二进制交叉熵(Binary Cross Entropy Loss, BCE)。
实验采用 Windows 系统进行训练及测试,编程语言为Python 3.9,深度学习框架为torch 1.11,服务器图形处理器(Graphics Processing Unit, GPU)为NVIDIA GeForce RTX 3070 Ti 8GB。该方法选择 Adam 优化器对参数进行优化,学习率初始值为3.0e-4,并使用余弦退火变化策略。
为了使本文中提出的LaneBezierNet模型得到充分验证,该实验选取了公开数据集TuSimple进行训练。TuSimple数据集采集了高速公路上的图片,其图片都是在晴好天气下的高质量图片。数据集中包含的测试集、验证集和测试集的具体信息如表1所示。
表1 数据集介绍
用来衡量所提出方法的性能的度量标准分别是准确率(Accuracy, Acc)、假正例(False Positives, FP)率和假反例(False Negatives, FN)率。对于被认为是真正例(即正确)的预测车道标志,其精度定义为
3.4.1 TuSimple数据集对比
在TuSimple数据集上的实验结果如表2所示,其为本文模型和其他模型的对比,可以看出本文模型在保持了较高的准确率同时,每秒传输帧数(Frames Per Second, FPS)达到116的最高水平。
表2 TuSimple数据集上的比较
3.4.2 消融实验
从表3可以看出当使用3阶贝塞尔曲线方程时,检测效果最佳。实验表明2阶时的曲线检测效果不好,而使用4阶及以上时,曲线的自由度太大反而不好控制,从而导致生成的曲线效果更差。
表3 TuSimple数据集上贝塞尔曲线不同阶的比较
如表4所示,EfficientNet-b1达到最高精度,其次是EfficientNet-b0和ResNet-34。这些结果表明,像ResNet-50这样的大型网络可能会过度收集数据。尽管EfficientNet-b1达到了最高的准确度,但它的计算成本更高(更低的帧速率、更高的最大似然比和更长的训练时间)。
本文提出了一种基于贝塞尔曲线回归的车道线检测新方法。与最先进的方法相比,所提出的方法简单有效,在保持有竞争力的准确性的同时,检测效率得到了极大的提升。目前,本文模型检测准确率和泛化能力上还有提升空间,在未来工作中,我们也将从这两个方面提出更有效、灵活的建模方法,进一步提升模型性能。