论文《Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection》阅读

Abstract

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

1. Introduction

深度学习对许多领域的最新进展至关重要,尤其是在自动驾驶领域[2]。深度学习在自动驾驶汽车中的许多应用都是在其感知系统中。为了确保人类周围的安全,自动驾驶汽车应该感知周围环境,包括其他车辆和自己的位置。归根结底,汽车运动的可预测性越高,对乘客和行人就越安全。因此,自动驾驶汽车必须知道每条车道的准确位置,这也是车道检测系统的目标。

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

在这项工作中,我们提出了一种实时车道检测方法,它比大多数最先进的方法更快、更准确。我们提出了一种基于锚的单级车道检测模型,称为 LaneATT。该模型的架构可在保持高精度的同时使用轻量级骨干 CNN。此外,我们还提出了一种新颖的基于锚的关注机制,用于汇总全局信息。在三个基准(TuSimple [24]、CULane [17] 和 LLAMAS [3])上显示了广泛的实验结果,同时还与最先进的方法进行了比较,讨论了效率权衡问题,并对我们的设计选择进行了消融研究。总之,我们的主要贡献如下 :

在大型复杂数据集上比现有最先进的实时方法更准确的车道检测方法;
与大多数其他模型相比,该模型的训练和推理速度更快(达到 250 FPS,乘法累加运算(MAC)次数比以前的先进模型少了近一个数量级);
用于车道检测的基于锚的新颖注意力机制,该机制在检测对象具有相关性的其他领域也有潜在用途。

2. Related work

虽然最早的车道检测方法依赖于经典的计算机视觉,但最近的深度学习方法在准确性和效率方面取得了长足的进步。因此,本文献综述侧重于深度车道检测器。本节首先讨论了基于分割[17, 11, 29, 15]或行式分类[10, 20, 27]的主流方法,随后回顾了其他方向的解决方案。最后,将讨论缺乏可重复性的问题(车道检测工作中的一个常见问题)。

Segmentation-based methods.
在这种方法中,预测以每个像素为基础,将每个像素分类为车道或背景。生成分割图后,还需要一个后处理步骤将其解码为一组车道。在 SCNN [17] 中,作者提出了一种专为细长结构设计的方案,并展示了其在车道检测中的有效性。不过,该方法的速度较慢(7.5 FPS),这阻碍了它在现实世界中的应用。由于较大的骨干网是导致速度较慢的主要原因之一,作者在 [11] 中提出了一种自我注意力提炼(SAD)模块,用于汇总上下文信息。该模块允许使用更轻量级的骨干网,在保持实时效率的同时实现高性能。在 CurveLanes-NAS [26] 中,作者提出使用神经架构搜索(NAS)来寻找更好的骨干网。虽然他们取得了最先进的结果,但他们的 NAS 计算成本极高,每个数据集需要 5000 个 GPU 小时。 ​
Row-wise classification methods.
行分类法是一种根据输入图像的网格划分来检测车道的简单方法。对于每一行,模型都会预测最有可能包含车道标记部分的单元格。由于每一行只选择一个单元格,因此图像中每一条可能的车道都会重复这一过程。与分割方法类似,它也需要一个后处理步骤来构建车道集。该方法首次引入 E2E-LMD [27],在两个数据集上取得了最先进的结果。在[20]中,作者展示了该方法能够达到较高的速度,尽管会损失一些精度。IntRA-KD [10] 也采用了这种方法。
Other approaches.
在 FastDraw [18]中,作者提出了一种基于学习的新方法来解码车道结构,从而避免了聚类后处理步骤(分割和行分类方法中需要)。虽然所提出的方法可以达到很高的速度,但在准确性方面并没有优于现有的最先进方法。PolyLaneNet [23]也显示了同样的效果,它提出了一种基于深度多项式回归的更快模型。在这种方法中,模型会学习为每条车道输出一个多项式。尽管速度很快,但该模型在车道检测数据集的不平衡性方面仍有困难,其预测结果偏向直行车道的程度很高就是证明。Line-CNN [13] 提出了一种基于锚的车道检测方法。该模型在一个公开数据集上取得了最先进的结果,在另一个未公开的数据集上也取得了很好的结果。尽管具有实时效率,但该模型比其他方法要慢得多。此外,由于代码未公开,结果难以复制。还有一些研究涉及车道检测器管道的其他部分。文献[12]提出了一种后处理方法,重点关注遮挡情况,其结果大大高于其他作品,但代价是速度明显较低(约 4 FPS)。
Reproducibility.
正如文献[23]所指出的,许多被引用的著作并没有公布重现报告结果的代码[13, 18, 27],或者在某些情况下,代码只是部分公开[11, 10]。这阻碍了更深入的定性和定量比较。例如,衡量一个模型效率的两个最常用指标是乘积运算(MAC)和每秒帧数(FPS)。虽然前者不依赖于基准平台,但它并不总能很好地代表后者,而后者才是真正的目标。因此,FPS 比较也因缺乏源代码而受到阻碍。

以前提出的大多数方法都是以牺牲准确性为代价来实现高速度,与此不同,我们提出的方法比现有的最先进方法更快、更准确。此外,我们还向社会公布了重现报告结果的完整代码。

3. Proposed method

LaneATT 是一种基于锚点的单阶段模型(如 YOLOv3 [21] 或 SSD [16]),用于车道检测。该方法的概述如图 1 所示。它接收安装在车辆上的前置摄像头拍摄的 RGB 图像 I ∈ R 3 × H 1 × W 1 I\in {\mathbb{R}}^{3\times H_1\times W_1} IR3×H1×W1作为输入。输出为车道边界线(下文按照文献中的惯用术语称为车道)。为了生成这些输出,一个被称为骨干网的卷积神经网络(CNN)会生成一个特征图,然后汇集提取每个锚点的特征。这些特征与注意力模块生成的一组全局特征相结合。通过结合本地和全局特征,模型可以更轻松地使用其他车道的信息,这在遮挡或无可见车道标记等情况下可能是必要的。最后,将组合特征传递给完全连接的层,以预测最终输出的车道。
3.1. Lane and anchor representation
车道由具有等间距 y 坐标 Y = { y i } i = 0 N p t s − 1 Y=\{y_i\}_{i=0}^{N_{pts}-1} Y={yi}i=0Npts1的二维点表示,其中 y i = i ⋅ H 1 N p t s − 1 y_i=i\cdot \frac{H_1}{N_{pts}-1} yi=iNpts1H1。由于 Y 是固定的,因此车道只能由其 x 坐标 X = { x i } i = 0 N p t s − 1 X=\{x_i\}_{i=0}^{N_{pts}-1} X={xi}i=0Npts1来定义,每个 x i x_i xi都与各自的 y i ∈ Y y_i∈Y yiY相关联。由于大多数车道不会垂直穿过整个图像,因此使用起始索引 s s s和终止索引 e e e来定义X的有效连续序列。 ​
与 Line-CNN [13] 类似,我们的方法使用线条而不是方框来执行基于锚点的检测,这意味着车道建议是以这些线条作为参考的。锚是图像平面上的一条 "虚拟 "线,由以下两部分定义:(i) 位于图像边界(顶部边界除外)之一的原点 O = ( x o r i g , y o r i g ) O = (x_{orig}, y_{orig}) O=(xorig,yorig) y o r i g ∈ Y y_{orig} ∈ Y yorigY);(ii) 方向 θ θ θ。这种车道和锚点表示法满足现实世界中绝大多数车道的要求。 ​
3.2. Backbone
提出方法的第一阶段是特征提取,可由任何通用 CNN(如 ResNet)执行[9]。这一阶段的输出是一个特征图 F b a c k ∈ R C F ′ × H F × W F \mathbf{F}_{back}\in \mathbb{R}^{C_{F}^{'}\times H_F\times W_F} FbackRCF×HF×WF,将通过池化过程从中提取每个锚点的特征,这将在下一节中介绍。为了降低维度,将对 F b a c k \mathbf{F}_{back} Fback进行 1 × 1 卷积,生成一个通道缩小的特征图 F ∈ R C F × H F × W F \mathbf{F}\in \mathbb{R}^{C_{F}\times H_F\times W_F} FRCF×HF×WF。进行这种缩减是为了降低计算成本。 ​
3.3. Anchor-based feature pooling
锚点定义了将用于相关建议的 F \mathbf{F} F点。由于锚点是以线为模型的,因此特定锚点的兴趣点就是那些与锚点虚拟线相交的点(将光栅化的线简化为特征地图维数)。对于每个 y j = 0 , 1 , 2 , . . . , H F − 1 y_j = 0, 1, 2, ... ,H_F - 1 yj=0,1,2,...,HF1,都会有一个对应的 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 ∈ R C F ⋅ H F ( \mathbf{a} _i^{loc}\in \mathbb{R}^{C_F\cdot H_F} ( ailocRCFHF列向量符号),这些特征向量是从 F \mathbf{F} F中汇集的,其中包含局部特征信息(局部特征)。如果锚点的一部分在 F \mathbf{F} F的边界之外, a i l o c \mathbf{a} _i^{loc} ailoc将被置零。
请注意,池化操作类似于快速 R-CNN [8] 的兴趣区域投影(RoI projection),不过,池化不是使用提案(proposal ),而是通过使用锚点本身来实现单级检测器。此外,我们的方法不需要 RoI 池层(用于生成固定大小的特征)。与只利用特征图边界的 Line-CNN [13]相比,我们的方法可以潜在地探索所有特征图,从而可以使用具有较小感受野的更轻量级骨干网。
3.4. Attention mechanism
根据模型结构的不同,汇集的特征向量所携带的信息最终大多是局部的。对于较浅和较快的模型来说,情况尤其如此,这些模型倾向于利用具有较小感受野的骨干。然而,在某些情况下(例如有遮挡的情况),局部信息可能不足以预测车道的存在及其位置。为了解决这个问题,我们提出了一种注意力机制,该机制作用于局部特征( a ⋅ l o c \mathbf{a} _\cdot ^{loc} aloc),以产生汇总全局信息的附加特征( a ⋅ g l o b \mathbf{a} _\cdot ^{glob} aglob)。
基本上,注意力机制结构由一个全连接层 L a t t L_{att} Latt组成,该层处理局部特征向量 a i l o c \mathbf{a} _i^{loc} ailoc,并为每个锚 j , j ≠ i j,j\ne i j,j=i输出一个概率(权重) w i , j w_{i,j} wi,j。最后
在这里插入图片描述
然后,将这些权重与局部特征相结合,生成一个相同维度的全局特征向量:
在这里插入图片描述

当然,整个过程可以通过矩阵乘法有效实现,因为所有锚点都要执行相同的程序。设 N a n c N_{anc} Nanc为锚点数量。设 A l o c = [ a 0 l o c , ⋯   , a N a n c − 1 l o c ] T \mathbf{A} ^{loc}=[a_0^{loc},\cdots ,a_{N_{anc}-1}^{loc} ]^T Aloc=[a0loc,,aNanc1loc]T为包含局部特征向量(作为行)的矩阵, W = [ w i , j ] N a n c × N a n c \mathbf{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 \mathbf{A} ^{glob} Aglob A l o c \mathbf{A} ^{loc} Aloc的维度相同,即 A g l o b ∈ R N a n c × C F ⋅ H F \mathbf{A} ^{glob}\in \mathbb{R} ^{N_{anc}\times C_F\cdot H_F} AglobRNanc×CFHF
3.5. Proposal prediction
为每个锚点预测车道建议,建议由三个主要部分组成: (i) K + 1 个概率(K 个车道类型和一个 "背景 "或无效建议类别),(ii) N p t s N_{pts} Npts偏移(预测与锚点线之间的水平距离),以及 (iii) 建议长度 l l l(有效偏移的数量)。建议的起始索引(s)直接由锚点原点的 y 坐标( y o r i g y_{orig} yorig,见第 3.1 节)决定。因此,终点索引可以确定为 e = s + ⌊ l ⌉ − 1 e=s+\left \lfloor l \right \rceil -1 e=s+l1。 ​

为了生成最终建议,通过连接 a i l o c \mathbf{a} _i^{loc} ailoc a i g l o b \mathbf{a} _i^{glob} aiglob来聚合局部和全局信息,生成一个增强特征向量 a i a u g ∈ R 2 ⋅ C F ⋅ H F \mathbf{a} _i^{aug}\in \mathbb{R} ^{2\cdot C_F \cdot H_F} aiaugR2CFHF。该增强向量被输送到两个并行的全连接层,一个用于分类( L c l s L_{cls} Lcls),另一个用于回归( L r e g L_{reg} Lreg),从而产生最终建议。 L c l s L_{cls} Lcls预测 p i = { p 0 , ⋯   , p K + 1 } \mathbf{p}_i=\{p_0,\cdots ,p_{K+1}\} pi={p0,,pK+1}(第 i i i项), L r e g L_{reg} Lreg 预测 r i = ( l , { x 0 , ⋯   , x N p t s − 1 } ) \mathbf{r}_i=(l,\{x_0,\cdots ,x_{N_{pts}-1}\}) ri=(l,{x0,,xNpts1})(第 ii 和 iii 项)。 ​
3.6. Non-maximum Supression (NMS)
与基于锚点的深度检测一样,NMS 对于减少误报率至关重要。在本文所提出的方法中,这一过程是基于 [13] 中提出的车道距离指标,在训练和测试阶段同时应用的。两条车道 X a = { x i a } i = 1 N p t s X_a=\{x_{i}^{a}\}_{i=1}^{N_{pts}} Xa={xia}i=1Npts X b = { x i b } i = 1 N p t s X_b=\{x_{i}^{b}\}_{i=1}^{N_{pts}} Xb={xib}i=1Npts之间的距离是根据它们共同的有效指数(或 y 坐标)计算得出的。让 s ′ = m a x ( s a , s b ) s^{'}=max(s_a,s_b) s=max(sa,sb) e ′ = m i n ( e a , e b ) e^{'}=min(e_a,e_b) e=min(ea,eb)来定义这些共同指数的范围。因此,车道距离度量定义为在这里插入图片描述
3.7. Model training
在训练过程中,等式 (5) 中的距离度量也用于定义正锚点和负锚点。首先,该指标用于测量每个锚点(未在 NMS 中过滤的锚点)与地面实况(groundtruth)车道之间的距离。随后,距离(公式 5)小于阈值 τ p τ_p τp的锚点被视为正锚点,而距离大于 τ n τ_n τn的锚点被视为负锚点。距离介于这些阈值之间的锚点(及其相关提议)将被忽略。余下的 N p δ n N_{p\delta n} Npδn用于多任务损失,其定义如下 ​
在这里插入图片描述

其中 p i 、 r i p_i、r_i piri是锚点 i i i的分类输出和回归输出,而 p i ∗ p_i^* pi r i ∗ r_i^* ri是锚点 i 的分类目标和回归目标。回归损失仅使用长度 l l l以及与建议值和地面实况(ground-truth)值的共同指数相对应的 x x x坐标值进行计算。 x x x坐标的共同指数(在 s ′ s^{'} s 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} eprop e g t e_{gt} egt分别是建议和相关地面实况(ground-truth)的终点指数。如果使用方案 e p r o p e_{prop} eprop中预测的末端索引,训练可能会因收敛到退化解而变得不稳定(例如, 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。如果锚点 i i i被视为负值,则其对应的 L r e g L_{reg} Lreg等于 0。 λ λ λ因子用于平衡损失分量。
3.8. Anchor filtering for speed efficiency
全套锚共有 2782个。这个庞大的数字是限制模型速度的主要因素之一。由于大量的锚点在训练过程中并无用处(例如,有些锚点的起点可能高于训练数据集中所有图像的水平线),因此可以减少锚点集的数量。为了选择哪些锚点在训练和测试阶段都将被忽略,该方法测量了训练集中每个锚点被标记为正的次数(与训练中的标准相同)。最后,只有前 N a n c N_{anc} Nanc标记的锚点才会被保留下来进行进一步处理(测试期间也是如此)。 ​

5. Conclusion

我们提出了一种实时单级深度车道检测模型,通过与文献的广泛比较,该模型的性能优于最先进的模型。该模型不仅有效,而且高效。在 TuSimple 上,该方法达到了报告中第二高的 F1 值(仅相差 0.02%),同时比最高 F1 值的方法快得多(171 FPS 对 30 FPS)。在 CULane(最大、最复杂的车道检测数据集之一)上,该方法在速度和准确性方面都达到了实时方法中的最高水平(与速度相近(约 170 FPS)的最先进方法相比,F1 提高了 4.38%)。此外,该方法在评估的所有三个骨干网上的 LLAMAS 基准上都取得了较高的 F1(+93%)。为了取得这些成果,我们还提出了一种基于锚点的新颖注意力机制。消融研究表明,考虑到近年来文献进展所带来的收益,这一新增机制显著提高了模型的性能(F1 分数)。此外,还显示了一些在实践中有用的效率权衡。

图和表

图一:所提出方法概述。主干从输入图像生成特征图。随后,每个锚点被投影到特征图上。该投影用于汇集特征,并与注意力模块中创建的另一组特征进行连接。最后,利用生成的特征集,两个层(一个用于分类,另一个用于回归)进行最终预测。
在这里插入图片描述
图二:LaneATT 在 TuSimple(上行)、CULane(中行)和 LLAMAS(下行)上的定性结果。蓝线为地面实况,绿线和红线分别为真阳性和假阳性
在这里插入图片描述
图三:模型延迟与在CULANE和TuSimple上的最先进方法的F1。
在这里插入图片描述

表五:使用 ResNet-34 主干网的 CULane 的效率权衡。"TT "代表训练时间(小时)。
在这里插入图片描述
表六:CULane 的消融研究结果
在这里插入图片描述

总结

本文设置了2784个anchor,不是2782论文中写错了。

2726+128*15=2784

2:左右两侧

72:y方向上选择了72个点,作为起始点

6:两侧方向每个点按不同角度出6个角度的线

128:底端出128个点,作为起始点

15:底端每个点出按不同角度出15个角度的线

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值