摘要
现代车道检测方法在复杂的现实场景中取得了显著的性能,但许多方法在保持实时效率方面存在问题,这对自动驾驶车辆非常重要。在这项工作中,我们提出了LaneATT:一种基于锚的深度车道检测模型(an anchor-based deep lane detection model),类似于其他一般的深度对象检测器,使用锚(anchor)进行特征池步骤。由于车道遵循规则模式并高度相关,我们假设在某些情况下,全局信息可能对推断其位置至关重要,尤其是在遮挡、缺少车道标记等情况下。因此,这项工作提出了一种新的基于锚的注意力机制来聚集全局信息。该模型在文献中使用最广泛的三个数据集上进行了广泛评估。结果表明,我们的方法优于当前最先进的方法,显示出更高的效率和效率。此外,还进行了消融研究,并讨论了在实践中有用的效率权衡选项。
1.导言
深度学习对于许多领域的最新进展至关重要,尤其是自动驾驶[2]。自动驾驶汽车中的许多深度学习应用都在其感知系统中。为了在人类周围安全,自动驾驶车辆应感知其周围环境,包括其他车辆和自身的位置。最后,汽车的运动越可预测,乘客和行人就越安全。因此,自动驾驶车辆知道每条车道的准确位置非常重要,这是车道检测系统的目标。
车道检测模型必须克服各种挑战。将在真实场景中使用的模型应能适应多种不利条件,如极端光线和天气条件。此外,车道标记可能被其他物体(如汽车)遮挡,这在自动驾驶汽车中非常常见。一些方法,如多项式回归模型,也可能会遇到由长尾效应引起的数据不平衡问题,因为曲线更尖锐的情况不太常见。此外,该模型不仅要鲁棒,而且要有效。在一些应用中,车道检测必须实时或更快地执行,以节省其他系统的处理能力,这是许多模型难以满足的要求。
文献中有许多作品解决了这个问题。在深度学习出现之前,一些方法使用了更传统的计算机视觉技术,如Hough线[4,1]。最近,随着卷积神经网络(CNN)的发展,重点已转移到深度学习方法[17、11、18]。在这种情况下,车道检测问题通常被表述为分割任务,其中,给定输入图像,输出是具有每像素预测的分割图[17]。尽管深度学习的最新进展使得能够实时使用分段网络[22],但各种模型难以实现实时性能。因此,基于分割的方法的主干选项的数量相当有限。因此,最近的一些工作提出了其他方向的解决方案[13,23]。除此之外,车道检测工作中还存在许多其他常见问题,例如需要后处理步骤(通常是启发式的)、长时间的训练以及缺乏公开可用的源代码,这阻碍了比较和再现性。
在这项工作中,我们提出了一种实时车道检测方法,该方法比最先进的方法更快、更准确。我们提出了一种基于锚的单阶段车道检测模型,称为LaneA TT。它的架构支持使用轻量级主干CNN,同时保持高精度。还提出了一种新的基于锚的注意力机制来聚集全局信息。在三个基准(TuSimple[24]、CULane[17]和LLAMAS[3])上显示了广泛的实验结果,同时与最先进的方法进行了比较,讨论了效率权衡,并对我们的设计选择进行了消融研究。总之,我们的主要贡献是:
•在大型复杂数据集上,车道检测方法比现有最先进的实时方法更准确;
•与大多数其他模型相比,该模型能够实现更快的训练和推理时间(达到250 FPS,与之前的最先进技术相比,乘法累加运算(MAC)几乎少一个数量级)
•一种用于车道检测的新型基于锚的注意力机制,在被检测对象相关的其他领域可能有用
2.相关工作
尽管第一车道检测方法依赖于经典的计算机视觉,但最近的深度学习方法在准确性和效率方面取得了实质性进展。因此,本文献综述集中于深车道检测器。本节首先讨论了基于分段[17、11、29、15]或按行分类[10、20、27]的主要方法,然后从其他方向审查解决方案。最后,讨论了缺乏再现性(车道检测工作中的常见问题)。
基于分割的方法 在这种方法中,基于每个像素进行预测,将每个像素分类为车道或背景。生成分割图后,需要进行后处理步骤将其解码为一组车道。在SCNN[17]中,作者提出了一种专为细长结构设计的方案,并展示了其在车道检测中的有效性。然而,该方法速度慢(7.5fps),这阻碍了其在现实世界中的适用性。由于更大的主干是速度较慢的主要原因之一,作者在[11]中提出了一种自注意力蒸馏(SAD)模块,用于聚合上下文信息。该模块允许使用更轻量级的主干,在保持实时效率的同时实现高性能。在CurveLanes NAS[26]中,作者建议使用神经架构搜索(NAS)来寻找更好的主干。尽管他们取得了最先进的成果,但他们的NAS在计算上非常昂贵,每个数据集需要5000 GPU小时。
行分类方法 行分类方法是基于输入图像的网格划分来检测车道的简单方法。对于每一行,模型预测最可能包含车道标记一部分的单元格。由于每行上仅选择一个单元格,因此对于图像中的每个可能车道重复此过程。与分割方法类似,它还需要一个后处理步骤来构建车道集。该方法首次在E2E-LMD[27]中引入,在两个数据集上实现了最先进的结果。在[20]中,作者表明,它能够达到高速,尽管会损失一些精度。这种方法也用于内部KD[10]。
其他方法 在FastDraw[18]中,作者提出了一种新的基于学习的方法来解码车道结构,避免了聚类后处理步骤的需要(在分段和行分类方法中需要)。尽管所提出的方法被证明实现了高速,但在精度方面,它并不比现有的最先进方法更好。PolylanNet[23]中显示了同样的效果,其中提出了基于深度多项式回归的更快模型。在该方法中,模型学习为每个车道输出多项式。尽管速度很快,但该模型仍与车道检测数据集的不平衡性作斗争,其预测中对直线车道的高度偏倚证明了这一点。在CNN[13]中,提出了一种基于锚的车道检测方法。该模型在一个公共数据集上实现了最先进的结果,在另一个不公开的数据集上获得了有前景的结果。尽管具有实时效率,但该模型比其他方法慢得多。此外,代码不是公开的,这使得结果很难复制。也有解决车道检测器管线其他部分的工作。在[12]中,提出了一种专注于遮挡情况的后处理方法,实现了比其他工作高得多的结果,但代价是速度明显较低(约4fps)。
再现性 如[23]中所述,许多引用的作品没有发布代码来复制报告的结果[13、18、27],或者,在某些情况下,代码只是部分公开[11、10]。这妨碍了更深入的定性和定量比较。例如,衡量模型效率的两个最常用的指标是乘累加操作(MAC)和每秒帧数(FPS)。虽然第一个不依赖于基准平台,但它并不总是第二个的好代理,这才是真正的目标。因此,FPS比较也因缺乏源代码而受到阻碍。
与之前提出的大多数以精度为代价实现高速的方法不同,我们提出了一种比现有技术更快速和更准确的方法。此外,为社区发布了复制报告结果的完整代码。
3.建议的方法
LaneA TT是用于车道检测的基于锚的单阶段模型(如LOVO3[21]或SSD[16])。该方法的概览如图1所示。图像I∈ 取自安装在车辆上的前置摄像头。输出为车道边界线(以下称为车道,遵循文献中的常用术语)。为了生成这些输出,卷积神经网络(CNN),称为主干,生成特征图,然后将其合并以提取每个锚的特征。这些特征与注意力模块产生的一组全局特征相结合。通过结合局部和全局特征,模型可以更容易地使用来自其他车道的信息,这在遮挡或无可见车道标线等情况下可能是必要的。最后,将组合特征传递到完全连接的层,以预测最终输出车道。
【图1.拟议方法概述。主干从输入图像生成特征图。随后,将每个锚投影到特征图上。此投影用于汇集与注意力模块中创建的另一组功能连接的功能。最后,使用这个生成的特征集,两个层,一个用于分类,另一个用于回归,进行最终预测。】
3.1.车道和锚点表示
车道由具有等距y坐标的二维点表示−1 i=0,其中
.由于Y是固定的,因此车道只能由其xcoordinates
来定义,每个xi与各自相关联的yi∈ Y.由于大多数车道不垂直穿过整个图像,因此使用起始索引s和结束索引e来定义X的有效连续序列。
类似Line-CNN[13],我们的方法使用线而不是框来执行基于锚的检测,这意味着车道的建议是以这些线作为参考。锚是图像平面中的“虚拟”线,由(i)原点O=(,
)(yorig∈ Y)位于图像的边界之一(除了顶部边界)和(ii)方向θ。提出的方法使用与[13]相同的锚。这种车道和锚点表示满足绝大多数真实车道。
3.2.主干
该方法的第一阶段是特征提取,可以由任何通用的CNN执行,如ResNet[9]。此阶段的输出是一个特征图,将通过池化过程从中提取每个锚的特征,如下一节所述。对于降维,将1×1卷积应用于
,生成按通道的降维特征图
。执行此缩减是为了减少计算成本。
3.3.基于锚的特征池
锚点定义了将用于各个提案的F点。由于锚被建模为线,因此给定锚的兴趣点是那些截取锚的虚拟线的点(考虑减少到特征地图维度的光栅化线)。对于每=0,1,2,…,
− 1将有单个对应的xcoordinate,
其中(,
)和θ分别是锚线的原点和斜率,
是主干的全局步幅。因此,每个锚i将有其对应的特征向量
∈
(列向量表示法)从F中汇集,携带局部特征信息(局部特征)。如果锚的一部分在F的边界之外,则
为零填充。
注意,合并操作类似于快速R-CNN的[8]感兴趣区域投影(RoI投影),但是,不是使用合并建议,而是通过使用锚本身实现单级检测器。此外,我们的方法不需要RoI池层(用于生成固定大小的特征)。与仅利用特征图边界的线CNN[13]相比,我们的方法可以潜在地探索所有特征图,这使得能够使用具有较小感受野的更轻的主干。
3.4.注意机制
根据模型架构,汇集特征向量所携带的信息最终大多是局部的。更浅更快的模型尤其如此,它们倾向于利用具有较小感受野的主干。然而,在某些情况下(如有遮挡的情况),局部信息可能不足以预测车道的存在及其位置。为了解决这个问题,我们提出了一种注意力机制,作用于局部特征(),以产生聚集全局信息的附加特征(
)。
基本上,注意力机制结构由全连接层组成,其处理局部特征向量aloci并输出每个锚j的概率(权重)
,j
i,
然后,将这些权重与局部特征组合以产生相同维度的全局特征向量:
自然,整个过程可以通过矩阵乘法有效地实现,因为对所有锚执行相同的过程。设为锚的数量。设
=[
,…,
]
是包含局部特征向量(作为行)的矩阵,W=[
]
×
是等式(2)中定义的权重矩阵
。因此,全局特征可以计算为:
3.5.建议预测
为每个锚预测车道方案,并由三个主要部分组成:(i)K+1概率(K种车道类型和一类“背景”或无效方案),(ii)偏移量(预测和锚线之间的水平距离),以及(iii)方案长度l(有效偏移量)。方案的起始指数直接由锚点原点的y坐标确定(
,见第3.1节)。因此,最终指数可以确定为e=s+[l]− 1.
为了生成最终建议,通过连接和
来聚合局部和全局信息,生成增强特征向量
∈
。该增广向量被馈送到两个完全并联的层,一个用于分类(
)和一个用于回归(
),产生最终建议。
预测pi={p0,…,pK+1}(项目i),
预测ri=(l, {x0,…,
}) (项目二和三)。
3.6.非最大抑制(NMS)
与基于锚的深度检测通常一样,NMS对于减少误报数量至关重要。在提出的方法中,基于[13]中提出的车道距离度量,在训练和测试阶段应用该程序。两个车道Xa=和Xb=
之间的距离基于它们的公共有效索引(或y坐标)计算。设s0=max(sa,sb)和e0=min(ea,eb)定义了这些常用指数的范围。因此,车道距离度量定义为
3.7 模型训练
在训练期间,等式(5)中的距离度量也用于定义正锚和负锚。首先,该度量用于测量每个锚(NMS中未过滤的锚)与地面实况车道之间的距离。随后,距离(等式5)低于阈值τp的锚被视为正锚,而距离大于τn的锚被认为是负锚。忽略这些阈值之间距离的锚(及其相关建议)。剩余的Np和n用于多任务损失,定义为:
其中,pi,ri是锚i的分类和回归输出,而和
是锚i的分类和回归目标。回归损失仅使用长度l和x坐标值计算,x坐标值对应于方案和地面真相共同的指数。与车道距离(等式(5))类似,选择x坐标的公共指数(s'和e'之间),但使用e'=e
而不是e'=min(e
,e
),其中e
和e
分别是方案及其相关地面实况的最终指数。如果使用建议e
中预测的最终指数,则训练可能会因收敛到退化解而变得不稳定(例如,e
可能会收敛到零)。函数L
和L
分别是焦点损耗[14]和平滑L1。如果锚i为负,则其相应的Lreg等于0。系数λ用于平衡损耗分量。
3.8.速度效率锚过滤
全套锚固件包括总共2782个锚固件。这个增加的数字是限制模型速度的主要因素之一。由于大量锚在训练期间将是无用的(例如,一些锚可能在训练数据集中的所有图像的水平线上方具有起点),因此可以减小集合的大小。为了选择在训练和测试阶段忽略哪些锚,该方法测量训练集中每个锚被标记为阳性的次数(与训练中的标准相同)。最后,仅保留顶部Nanc标记的锚,以便进一步处理(也在测试期间)。
4.实验
我们的方法在两个最广泛使用的车道检测数据集(TuSimple[24]和CULane[17])和最近发布的基准(LLAMAS[3])上进行了评估。数据集的概述见表1。本节首先描述效率指标和一些实现细节。所有实验都使用数据集创建者设置的默认度量参数,这些参数与相关工作使用的相同。前三小节讨论了每个数据集的实验结果(包括数据集描述和评估指标)。最后两小节讨论了效率权衡实验和零件烧蚀研究。
效率指标。报告了两个与效率相关的指标:每秒帧数(FPS)和乘法累加操作(MAC)。一个MAC大约是两个浮动操作(触发器)。FPS是使用每批单个图像和常量输入计算的,因此度量不依赖于I/O操作,而仅依赖于模型的效率。
实现细节。除非明确指出,否则所有输入图像的大小均调整为HI×WI=360×640像素。对于所有培训课程,Adam优化器用于CULane上的15个时期和TuSimple上的100个时期(差异较大是由于数据集大小差异较大)。对于数据增强,执行随机仿射变换(平移、旋转和缩放)以及随机水平翻转。大多数实验和所有FPS测量都是在配备Intel i9-9900KS和RTX 2080 Ti的机器上计算的。模型参数为Npts=72、Nanc=1000、τp=15和τn=20。使用的数据集不提供车道类型(例如,虚线或实线),因此,我们设置K=1(根据第3.5节)。有关更多详细信息和参数值,可以访问code1以及每个实验的配置。
4.1. TuSimple
数据集描述。TuSimple[24]是一个仅包含高速公路场景的车道检测数据集,通常认为这种场景比街道场景更容易。尽管如此,它是车道检测工作中使用最广泛的数据集之一。所有图像都有1280×720像素,最多5个车道。
评估指标。在TuSimple上,三个标准度量是错误发现率(FDR)、错误阴性率(FNR)和准确性。精度定义为:
其中是在剪辑中正确预测的车道点的数量,
是剪辑(或图像)中的点的总数。为了使点预测被认为是正确的,预测必须在距离地面真相20像素以内。对于被视为真正的车道预测(对于FDR和FNR度量),其正确预测点的数量必须大于85%。我们还报告了F1分数(以下称为F1),这是精确度和召回率的调和平均值。
【图2.TuSimple(顶行)、CU-Lane(中行)和LLAMAS(底行)的LaneA TT定性结果。蓝线是基本事实,而绿线和红线分别是真阳性和假阳性】
【表2.TuSimple的最新结果。为了更公平的比较,在与我们的方法相同的机器和条件下,测量了最快方法([20])的FPS。此外,该方法的所有度量都是使用官方源代码计算的,因为本文中仅提供了准确性。具有可用源代码的方法的最佳和次最佳结果分别以粗体和下划线表示】
后果表2和图3(左侧)显示了TuSimple上LaneA TT的结果以及其他最先进的方法。定性结果如图2所示(顶行)。正如所证明的,精度方面的LaneA TT与其他最先进的方法不相上下。然而,很明显,该数据集中的结果已经饱和(高值),可能是因为其场景不复杂,且度量是允许的[23]。与更复杂的数据集和更少允许的度量(如第4.2节所示)相比,不同方法之间的性能差异较小,这证明了这一点。尽管如此,我们的方法比其他方法快得多。[20]中提出的方法是唯一速度与我们的方法相当的方法。由于FDR和FNR指标没有在他们的工作中报告,我们使用发布的代码计算它们并报告这些指标。虽然它们实现了高精度,但FDR非常高。例如,使用ResNet-122,我们的最高假阳性率为5.64%,而最低为18.91%,几乎高出四倍。
4.2.CULane数据集描述。
CULane[17]是最大的公共可用车道检测数据集之一,也是最复杂的数据集之一。所有图像均为1640×590像素,所有测试图像分为拥挤、夜间、无可见线等九类。
评估指标。唯一的度量是F1,它基于并集上的交集(IoU)。由于IoU依赖于区域而不是点,因此车道表示为连接各自车道点的粗线。特别是,数据集的官方度量将车道视为30像素厚的线。如果预测的IoU大于0.5,且具有地面实况车道,则被视为真正。
【表3.CULane的最新结果。由于“交叉”类别中的图像没有车道,因此报告的数量是误报数量。为了更公平的比较,我们在与我们相同的机器和条件下测量了最快方法([20])的FPS。具有可用源代码的方法的最佳和次最佳结果分别以粗体和下划线表示。】
后果表3和图3(右侧)显示了LaneA TT在CULane上的结果以及其他最先进的方法。定性结果如图2(中间行)所示。我们没有与[12]中的结果进行比较,因为主要贡献是一种后处理方法,可以很容易地合并到我们的方法中,但源代码不是公开的。此外,它的速度非常慢,这使得该模型在实际应用中不切实际(正如他们在工作中报告的那样,整个管道的运行速度低于10 FPS)。在这种情况下,LaneA TT实现了比较方法中最高的F1,同时在具有高度复杂场景的数据集CULane上保持了高效率(+170 FPS)。与[20]相比,我们最轻的型号(带有ResNet-18)比最大的型号(配有ResNet-34)超过了F1的近3%,同时速度更快(在同一台机器上为250对175 FPS)。此外,在“夜间”和“阴影”场景中,我们的方法优于所有其他方法,包括SIM CycleGAN[15],专门为这些场景设计。这些结果证明了LANEAT的有效性和效率。
4.3. LLAMAS
数据集描述。LLAMAS[3]是一个具有超过100k图像的大型车道检测数据集。注释不是手动生成的,而是使用高清晰度地图生成的。所有图像均来自高速公路场景。该评估基于库兰的F1,这是由 LLAMAS基准的作者计算的,因为测试集的注释不是公开的。
后果LaneA TT对LLAMAS的结果以及PolyLaneNet[23]的结果如表4所示。定性结果如图2所示(底部行)。由于基准测试是最新的,而且只有PolylanNet提供了必要的源代码,可以在LLAMA上进行评估,因此它是唯一可比较的方法。正如所证明的,LaneA TT能够在所有三个主干中实现超过90%的F1。结果也可以在基准网站2上看到。
4.4.效率权衡
有效是车道检测模型的关键。在某些情况下,甚至可能需要交换一些精度来达到应用程序的要求。在本实验中,显示了一些可能的权衡。特别是图像输入大小(HI×WI)和锚数量(Nanc,如第3.8节所述)的不同设置。结果如表5所示。它们表明,可以减少锚的数量,在效率方面略有改善,而不会出现较大的F1下降。然而,如果减少太大,F1开始显著下降。此外,如果使用过多的锚,效果也会降低,这可能是不必要的锚干扰训练的结果。输入大小的结果类似,尽管MACs下降更大。锚数量和输入大小对训练时间的影响最大。在推理过程中,在NMS程序之前过滤建议(使用置信阈值)。在训练期间,没有这样的过滤。由于NMS是模型的主要瓶颈之一,其运行时间直接取决于对象的数量,因此锚的数量对训练阶段的影响比测试阶段的影响大得多。
4.5消融研究
本实验评估了所提出方法的每个主要部分(一次一个)的影响:基于锚的池、共享层、焦点丢失和注意力机制。结果如表6所示。第一行包括标准LaneA TT的结果,而下一行显示了标准模型稍微修改版本的结果。在第二行中,删除了基于锚的池,并使用了相同的程序来选择线CNN[13]的特征(即,每个锚只使用特征图中单个点的特征)。在第三种情况下,使用三对(六层),而不是使用一对完全连接的层(Lreg和LCL)进行最终预测,一对匹配一个边界(左、下或右)。也就是说,从图像的左边界开始的所有锚都由同一对层LLreg和LLcls生成其建议,并且类似地用于底部(LBreg和LBcls)和右侧(LRreg和LRcls)边界。在第四种方法中,用交叉熵代替焦点损失,在最后一种方法中去除注意机制。
当基于锚的池化过程被移除时,性能的大幅下降表明了其重要性。该过程允许使用更轻量级的主干网,这在CNN[13]中是不可能的,因为没有大的性能下降。结果还表明,图像的每个边界的层不仅是不必要的,而且对模型的效率有害。此外,使用焦点损失代替交叉熵也被证明是有益的。此外,它还消除了对一个超参数(损失计算中使用的负样本数)的需要。最后,所提出的注意机制是另一个显著提高模型性能的修改。
5.结论
我们提出了一种实时单阶段深车道检测模型,其性能优于现有模型,与文献进行了广泛比较。该模型不仅有效而且高效。在TuSimple上,该方法实现了第二高的F1(差异仅为0.02%),同时比top-F1方法快得多(171对30 FPS)。在最大和最复杂的车道检测数据集之一的CULane上,该方法在速度和精度方面建立了实时方法中的最新技术(与速度约为170 FPS的最新方法相比,F1增加了4.38%)。此外,该方法在所有评估的三根主干上的骆驼基准上实现了高F1(+93%)。为了实现这些结果,连同其他修改,还提出了一种新的基于锚的注意机制。消融研究表明,考虑到近年来文献进展所获得的收益,该添加显著提高了模型的性能(F1分数)。此外,还显示了一些在实践中有用的效率权衡。