250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection

论文:https://arxiv.org/pdf/2010.12035.pdf

代码:https://github.com/lucastabelini/LaneATT

摘要

现代车道检测方法在复杂的现实场景中取得了显著的效果,但许多方法存在保持实时效率的问题,而这对自动驾驶汽车来说很重要。在这项工作中,我们提出了LaneATT:一种基于锚点的深车道检测模型,类似于其他通用的目标检测器,它使用锚点进行特征池化。由于车道线是有规则的样条并且高度相关,我们假设在某些情况下,全局信息可能对推断它们的位置至关重要,特别是在闭塞、无车道标记等情况下。因此,本研究提出了一种新颖的基于锚点的注意机制来聚合全局信息。该模型在文献中使用最广泛的三个数据集进行了广泛的评估。结果表明,我们的方法优于目前最先进的方法,具有更高的有效性和效率。此外,还进行了消融研究,并讨论了在实践中有用的效率权衡选择。

1、介绍

深度学习在许多领域的最新进展中发挥了至关重要的作用,尤其是在自动驾驶领域[2]。在自动驾驶汽车中环境感知技术中许多深度学习的应用。为了在人类周围安全,自动驾驶汽车应该感知周围环境,包括其他车辆和自身的位置。最后,一辆汽车的运动越可预测,它的乘客和行人就越安全。因此,自动驾驶车辆知道每个车道的确切位置是很重要的,这是车道检测系统的目标。

车道检测模型必须克服各种挑战。在真实场景中使用的模型应该在几种不利条件下(如极端光照和天气条件)具有稳定性。此外,车道标记可能会被其他物体(如汽车)遮挡,这在自动驾驶汽车中非常常见。一些方法,如多项式回归模型,也可能会遭受由长尾效应引起的数据不平衡问题,因为具有更尖锐曲线的情况并不常见。此外,模型不仅要稳定,而且要高效。在一些应用中,车道检测必须实时或更快地执行,以节省其他系统的处理能力,这是许多模型难以满足的要求。

文献中有许多文章都解决了这个问题。在深度学习出现之前,有几种方法使用了更传统的计算机视觉技术,如Hough变换检测车道线[4,1]。近年来,随着卷积神经网络(CNNs)的发展,重点已转向深度学习方法[17,11,18]。在这种情况下,车道检测问题通常被表述为一个分割任务,其中,给定一个输入图像,输出是一个具有每个像素预测的分割图[17]。虽然最近在深度学习方面的进步已经使分割网络在实时[22]中的使用成为可能,但各种模型都在努力实现实时性能。因此,基于分割的方法的主干选项的数量相当有限。因此,最近的一些研究在其他方向提出了解决方案[13,23]。除此之外,在车道检测的工作中还有许多其他的问题,例如需要后处理步骤(通常是启发式的),长时间的训练,以及缺乏公共可用的源代码,这阻碍了比较和复现性。

在这项工作中,我们提出了一种实时车道检测方法,它比大多数最先进的方法都更快、更准确。我们提出了一种基于锚点的一阶车道检测模型,称为LaneA TT。其架构使用轻量级的骨干网CNN且同时保持较高的准确性。提出了一种基于锚点的注意了机制来聚合全局信息。大量的实验结果显示在三个基准上(TuSimple [24], CULane[17]和LLAMAS[3]),以及与最先进的方法的比较,效率权衡的讨论,消融研究我们的设计选择。总而言之,我们的主要贡献是:
(1)一种在大型复杂数据集上比现有先进实时方法更精确的车道检测方法;
(2)一个能够比大多数其他模型更快的训练和推理时间的模型(达到250帧/秒,比之前的先进技术几乎少一个数量级的乘积运算);
(3)一种新颖的基于锚点的车道检测注意力机制,在其他被检测对象相关的领域中具有潜在的实用价值。

2、相关工作

虽然最早的车道检测方法依赖于经典的计算机视觉,但近年来的深度学习方法在准确性和效率方面取得了长足的进步。因此,本文主要对深通道探测器进行综述。本节首先讨论了主要的方法,这些方法是基于分割[17,11,29,15]或逐行分类[10,20,27],然后,从其他方向回顾解决方案。最后,讨论了车道检测工作中常见的再现性问题。

基于分割的方法。在这种方法中,以像素为基础进行预测,将每个像素分类为车道或背景。分割图生成后,需要进行后处理,将其解码为一组车道。在SCNN[17]中,作者提出了一种针对细长结构的车道检测方案,并证明了该方案在车道检测中的有效性。但是,该方法速度较慢(7.5 FPS),这阻碍了它在现实世界中的适用性。由于较大的主干是导致较慢速度的主要原因之一,作者在[11]中提出了一种自我注意蒸馏(SAD)模块来聚合上下文信息。该模块允许使用更轻量级的骨干网,在保持实时效率的同时实现高性能。在CurveLanes-NAS[26]中,作者提出使用神经架构搜索(NAS)来寻找更好的主干。尽管他们取得了最先进的结果,但他们的NAS在计算上非常昂贵,每个数据集需要5000个GPU小时。

Row-wise分类方法。逐行分类方法是基于输入图像的网格划分来检测车道的一种简单方法。对于每一行,模型预测最可能包含车道标记的一部分的单元。因为每一行只选择一个单元格,所以这个过程会对图像中的每个可能的通道重复进行。与分割方法相似,它也需要一个后处理步骤来构建车道集。该方法首先在E2E-LMD[27]中引入,在两个数据集上实现了最先进的结果。在[20]中,作者表明,它能够达到高速度,尽管一些准确性损失。这种方法也用于IntRA-KD[10]。

其他方法。在FastDraw[18]中,作者提出了一种新的基于学习的方法来解码车道结构,从而避免了聚类后处理步骤的需要(在分割和按行分类方法中需要)。虽然提出的方法显示实现了高速度,但它并不优于现有的最先进的方法在精度方面。在PolyLaneNet[23]中也显示了同样的效果,其中提出了一个基于深度多项式回归的更快的模型。在这种方法中,模型学习为每个车道输出一个多项式。尽管速度如此之快,该模型仍面临车道检测数据集不平衡的问题,其预测中对直道的高偏差证明了这一点。在Line-CNN[13]中,提出了一种基于锚点的车道检测方法。该模型在一个公共数据集上实现了最先进的结果,并在另一个公共数据集上实现了有希望的结果。尽管实时效率很高,但该模型比其他方法要慢得多。此外,代码不是公开的,这使得结果难以重现。也有对通道检测器管道的其他部分进行寻址的工作。在[12]中,一种后处理方法的重点是遮挡情况被提出,取得了比其他工作高得多的结果,但代价是明显的低速度(大约4帧/秒)。

复现性。正如在[23]中提到的,许多被引用的作品并不发布代码来复制报道的结果[13,18,27],或者,在某些情况下,代码只是部分公开的[11,10]。这阻碍了更深入的定性和定量比较。例如,衡量模型效率的两个最常用指标是乘法累积操作(MACs)和每秒帧数(FPS)。虽然前者不依赖于基准平台,但它并不总是第二个平台的好代理,而后者才是真正的目标。因此,FPS的比较也因缺乏源代码而受阻。与之前提出的大多数以牺牲准确性为代价来实现高速的方法不同,我们提出了一种比现有的最先进的方法更快、更准确的方法。此外,复制报告结果的完整代码已发布给社区。

3、该方法

LaneA TT是一种基于锚的单阶模型(如YOLOv3[21]或SSD[16]),用于车道检测。图1显示了该方法的概述。它从安装在车辆上的前置摄像头接收作为输入的RGB图像 I ∈ R 3 × H 1 × W 1 I\in R^{3\times H_{1} \times W_{1}} IR3×H1×W1。输出是车道边界线(下文称为车道,遵循文献中的常用术语)。为了生成这些输出,卷积神经网络(CNN),即主干,生成一个特征映射,然后合并该特征映射来提取每个锚点的特征。那些特征结合一组由注意力模块产生的全局特征。通过结合局部和全局特征,该模型可以更容易地使用来自其他车道的信息,这在闭塞或没有可见车道标志等情况下可能是必要的。最后,将组合的特征传递到全连接层,以预测最终的输出通道。
250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第1张图片
图1所示。本文方法的概述。骨干网络从输入图像生成特征映射。随后,每个锚被投影到特征映射上。这个投影被用于聚合与注意力模块中创建的另一组特征相连接的特征。最后,使用得到的特征集,两个层,一个用于分类,另一个用于回归,进行最后的预测。

3.1 车道及锚点表示

车道用等距y坐标 Y = { y i } i = 0 N p t s − 1 Y=\left \{ y_i \right \} _{i=0} ^{N_pts-1} Y={yi}i=0Npts1的2d点表示,其中在这里插入图片描述。由于Y是固定的,一个车道只能通过它的x坐标 X = { x i } i = 0 N p t s − 1 X=\left \{ x_i \right \} _{i=0} ^{N_pts-1} X={xi}i=0Npts1来定义,每个 x i x_{i} xi与各自的 y i y_{i} yi相关联。由于大多数通道并不垂直地穿过整个图像,因此使用起始索引和结束索引来定义 X X X的有效连续序列。

类似Line-CNN[13],我们的方法是基于锚点的检测,使用线条代替锚框,这意味着车道的建议是以这些线条作为参考。锚点是图像平面上的一条“虚”线,定义为(i)原 O = ( x o r i g , y o r i g ) O=\left ( x_{orig},y_{orig} \right ) O=(xorig,yorig) ( y o r i g y_{orig} yorig∈Y)位于图像的其中一个边界(顶部边界除外)和(ii)方向θ。所提议的方法使用与[13]相同的锚点集。这种车道和锚的表示满足现实世界中的绝大多数车道。

3.2骨干网络

该方法的第一阶段是特征提取,它可以由任何通用的CNN进行,如ResNet[9]。这一阶段的输出是一个特征映射 F b a c k ∈ R C F ′ × H F × W F F_{back}∈R^{{C{}'_{F}}\times H^F×W_{F}} FbackRCF×HF×WF,每个锚的特征将通过池化过程提取,如下一节所述。对于降维,一个 1×1卷积被应用于 F b a c k F_{back} Fback,生成一个基于信道的简化特征映射 F ∈ R C F × H F × W F F∈R^{C_{F}×H_{F}×W_{F}} FRCF×HF×WF。执行这种减少是为了减少计算成本。

3.3基于锚框的特征提取

一个锚点定义了特征映射 F F F中的点,这些点将被用于各个方法。由于锚点被建模为线,给定锚点的兴趣点是那些拦截锚点的虚拟线(考虑到栅格化的线被缩减到特征地图的尺寸)。对于每个 y j y_j yj= 0,1,2,…, H F − 1 H_F−1 HF1,则有一个对应的 x x x坐标,
在这里插入图片描述 其中 ( x o r i g , y o r i g x_{orig},y_{orig} xorig,yorig)和 θ θ θ分别为锚线的原点和斜率, δ b a c k δ^{back} δback为骨干的全局步长。因此,每个锚点 i i i都有其对应的特征向量 a i l o c a^{loc}_i ailoc R C F ⋅ H F R^{C_F·H_F} RCFHF(column-vector notation),它由携带局部特征信息(local features)的 F F F集合而成。在这种情况下,锚的一部分是外边界 F F F, a i l o c a_i^{loc} ailoc是零填充。

请注意,池化操作类似于Fast R-CNN的[8]感兴趣区域投影(RoI投影),然而,不是使用池化提议,而是使用锚本身实现一个单级检测器。此外,RoI池层(用于生成固定大小的特性)在我们的方法中是不必要的。Line-CNN[13]仅利用特征图的边界,与之相比,我们的方法可以潜在地探索所有特征图,这允许使用更轻量级的主干和更小的接收字段。

3.4注意力机制

根据模型架构的不同,集合的特征向量所携带的信息大部分是局部的。对于较浅和较快的模型来说尤其如此,它们倾向于利用接收域较小的主干。然而,在某些情况下(如有遮挡的情况),局部信息可能不足以预测车道的存在及其位置。为了解决这个问题,我们提出了一个注意机制,它作用于局部特征( a • l o c a^{loc}_• aloc)产生额外的特征( a • g l o b a^{glob}_• aglob),聚合全局信息。

基本上,注意机制结构是由一个全连接层 L a t t L_{att} Latt组成的,它处理一个局部特征向量,并为每个锚 j j j, j j j不等于 i i i输出一个概率(权重) w i , j w_{i,j} wi,j。如下:
在这里插入图片描述
然后,将这些权值与局部特征结合,生成一个相同维数的全局特征向量:
在这里插入图片描述
当然,整个过程可以通过矩阵乘法有效地实现,因为对所有锚点都执行相同的过程。Let N a n c N_{anc} Nanc是锚的数量。Let A l o c A^{loc} Aloc=[ a 0 l o c , . . . , a N a n c − 1 l o c a_0^{loc},...,a_{N_{anc}-1}^{loc} a0loc,...,aNanc1loc]为包含局部特征向量(如行)的矩阵, W = [ w i , j ] N a n c × N a n c W=[w_{i,j}]_{N_{anc}\times N_{anc}} W=[wi,j]Nanc×Nanc是权重矩阵, w i , j w_{i,j} wi,j定义在式(2)中。因此,全局特征可以计算为:
在这里插入图片描述
A g l o b A^{glob} Aglob A l o c A^{loc} Aloc有相同的维度, A g l o b A^{glob} Aglob R N a n c × C F • H F R^{N_{anc}×C_{F}•H_{F}} RNanc×CFHF

3.5预测

一个车道被预测为一个锚,由三个主要组件:(1) K + 1概率(K车道类型和一个类“背景”或无效的建议),(2) N p t s N_{pts} Npts偏移量(预测点与锚线之间的水平距离)(3)提案的长度 l l l(有效补偿的数量)。提案的起始索引( s s s)直接由锚点起始的y坐标决定( y o r i g y_{orig} yorig,见3.1节)。因此,可以确定末端索引为 e = s + [ l ] − 1 e=s+[l]-1 e=s+[l]1

为了产生最终预测,局部与全局信息由 a i l o c a_i^{loc} ailoc a i g l o b a_i^{glob} aiglob连接在一起聚合而成,生成一个增强的特征向量 a i l o c a_i^{loc} ailoc R 2 • C F • H F R^{2•C_{F}•H_{F}} R2CFHF
这个增广向量被馈送到两个平行的全连接层,一个用于分类(Lcls),一个用于回归(Lreg),它们产生最终的预测。 L c l s L_{cls} Lcls预测 P i = p 0 , … , p K + 1 P_i={{p_0,…, p_{K+1}}} Pi=p0pK+1(item i)和 L r e g L_reg Lreg预测 r i = ( l , [ x 0 , . . . , x N p t s − 1 ] ] ) r_i=(l,[x_0,...,x_{N_{pts-1]}}]) ri=(l,[x0,...,xNpts1]])

3.6非极大值抑制(NMS)

在基于锚的深度检测中,NMS对于减少误报数量至关重要。在提出的方法中,这一程序应用于训练和测试阶段,基于在[13]中提出的车道距离度量。两个车道 X a = { x i a } i = 1 N p t s X_a=\left\{{x_i^a}\right\}_{i=1}^{N_pts} Xa={xia}i=1Npts X b = { x i b } i = 1 N p t s X_b=\left\{{x_i^b}\right\}_{i=1}^{N_pts} Xb={xib}i=1Npts之间的距离是基于它们共同的有效指标(或y坐标)计算的。在这里插入图片描述在这里插入图片描述定义了这些公共指标的范围。因此,车道距离度量定义为
在这里插入图片描述

3.7 模型训练

在训练过程中,还使用式(5)中的距离度量来定义正锚和负锚。首先,度量用于测量每个锚(那些在NMS中没有过滤的锚)和地面真相通道之间的距离。因此,当距离(Eq. 5)低于阈值 T p T_p Tp比值时被认为是正的,而那些距离大于 T n T_n Tn比值时被认为是负的。在这些阈值之间有距离的锚(及其相关建议)将被忽略。剩余的 N p n N_{pn} Npn被用于多任务丢失定义为:
在这里插入图片描述
其中 p i , r i p_i,r_i pi,ri是锚点i分类和回归的输出 ,因此 p i ∗ , r i ∗ p^*_i,r^*_i pi,ri是锚点的分类和回归目标。回归损失的计算仅与长度l和x坐标值对应于预测和地面真值常见的指标(翻译不通,唉,太菜)。
x坐标的公共索引(在 s ′ s{}' sand e ′ e{}' e之间)被选择类似于车道距离(方程(5)),但是用 e ′ = e g t e{}'=e_{gt} e=egt而不是 e ′ = m i n ( e p r o p , e g t ) e{}'= min(e_{prop}, e_{gt}) e=min(eprop,egt),其中 e p r o p e_{prop} epropand e g t e_{gt} egt是建议及其相关的地面真值的末端索引。如果使用中预测的end-index,训练可能会因收敛到退化解而变得不稳定(例如, e p r o p e_{prop} eprop可能收敛到零)。函数 L c l s L_{cls} Lcls L r e g L_{reg} Lreg分别是Focal Loss[14]和Smooth L1。如果锚点被认为是负的,它对应的 L r e g L_{reg} Lreg等于0。利用 λ λ λ因子来平衡各损失分量。

3.8 Anchor filtering for speed efficiency

整套锚具共有2782个锚具。这个高数值是限制模型速度的主要因素之一。由于大量的锚点在训练期间是没有用的(例如,一些锚点可能在训练数据集中所有图像的地平线之上有一个起点),集合的大小可以减少。为了在训练和测试阶段选择哪些锚点将被忽略,该方法测量了训练集中每个锚点被标记为正的次数(与训练中的标准相同)。最后,只有顶部的 N a n c N_{anc} Nanc标记锚被保留为进一步处理(也是在测试期间)。

4. Experiments

我们的方法在两个最广泛使用的车道检测数据集(TuSimple[24]和CULane[17])和最近发布的基准测试(LLAMAS[3])上进行了评估。数据集的概述如表1所示。本节开始描述效率度量和一些实现细节。所有的实验都使用数据集创建者设置的默认度量参数,与相关工作使用的参数相同。前三个小节讨论了每个数据集的实验结果(包括数据集描述和评估指标)。最后两个小节介绍了效率权衡实验和消融研究。
250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第2张图片
效率指标。报告了两个与效率相关的指标:每秒帧数(FPS)和多次累积操作(MACs)。一个MAC是近似的。两个浮动操作(FLOPs)。FPS的计算使用单个图像每批和固定输入,所以度量不依赖于I/O操作,而只依赖于模型的效率。
实施细节 。 除非明确指出,所有输入图像的大小将调整为 H I × W I H_I×W_I HI×WI= 360×640像素。对于所有的训练任务,Adam优化器在CULane上使用了15个epoch,在TuSimple上使用了100个epoch(巨大的差异是由于数据集大小之间的巨大差异)。对于数据增强,在随机水平翻转的同时执行随机仿射变换(包括平移、旋转和缩放)。大多数实验和所有FPS测量都是在一台Intel i9-9900KS和RTX 2080 Ti的机器上计算的。模型参数为 N p t s N_{pts} Npts = 72, N a n c N_{anc} Nanc= 1000, τ p τ_p τp= 15, τ n τ_n τn= 20。使用的数据集不提供车道类型(例如,虚线或实线),因此,我们设置 K = 1 K = 1 K=1(根据Section3.5)。要了解更多细节和参数值,可以访问code1以及每个实验的配置。

4.1. TuSimple

数据集描述。TuSimple[24]是一个只包含高速公路场景的车道检测数据集,该场景通常被认为比街道场景更容易。尽管如此,它是车道检测工作中最广泛使用的数据集之一。所有图片have1280×720pixels,最多5车道。
评价指标。在TuSimple上,三个标准指标是假发现率(FDR)、假阴性率(FNR)和准确性。精度定义为
在这里插入图片描述
其中 C c l i p C_{clip} Cclip是截图中预测正确的车道点数的数量, S c l i p S_{clip} Sclip是截取(或图像)中点数的总数。对于一个点的预测被认为是正确的,预测必须在地面真实的20像素之内。对于车道预测(FDR和FNR指标)来说,它的正确预测点数必须大于85%。我们还报告了F1评分(以下简称F1),即精确度和召回率的调和平均值。
结果 。 在TuSimple上使用LaneATT的结果,以及其他最先进的方法,如表2和图3(左侧)所示。定性结果如图2(顶部行)所示。如所示,LaneATT的精确度是 与其他最先进的方法相同。然而,很明显,这个数据集中的结果已经饱和(高值),可能是因为它的场景并不复杂,而且度量是允许的[23]。与更复杂的数据集和更宽松的度量(如章节4.2所示)的结果相比,不同方法之间的性能差别很小,这就证明了这一点。尽管如此,我们的方法比其他方法要快得多。[20]中提出的方法是唯一可以与我们的速度相媲美的方法。由于FDR和FNR指标没有在他们的工作中报告,我们使用发布的代码计算它们并报告这些指标。虽然他们达到了很高的精度,但FDR是非常高的。例如,使用ResNet-122,我们的最高假阳性率为5.64%,而最低假阳性率为18.91%,几乎高出四倍。
250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第3张图片
250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第4张图片

4.2. CULane

数据集描述。CULane[17]是最大的公共车道检测数据集之一,也是最复杂的数据集之一。所有的图像1640×590像素,以及所有的测试图像分为拥挤、夜间、可见线缺失等九类。

评价指标。唯一的度量是F1,它基于IoU的。由于IoU依赖于区域而不是点,因此车道被表示为连接各自车道点的粗线。特别地,数据集的官方度量将车道视为30像素厚的线条。如果一个预测的IoU大于0.5,并且有一个真实车道,那么它就被认为是一个正确的检测。
结果 。 LaneATT在CULane上的结果,以及其他最先进的方法,如表3和图3(右侧)所示。定性结果如图2(中间行)所示。我们不比较[12]中显示的结果,因为主要贡献是一个后处理方法,可以很容易地合并到我们的方法中,但源代码不是公共的。此外,它非常缓慢,这使得该模型在现实世界的应用程序中不切实际(正如他们在工作中报告的那样,整个流水线的运行速度低于10帧/秒)。在这种情况下,LaneA TT在CULane这个场景高度复杂的数据集上保持了较高的效率(+170 FPS),并在所有方法中实现了最高的F1。与[20]相比,我们最轻量级的模型(带有ResNet-18)比它们最大的模型(带有ResNet34)多出近3%的F1速度,同时也更快(在同一台机器上250 vs 175 FPS)。此外,在“夜”和“影”场景中,我们的方法优于所有其他方法,包括专门为这些场景设计的SIM-CycleGAN[15]。这些结果证明了LaneATT的有效性和效率。
250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第5张图片
250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第6张图片

4.3. LLAMAS

数据集描述。LLAMAS[3]是一个大型车道检测数据集,拥有超过10万张图像。这些注释不是手工制作的,而是使用高清晰度地图生成的。所有图像都来自高速公路场景。评估基于CULane的F1,这是由LLAMAS基准测试的作者计算的,因为测试集的注释不是公开的。
结果。LaneA TT在LLAMAS上的结果以及PolyLaneNet的[23]结果如表4所示。定性结果如图2(底部一行)所示。由于基准测试是最近才推出的,而且只有PolyLaneNet提供了在LLAMAS上进行评估所需的源代码,所以它是唯一可比较的方法。正如证明的那样,LaneATT能够在所有三个主干网络上实现大于90%的F1。测试结果也可以在基准测试的网站上看到。
250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第7张图片

4.4. Efficiency trade-offs

高效是车道检测模型的关键。在某些情况下,甚至可能需要牺牲一些准确性来实现应用程序的需求。在这个实验中,展示了一些可能的权衡。特别是图像输入大小(HI×WI)和锚点数量的不同设置( N a n c N_{anc} Nanc,如章节3.8所述)。结果如表5所示。他们表明,锚点的数量可以减少,从而在效率方面略有改善,而F1的下降不会很大。然而,如果减排量太大,F1就会开始大幅下降。此外,如果使用太多的锚点,效果也会降低,这可能是不必要的锚点干扰训练的结果。对于输入大小,结果是相似的,尽管mac下降更大。锚点数量和输入量对训练时间的影响最大。在推理过程中,建议在NMS过程之前被过滤(使用置信阈值)。在训练过程中,没有这样的过滤。由于NMS是模型的主要瓶颈之一,其运行时间直接取决于对象的数量,因此锚点的数量对训练阶段的影响要比测试阶段大得多。

250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第8张图片

4.5. Ablation study

本实验评估了所提出方法的每个主要部分(一次一个)的影响:基于锚的池化、共享层、焦失和注意机制。结果如表6所示。第一行包含标准LaneA TT的结果,而接下来的行显示稍微修改过的标准模型版本的结果。在第二行中,删除了基于锚的池,并使用了相同的过程来选择LineCNN[13]的特征(即,每个锚只使用特征映射中单个点的特征)。
250fps,实时、高性能车道线检测算法 LaneATT——Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection_第9张图片
在第三种方法中,不再使用一对完全连接的层 ( L r e g L_{reg} Lreg,and L c l s L_{cls} Lcls)最终的预测 。使用了三对(六层),其中一对匹配一个边界(左、下或右)。也就是说,从图像左侧边界开始的所有锚点都由相同的一对层llregandllcl和底部(LBregandLBcls)和右侧(LRregandLRcls)边界生成建议。第四种方法用交叉熵代替了Focal Loss,最后一种方法去掉了注意机制。

当基于锚的池过程被移除时,性能的大幅下降表明了它的重要性。这个过程允许使用更轻量级的主干网,这在Line-CNN[13]中是不可能的,否则会有很大的性能下降。结果还表明,在图像的每个边界上都加一层不仅没有必要,而且会影响模型的效率。此外,使用焦损耗代替交叉熵也被证明是有益的。此外,它还消除了一个超参数(在损失计算中使用的负样本的数量)的需要。最后,提出的注意机制是另一种显著提高模型性能的改进。

5. Conclusion

我们提出了一种实时单级深车道检测模型,其性能优于目前最先进的模型,与文献进行了广泛的比较。该模型不仅有效而且高效。在TuSimple上,该方法获得了第二高的F1(仅0.02%的差异),同时比顶级F1方法(171 vs 30 FPS)快得多。在最大、最复杂的车道检测数据集CULane上,该方法在速度和准确性方面都在实时方法中建立了一个新的先进水平(与最先进的方法相比,前者的速度约为170 FPS)。此外,该方法在LLAMAS基准测试中获得了较高的F1(+93%)。为了达到这些结果,在进行其他修改的同时,还提出了一种新的基于锚的注意力机制。消融研究表明,考虑到近年来文献进展所获得的收益,这一添加显著提高了模型的性能(F1评分)。此外,还展示了一些在实践中有用的效率权衡。

你可能感兴趣的:(车道线检测,自动驾驶)