基于特征关联的车道线检测算法
2023-12-30王朝京刘国豪边浩毅
王朝京 , 刘 彪 , 刘国豪 , 边浩毅
(1.北京交通大学 电气工程学院,北京 100044;2.中国能源建设集团山西省电力勘测设计院有限公司,太原 030000;3.浙江机电职业技术学院 智慧交通学院,杭州 310053)
随着智能化技术在汽车行业的不断发展,自动驾驶和辅助驾驶系统已经成为汽车工程领域的前沿研究方向.自动驾驶技术代表未来驾驶的发展趋势,可以提高行车安全性、舒适性和能源效率.车道线检测任务在自动驾驶感知层中扮演着关键的角色,它不仅是实现车道偏离预警和自动巡航等自动驾驶功能的基础,还直接关系到车辆在复杂交通环境中的安全性和稳定性.
传统车道线检测算法主要有基于模型的检测算法和基于特征的检测算法.基于模型的检测算法需要人工根据先验知识对车道线进行建模.Assidig等[1]利用多条车道线之间的约束关系提出一种双曲线模型,该算法对于弯道具有较好的检测能力,但对于遮挡和光线变化较为敏感,抗干扰能力差.隋靓等[2]利用车道线连续的特点,基于二次模型提出一种适用于高速路场景的车道线检测算法,算法通过高斯拉普拉斯算子对图像中的感兴趣区域进行滤波,然后通过霍夫变换进行车道线提取,算法会对感兴趣区域进行动态调整,降低了搜索难度,提高了检测精度.基于特征的车道线检测算法,通常利用车道线与背景的强反差进行检测,常用的特征有颜色、梯度和梯度方向等.Son 等[3]提出了一种三段式的车道线检测算法,该算法首先使用自适应阈值提取图像中的强车道特征,然后利用车道边缘角度和车道历史曲率对提取到的特征进行滤波,最后使用卡尔曼滤波进行车道跟踪,进而减小误检概率.Yoo 等[4]提出一种基于边缘梯度的车道线检测算法,该算法通过对图像分析产生最优权重将彩色图片转化为灰度图,然后使用边缘梯度信息提取车道线,但这种方法对于光照较为敏感,因此不适用于光线条件复杂的雨天等情况.总体来说,传统车道线检测算法往往需要针对不同场景进行人工调参,鲁棒性差,难以胜任复杂场景下的车道线检测任务.
随着计算机硬件算力的不断提升,深度学习快速发展.与传统方法相比,深度学习能够更好地实现车道和车辆检测[5].Neven 等[6]设计了2 个神经网络用于车道线检测,其中一个用于车道线实例分割,另一个用于产生坐标变换矩阵,该矩阵将车道线映射到鸟瞰视角进行拟合,2 个网络的配合提高了检测结果的精度.Qin 等[7]对图片进行了网格划分,将车道线检测问题转化为网格中存在车道线概率的问题,简化了网络任务,提高了检测速度,但是该方法在检测准确率方面表现并不突出.Garnett 等[8]建立了三维数据集,并提出了一种可从图像中直接还原出三维车道线的卷积网络,但是三维数据集的制作难度较高,无法覆盖大量真实场景.
在车道线检测任务中,由于车道线具有形状细长、易老化破损和被遮挡等特点,传统的卷积神经网络的检测结果并不是十分理想.人类可以利用车道线细长的结构特点,根据车道线未被遮挡的部分推理出整条车道线的位置.为使神经网络也具备这种基于上下文的推理能力,Pan 等[9]将空间卷积神经网络(Spatial Convolutional Neural Networks,SCNN)应用到车道线检测领域.SCNN 能够有效地在特征图的不同行列之间进行信息传递,使上下文信息充分融合,提高网络对车道线的推理能力.但是空间卷积模块的推理过程类似于循环神经网络(Recurrent Neural Network,RNN),迭代计算量大,影响神经网络的实时性.
综上所述,针对空间卷积模块计算量大、实时性不佳的缺点,本文提出一种基于交叉卷积的特征关联机制,利用2 次交叉卷积操作,使单个特征点与全局特征建立关联,实现特征图中信息的空间传递,增强网络的推理能力.在特征关联模块的基础上,设计搭建了编码器解码器结构的交叉卷积网络(Cross Convolution Network,C-Net)并应用于车道线检测.最后,将本文提出的网络与其他车道线检测网络在Tusimple 数据集上进行对比实验.
1 基于特征关联的车道线检测网络
1.1 网络结构设计
在对图像进行特征提取的过程中,随着网络深度的增加,特征图中保留的边缘信息越来越少,影响网络的分割效果.U-Net[10]网络提出的U 形网络结构很好地解决了上述问题,U-Net 在上采样过程中通过融合浅层特征图的方式,对深层特征图中的边缘信息进行补充,提高了网络的实例分割效果.因此,C-Net 在上采样过程中也使用跨越连接的方式将编码器中浅层的特征图传入解码器,然后通过拼接的方法进行特征融合,最后对融合后的特征图进行上采样将其恢复到输入图片的分辨率.
C-Net 的结构如图1 所示,由编码器、特征关联模块和解码器3 部分组成.编码器是网络主要的特征提取器,可以对图像的低级局域特征值进行归类与分析,从而获得高阶语义信息.C-Net 的编码器采用结构简单且轻量的VGG-16[11].
图1 C-Net 网络结构Fig.1 Structure of C-Net
解码器的主要任务是对编码器下采样得到的特征图上采样,使其达到检测所需的分辨率. C-Net 的解码器由5 个双通道上采样模块串联组成.双通道上采样模块结构如图2 所示,主分支通过卷积核为3×3、步长为2 的转置卷积对特征图进行2 倍上采样,然后由卷积核为3×1 和1×3 的卷积对特征图进行解析.次分支使用卷积核为1×1 的卷积调整通道数,然后使用上采样将特征图放大,与另一分支结果相加得到双通道上采样模块输出结果.
图2 双通道上采样模块Fig.2 Structure of dual-channel up-sampled module
1.2 特征关联模块
一维卷积的本质是对特征图中沿卷积方向的每个特征值进行加权求和,因此每个一维卷积可以使特征图中的信息沿该卷积方向进行流动.交叉卷积的结构如图3 所示,由3 个不同方向的一维卷积构成,特征图中的信息沿红色箭头方向进行传递,从而每个特征点都能够收集到不同方向的特征信息.
图3 交叉卷积的结构和工作原理Fig.3 Structure and working principle of cross convolution
假设输入交叉卷积的特征图为C×H×W,交叉卷积式为
式中:C、H、W分别表示输入特征图的通道数、高度、宽度;On-1表示输入特征图;On表示输出特征图;On-1(x,y)表示输入特征图(x,y)处的特征值;KC、KH、KW分别表示通道为C、H、W的一维卷积核;⊗表示卷积操作;OnC、OnH和OnW分别表示输入特征图C、H、W三个维度的一维卷积结果.
由式(1)和图3 可知,在单次交叉卷积输出的特征图中每个特征点都融合了3 个方向的特征信息,但仅融合3 个方向的特征信息无法将单个特征点与全局特征建立起关联.为解决这一问题,本文提出基于交叉卷积的特征关联机制,即将2 个交叉卷积串联组成特征关联模块.第一次交叉卷积使每个特征点融合深度、高度和宽度方向的特征信息.第二次交叉卷积将已经包含了3 个方向特征信息的特征进行再次融合,将信息融合的范围扩大到特征图全局.全局的特征融合可以使每个特征点接收到上下文信息,有利于网络对图像中空间信息的理解,提高网络对于车道线的推理能力.
2 实验测试
2.1 实验配置与数据集准备
实验在搭载有单张NVIDIA GeForce RTX 3090 显卡的主机上进行,使用pytorch1.7.1 深度学习框架.设置输入分辨率为512×256、优化器为SGD、总迭代次数为150 轮、迭代批量大小为8、最大学习率为0.02.
在数据集方面,采用Tusimple 数据集[12]对网络进行训练.该数据集由Tusimple 自动驾驶公司发布,包含训练图片3 626 张,测试图片2 782 张,被广泛应用于训练和验证车道线检测算法.
2.2 对比实验
本文采用Tusimple 官方提供的评估方法进行评测.该方法首先将检测到的车道线实例转化为沿y轴等间隔分布的点集,然后与标签中的点集作差,如果差值小于规定的阈值则认为检测正确,否则认为检测错误.检测准确率ACC 的计算式为
式中:Ptrue是表示检测正确的点数;a表示标签中全部点的数量.
如果同一条车道线有超过一定数量的点被判为检测错误,则认为没有检测到该条车道线;而当检测到的车道线数量超过真实车道线数量时,与标签最不匹配的车道线被认为是误检车道线.为了对误检与漏检进行评估,Tusimple 引入FP、FN 指标,分别表示误检率和漏检率,计算式为
式中:Fpre表示误检车道线数量;Npre表示检测到的车道线总数量;Lpre表示漏检车道线数量;Ngt表示真实车道线总数量.
2.2.1 交叉卷积数量对比实验
为了对2 个交叉卷积组成的特征关联模块的有效性进行验证,分析交叉卷积数量对网络中信息融合的影响,分别采用不同数量的交叉卷积组成特征关联模块进行对比实验.对比实验使用Tusimple 数据集的评价指标,结果如表1 所示.
表1 不同数量交叉卷积对比结果Tab.1 Comparison results of cross convolution with different numbers%
由表1 可知,相较于无交叉卷积的网络,增加交叉卷积的网络在误检率、漏检率和准确率上均有改进.通过单次交叉卷积,特征点在深度、高度和宽度方向上完成信息融合,检测准确率比无交叉卷积时增加1.28%,误检率和漏检率也分别降低3.35%、4.17%.第2 次交叉卷积在单次交叉卷积的基础上使得特征点与特征图全局完成融合,准确率较单次交叉卷积结果增加0.25%,误检率、漏检率分别降低0.81%、0.58%.此时,特征关联模块中的单个特征点已完成与全局特征的信息融合,当继续增加交叉卷积时,网络的准确率不再有显著增长.采用4 个交叉卷积和6 个交叉卷积得到的准确率,与采用2 个交叉卷积得到的准确率相比,变化值均在0.04%左右,能够证明采用2 个交叉卷积作为特征关联模块的有效性和合理性.
2.2.2 车道线检测算法对比实验
为了对C-Net 的有效性进行验证,将评测结果与几种经典的车道线检测算法进行对比,对比结果如表2 所示.
表2 不同算法的测试结果Tab.2 Test results of different algorithms %
由表2 可知,C-Net 在数据集上获得了96.52%的准确率、5.88%的误检率和2.96%的漏检率.与SCNN 相比,准确率低0.01%,漏检率高1.16%,但误检率低0.29%.
使用GPU 预热1 000 次后,分别对C-Net的特征关联模块与SCNN 的空间卷积模块进行计算,输入均采用VGG-16 主干网络输出的特征层.计算可知,特征关联模块用时1.23 ms、权重为2.01 M;空间卷积模块用时13.79 ms、权重为36 M.
综合来看,所提车道线检测算法具有较低的误检、漏检率和较高的准确率,且使用的网络参数更少,在网络推理过程中速度更快.证明C-Net 在车道线检测方面具有良好的检测能力和更高的计算效率.
2.2.3 特征关联模块消融实验
为了进一步验证特征关联模块的有效性和泛化能力,分别采用不同的编码器结构进行消融实验.实验结果如表3 所示.
由表3 可知,在编码器结构不同的情况下,增加特征关联模块的网络在误检率、漏检率和准确率方面均有改进.以采用VGG-16 编码器结构为例,网络增加特征关联模块后,误检率、漏检率分别降低4.16%、4.75%,准确率提高1.53%.因此,本文提出的特征关联模块在不同的网络结构下,都有助于提高网络的推理能力,使网络具备良好的泛化能力.
为了更直观地展现特征关联模块对检测结果的影响,图4 展示了采用特征关联模块和未采用特征关联模块的车道线检测结果.
图4 车道线检测可视化效果Fig.4 Visualization of lane detection
图4 中,从左至右分别为场景1~场景4,依次表示正常、车道线被遮挡、车辆密集和存在阴影的道路场景.在场景1 中,道路环境良好,采用特征关联模块和未采用特征关联模块均具有较好的检测结果.在场景2 和场景3 中,由于车辆物体对车道线存在遮挡,在未采用特征关联模块时,会造成识别出的车道线出现缺失和不连续等情况,而采用特征关联模块的网络能够根据车道线的部分特征对被遮挡部分进行推理,识别出的车道线更加完整.在场景4 中,由于存在阴影,路面产生较大的明暗变化,导致同一条车道线在不同位置存在较大的差异.此时未采用特征关联模块的检测结果中存在大量车道线的误判,而采用特征关联模块后的检测结果中消除了误判的车道线,并且得到的车道线检测结果更加准确.综上,本文所提出的特征关联机制具有较强的抗干扰能力.
3 结论
1)针对车道线细长且易被遮挡等特点,提出基于2 次交叉卷积的特征关联模块,通过多维度的卷积将不同行列之间的信息进行传递,提高了网络对于车道线的推理能力.
2)结合特征关联模块,设计基于编码器解码器结构的交叉卷积网络C-Net,在具有较少参数、较快推理速度的同时具备良好的车道线检测能力.
3)采用不同编码器结构针对特征关联模块进行消融实验,实验结果证明在不同的网络结构下,特征关联模块的加入都能改进检测结果.