1. 引言
随着自动驾驶技术的蓬勃发展,车道线检测已经被广泛应用于车辆辅助驾驶及自动驾驶环境感知模块中。快速且准确的进行车道线检测是保障车辆安全行驶的前提。在当前的研究中,视觉传感器被广泛采用来检测车道线,主要是因为在道路图像中,车道线的视觉特征较为明显,并且相较于GPS和激光雷达,视觉传感器具有价格低、鲁棒性好等优势。然而,车道线在实际路况中的形状、颜色呈现多样性,并且车辆行人的遮挡、车道线使用时间过长出现的磨损、天气因素等等都会影响车道线的连续性。因此,如何提高车道线检测的准确性和实时性是自动驾驶领域亟待解决的问题。为了解决这些问题,我们需要研究如何处理车道线的多样性,并且探索如何在保障实时性的前提下提高车道线检测的精确度。
目前,车道线检测可分为基于传统图像处理的方法和基于深度学习的方法。传统图像处理方法大多是基于人工特征提取,并采用直曲线模型来拟合车道线。Chao Ma等人 [1] 提出了一种基于CIELab颜色特征聚类的车道线检测算法,该算法通过颜色聚类识别车道线,依据道路的几何特征,采用二次曲线来匹配车道。段建民等人 [2] 提出了一种改进的顺序随机抽样一致性(RANSAC)的车道线检测算法,采用改进简单图像统计(SIS)阈值算法对图像进行二值化处理,构建车道线模型后利用改进的顺序RANSAC算法拟合车道线,最后进行模型配对确定车道线。吴彦文等人 [3] 提出了一种基于视觉传感器与高精度地图相融合的车道线检测与跟踪方法,首先采用改进的霍夫变换提取边缘线段,其次根据滤波预测更新车道线模型状态参数,最后结合高精度地图中车道线先验模型参数跟踪车道线轨迹。虽然这些方法取得了一定的成果,但存在过度依赖人工提取的特征、检测精度低、环境适应性差等问题。为了克服这些问题,具有强大建模能力和特征学习能力的深度学习方法成为国内外学者研究的重点内容。在深度学习方法中,Kim等人 [4] 提出了一种基于CNN的车道线检测算法,利用CNN提取图像中的特征信息,采用聚类等后处理的方式获得车道线检测的输出结果。Li等人 [5] 将CNN和循环神经网络(RNN)相结合,利用CNN提取每帧图像中的特征信息,并将其输入到RNN中进行车道线的预测。为了提高车道线的检测速度,Qin等人 [6] 提出了一种超快的车道线检测(UFLD)方法,将车道线检测过程视为基于行的选择分类问题,大大提高了网络模型推理速度。然而,由于不同于以往逐像素点的分类,基于行的分类方法对原始图像进行特征提取时会丢失细节信息,导致检测精度欠佳。为了克服检测精度欠佳的问题,Neven [7] 等人提出了一种端到端的LaneNet模型,以逐像素的方式检测是否属于车道线。Sun等人 [8] 提出了多孔卷积和空间金字塔相结合的方法来提高车道线检测精度。Liu等人 [9] 提出使用Transformer捕获车道线中细长车道线特征和全局特征,并采用多项式参数模型来描述车道线,实现端到端训练的同时降低了计算量。
针对基于CNN的车道线检测方法存在网络推理速度慢和对细长车道线结构建模能力不佳的问题,提出一种基于ResNet-ViT和注意力机制的车道线检测方法,该方法首先结合ResNet [10] 和ViT [11] 的编码模块来进行特征提取,学习图像全局特征并细化局部特征,从而减少细节信息的丢失,获得更丰富的特征表示。其次,构建一个通道注意力模块,可以识别不同通道之间的特征差异,并增强模型对车道线细节信息的关注度。最后,采用行锚分类的思想,以网格化行方向位置选择替代了以往的像素级分类,从而提高模型的检测速度,满足实时性的要求。
2. 车道线检测算法设计
本文旨在提出一种同时满足车道线检测实时性和检测精度要求的方法。UFLD方法采用ResNet进行特征提取,并提出行分类的车道线检测思想,提高了车道线检测任务的实时性;而ViT网络模型能够对不同尺寸和分辨率的输入图像进行处理。根据文献DETR [12] 的研究结果得出两者的结合可以较好地适应图像分类任务。因此,本文提出一种基于ResNet-ViT和注意力机制的车道线检测方法。该方法的网络模型整体框架由特征提取网络、辅助分割网络和分类网络三部分组成,如图1所示:
Figure 1. Overall framework of network model
图1. 网络模型整体框架
2.1. ResNet-ViT特征提取网络
在进行特征提取前会对图像数据进行预处理,原始图像尺寸为[3, 720, 1280],表示图像的通道数为3、高为720、宽为1280。考虑到模型下采样率和降低计算量的要求,将原始图像的尺寸统一缩小为[3, 288, 800]来做标签图像,以图像左上角为原点,沿着图像垂直方向从上往下每隔4个像素点采样一个点,共56个采样点,确定56个行锚(Row Anchor)。每一个row anchor上划分100个网格,将图像的宽映射到100个网格中,得到100个网格中真实标签所处的位置。另外采用旋转、垂直和水平位移来进行数据增强,旨在提高模型的泛化能力。
本文提出的ResNet-ViT特征提取网络主要表现为将ViT网络模型的编码部分嵌入到ResNet网络的输出之后,用以提取更丰富的车道线细节特征,生成特征图。输入至特征提取网络的图像尺寸为[3, 288, 800],ResNet网络的第一层为卷积层,使用64个大小为7 × 7的卷积核进行卷积操作,输出尺寸为[64, 144, 400];接下来,使用最大池化层将特征图的维度缩减至[64, 72, 200],以减少计算量;然后,特征图被送入4个堆叠的残差块(Residual Block, Rb),在网络模型整体框架中分别为Rb1、Rb2、Rb3、Rb4,每个Rb包括两个卷积层和一个跳跃连接,跳跃连接将输入直接加到残差块的输入上。这些残差块不断对特征图像进行下采样,缩减其尺寸并逐渐提高通道数,最终特征图的输出尺寸为[512, 9, 25],这些特征图旨在对图像中车道线进行初步特征提取,并作为后续ViT编码模块的输入。
ViT是将Transformer [13] 在NLP领域的思想成功运用至图像分类任务上,证明了Transformer可以应用于机器视觉领域。ViT论文中,作者通过实验证明ResNet + ViT的融合模型在所有数据单次迭代次数较少的情况下,图像分类的实验效果比纯ResNet或纯ViT模型的效果好。本文的车道线是一种基于行方向的位置分类,本质也是分类问题。所以,在特征提取网络ResNet后引入ViT的编码模块,旨在捕获图像全局信息,提取更加丰富的车道线特征,进而提高车道线位置分类的精度。ViT的编码模块对特征图的处理如图2所示:
Figure 2. Processing of feature maps by ViT encoding module
图2. ViT编码模块对特征图的处理
ResNet网络输出的特征图为[512, 9, 25]的三维矩阵,而ViT中编码模块要求输入的是向量序列,即二维矩阵[num_token, token_dim],token是特征图被划分出来的块的向量表示,token_dim表示每个token的向量维度。所以需要先通过Embedding层对图像数据进行变换。首先,对尺寸为[512, 9, 25]的特征图进行分块处理,使用15个大小为3 × 5的卷积核进行卷积操作,将特征图划分成15个图像块,每个图像块的大小为3 × 5。其次,将每个图像块视为一张小图像,并展平为一个向量,这个向量即为ViT中编码部分的一个token,共15个token,每个token向量的长度为15;将这些向量拼接成一个序列,作为ViT中编码模块的输入。设定超参数token_dim为100,表示进行101分类,则输入序列为[15, 100]。在输入序列的前面需要添加一个特殊的token,表示整个序列的起始位置。参考Devlin等人 [14] 的标记方式,拼接一个长度为100的可训练参数class token,其大小为[1, 100],拼接后得到的矩阵大小为[16, 100],即得到16个token,每个token向量维度为100。在序列中的每一个token向量前,需要添加一个位置编码向量,旨在让模型知道每个token在原始图像中的位置。使用标准可训练的1D位置编码,因为是直接叠加在token上的,所以其大小也为[16, 100],将生成的位置编码矩阵与输入张量相加得到新的嵌入向量,输入至ViT的编码模块。
图2中ViT的编码模块主要由归一化(Norm)、多头注意力机制(Multi-Head Attention)和分类层(MLP)组成。Norm对输入数据进行归一化,以提高训练稳定性和可靠性。Multi-Head Attention是基于自注意力机制的结构,可以在不同的图像区域中学习并捕捉关键的特征信息。MLP作为分类层,预测最终车道线的位置坐标。ViT编码模块中自注意力机制可以用来学习输入特征图中不同像素之间的关联性,以便更好地检测车道线。自注意力机制的公式如下式(1),式(2)所示:
(1)
(2)
式中:
为输入特征矩阵,
分别为查询矩阵、键矩阵、值矩阵,
、
、
为可学习的超参数矩阵。
在车道线检测任务中,首先需要将输入特征矩阵转换成查询矩阵、键矩阵和值矩阵。可以通过使用三个不同的可学习矩阵分别与输入特征矩阵相乘来实现。接下来,需要计算图像中每个位置与其他所有位置的相似度,并使用这些相似度来计算注意力权重。这里使用的相似度度量方式是点积注意力(Dot-Product Attention),计算每个查询向量与所有键向量之间的注意力分数,然后对每个查询向量的注意力分数进行归一化,得到注意力权重向量。最后,将注意力权重向量与值矩阵相乘,得到一个新的值矩阵,表示对每个查询向量的注意力池化结果。通过自注意力机制的计算,ViT编码模块可以捕捉到输入特征图中的局部和全局的关联性,从而提高车道线检测的性能。
Multi-Head Attention的作用是将输入特征图分别投影到不同的子空间中,从而增强特征表示的多样性。具体来说,将查询矩阵、键矩阵和值矩阵分别经过h个不同的线性变换,得到h组新的查询矩阵、键矩阵和值矩阵,然后对每组查询矩阵、键矩阵和值矩阵分别进行自注意力机制的计算。最后,将h个注意力头的输出结果拼接在一起,并经过一个线性变换得到最终的输出矩阵。Multi-Head Attention可以学习到不同类型的特征之间的关系,例如车道线的形状、纹理等,帮助模型更好地识别车道线。其计算公式如下式(3)、式(4)所示:
(3)
(4)
式中,
分别代表对第i个自注意机制的
进行线性变换的矩阵,h表示自注意力的个数,
表示多头注意力的权重矩阵。
2.2. 基于注意力机制的辅助分割网络
在Vgg [14] 等分类网络中加入注意力机制,分类效果会有明显的提升。在Faster-RCNN [15] 等目标检测网络中加入注意力机制时,其目标检测效果也会提升。因此本文尝试在车道线分割网络中加入注意力模块,以增强网络的车道线特征提取能力。本文引入辅助分割网络。在该网络中采用通道注意力机制 [16] ,旨在提高网络对各通道特征图上车道线细节的关注度,从而训练得到更加优秀的网络模型。通道注意力机制可以赋予每个通道不同的权重,建立起特征图通道间的相互关系,从而增强网络判断重要特征通道的能力。下面给出通道注意力机制的作用原理,其结构图如图3所示:
Figure 3. Structure of channel attention mechanism
图3. 通道注意力机制结构图
如图3所示,输入通道注意力模块的特征图为
,其中
和
分别表示输入特征图的高和宽,
表示输入特征图的通道数。我们首先使用平均池化和最大池化操作将
转换为平均池化特征S1和最大池化特征S2,S1和S2的尺寸为1*1*C。然后,将这两个输出特征送到一个多层感知器(MLP)中,MLP由全连接层FC1、FC2和ReLU非线性激活函数组成,以融合所有通道特征,得到两个一维特征向量。最后,我们使用逐元素求和将这两个特征向量进行合并,并使用Sigmoid函数对它们进行归一化处理,从而得到各通道的权重值
。通道注意力机制的计算方式如下式(5)所示:
(5)
式中:
表示Sigmoid函数,
表示输入特征图
的第
通道中坐标为
点的像素值。
2.3. 分类网络
本文采用UFLD的行锚分类思想,将车道线视为逐行分类问题。如图4所示,在图上划分若干个网格单元,车道线检测问题变成在每行上寻找特定网格的问题。
假定在图像上预定义了h个行,在每一行上划分了w个网格,待检测的车道线数量为C条,X表示图像的全局特征,
表示第i条车道线在第j行的位置分类器。那么,车道线的预测公式可表示为式(6)所示:
(6)
经过特征提取网络处理后,得到了饱含车道线细节的特征图。这些特征图输入到全连接层,输出分类张量。然后,将分类张量重构为C通道的特征图,每个通道的特征图分成h行,并在每一行上进行切分,形成w个网格。在每一行的最后增加一个网格单元,代表对应的行中不存在车道线。最后,使用SoftMax分类算法,得到一行中每个网格为车道线的概率。接下来,对每行的网格单元概率求期望,计算出车道点的横坐标。这个过程的概率及期望公式如下式(7)、式(8)所示:
(7)
(8)
式中:
表示第i条车道线出现在第j行、第l列网格单元上的概率;
表示对行锚中各单元概率求期望后得到的车道点横坐标。
2.4. 损失函数
本文将每条车道线都看作是在不同行上进行分类的问题,因此分类损失函数求的是每条车道线在预定义的行中的预测位置与真实位置的独热编码的交叉熵之和。假设需要检测的车道线数量为C,预定义的行数量为h。使用损失函数
来表示第h个行第C条车道线交叉熵的损失。假设第i条车道线在第j行的标签为
,如果判断图中有车道线则
为1,如果没有则为0,假设模型的预测值为
,那么车道线的分类损失可表示为式(9)中的交叉熵损失函数。通过最小化这个损失函数,可以训练出能够准确检测车道线的行锚分类网络模型。
(9)
另外,辅助分支使用交叉熵作为辅助分割损失,可以有效地提高车道线像素识别的精度。最终的损失函数是分类损失和分割损失的加权平均,其中分类损失是每条车道线在预定义的行中的预测位置与真实位置的独热编码的交叉熵之和,分割损失则是使用注意力机制得到的辅助分支的交叉熵损失
,
、
为损失系数,总损失计算公式如式(10)所示:
(10)
3. 实验与讨论
3.1. 实验数据集
本文采用TuSimple数据集 [17] 来验证所提出的车道线检测方法的性能。TuSimple数据集是当下最广泛应用于车道线检测的数据集之一,它包含3268张训练图片、358张验证图片和2782张测试图片。这些图片在不同的天气和交通状况下拍摄,以尽可能模拟真实的驾驶环境。
3.2. 评价指标
为便于同其他车道线检测方法进行对比分析,本文采用官方提供的评价标准:准确率(Acc)、假阳性率(FP)和假阴性率(FN)。计算方式如下式(11)、(12)、(13)所示:
准确率(Acc):
(11)
假阳性率(FP):
(12)
假阴性率(FN):
(13)
式中:
是预测正确的车道线点数,
是车道线真实的点数;
是预测错误的车道点数量,
是预测正确的车道点数量;
是未被预测到的真实车道点数量,
是真实的车道点数量。
此外,由于本文设计了在训练阶段使用的辅助分割网络,那么交并比(IoU)也是一个重要的评估指标。IoU值越高,表示预测结果与真实标注越接近,训练出的模型性能越好。
3.3. 实验环境与设置
本文的实验环境包括Ubuntu操作系统,NVIDIA TITAN Xp显卡。我们使用Python3.7语言以及pytorch深度学习框架来构建网络模型。为了增加训练数据的多样性,我们对原始图像进行了裁剪、旋转和平移等数据增强操作。在模型训练过程中,我们使用了Adam优化器,学习率为4e−4,学习率衰减方式采用cosine方式,权重衰减系数为1e−4,动量因子为0.9。
3.4. 实验结果分析
3.4.1. 定量评估
为了充分评估本文提出的方法对车道线检测的有效性,并将其与近年来提出的SCNN [18] 、VGG-LaneNet [19] 、LaneNet [20] 、PolyLaneNet [21] 、PointLaneNet [22] 和UFLD方法进行比较,我们进行了一系列的实验并在Tusimple数据集上进行了定量分析,评估结果如下表1所示。
该表格展示了几种不同车道线检测方法在TuSimple数据集上的性能指标,包括准确率(Acc)、误检率(FP)、漏检率(FN)、每秒处理帧数(FPS)和平均交并比(mIoU)。可以看出,本文提出的方法在准确率和
Table 1. Comparison results with other methods on Tusimple dataset
表1. 与其他方法在Tusimple数据集上的比较结果
注意:表中的N/A表示相关论文未提及该指标。
漏检率方面表现良好,达到了96.04%和3.87%的结果,但误检率较高,达到了13.8%。相较之下,SCNN方法因其使用了复杂的后处理,所以在误检率和漏检率方面表现出色,达到了6.17%和1.80%的结果,但推理速度较慢,只有7.5帧/秒。PointLaneNet方法可以直接得到车道线点的坐标,更加契合Tusimple数据集的评估方式,因此本文方法在准确率上略差于PointLaneNet。其他方法的表现情况各有所长,例如UFLD方法的误检率较高,但推理速度很快,达到了144帧/秒。总的来说,本文的方法在检测精度和速度方面展现了更综合的优势。
3.4.2. 消融实验
为验证本文所提方法中不同模块的有效性,本小节对各模块进行拆解,以UFLD为基础模型,实验设置相同的情况下在Tusimple数据集上进行对比实验,其结果如下表2所示。
Table 2. Quantitative results of the proposed module
表2. 所提模块的定量结果
注意:IoU指标是辅助分割网络参与训练时的交并比。
通过消融实验结果的分析,可以发现在基础模型上添加注意力机制和ViT编码模块可以明显提高模型的准确率和交并比,相比其他组合方式更具优势。具体来说,将注意力机制添加到基础模型中,可以显著提高模型的IoU指标,相比其他组合方式提高了五个百分点。这是由于注意力机制可以让模型更加关注重要的车道线部分,进而提高模型的准确率。而ViT编码模块可以更好地捕捉车道线之间的关系,将其添加到模型中可以进一步提高检测准确率,最终达到了96.02%的准确率。在基础模型中同时添加注意力机制和ViT编码模块,可以使模型达到最佳的性能表现,准确率和IoU分别达到96.04%和93.80%。总体来看,随着模型中添加的复杂结构越来越多,准确率和交并比逐步提高,但帧率也会随之下降。
3.4.3. 可视化评估
本文方法是基于UFLD方法改进的,所以本文主要与UFLD方法进行可视化结果对比。数据均采用Tusimple数据集中的图片,对比结果如图5所示。
Figure 5. Comparison of visualization results between the proposed method and the UFLD method. (a) UFLD results; (b) Results of our method
图5. 本文方法和UFLD方法的可视化结果比较。(a) UFLD结果;(b) 本文结果
图5展示了本文方法与UFLD方法的检测效果对比。结果显示,UFLD方法对于车道线细节部分的处理效果不佳。在图5(a)第一幅图像中,UFLD方法出现了误检情况,将路面边缘错误地标记为车道线;第二幅图像由于最右侧车道线的不明显,UFLD方法出现了漏检情况;图5(a)中第三幅图像显示车道线检测点在远端出现了偏移。相比之下,本文提出的方法在图5(b)中的检测结果未出现误检或漏检情况,并且在远端车道线检测方面表现良好。
图6显示了本文方法在Tusimple数据集上的一些经典场景下生成的视觉结果。这些场景包括遮挡、多车道、曲线等情况。可以看出,本文方法在各种情况下均表现良好。
Figure 6. This paper method produces visual results on the Tusimple dataset
图6. 本文方法在Tusimple数据集上生成的视觉结果
4. 结论
本文提出一种基于ResNet-ViT和注意力机制的车道线检测方法,旨在提高车道线检测的准确性和稳定性。该方法在特征提取阶段和辅助分割网络中分别引入ViT编码模块和通道注意力机制,以优化车道线检测的性能。实验结果表明,在ResNet的基础上引入ViT编码模块,能够显著提高网络的特征提取能力,进而提高车道线检测的精度。此外,本文在辅助分割网络中加入通道注意力机制,可以明显提高IoU值,增强车道线像素分割能力。在Tusimple数据集上的定量和可视化评估中,本文所提出的方法具有一定的优势。
基金项目
国家自然科学基金61374197。