论文链接:https://arxiv.org/pdf/2010.12035.pdf
代码链接:https://github.com/lucastabelini/LaneATT

摘要:

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

一、介绍

本文的贡献
第一,一种在大型复杂数据集上比现有最先进的实时方法更精确的车道检测方法;
第二,与大多数其他模型相比,该模型能够实现更快的训练和推理时间(达到250 FPS,与以前的最先进水平相比,乘法累加运算(MACs)几乎少了一个数量级);
第三,一种新颖的基于锚的车道检测注意机制,在其他检测对象相关的领域有潜在的用途。

二、相关工作

本节首先讨论基于分段或行分类的主要方法,然后回顾其他方向的解决方案。最后,讨论了重复性不足(车道检测工作中的常见问题)。

基于分割的方法
在这种方法中,预测是基于每个像素进行的,将每个像素分类为车道或背景。生成分割图后,需要一个后处理步骤将其解码为一组车道。在SCNN 《 Spatial As Deep: Spatial CNN for Traffic Scene
Understanding》中,作者提出了一种专门为细长结构设计的方案,并展示了它在车道检测中的有效性。然而,该方法很慢(7.5 FPS),这阻碍了其在现实情况中的适用性。由于较大的主干是速度较慢的主要原因之一,作者在《Learning lightweight Lane Detection CNNs by Self Attention Distillation. 》中提出了一个自我注意力蒸馏(SAD)模块来聚合上下文信息。该模块允许使用更轻量级的主干,在保持实时效率的同时实现高性能。在《CurveLane-NAS: Unifying Lane Sensitive Architecture Search and Adaptive Point Blending.》中,作者提出使用神经架构搜索(NAS)来寻找更好的主干。尽管他们获得了最先进的结果,但他们的网络连接存储在计算上极其昂贵,每个数据集需要5000个图形处理器小时。

逐行分类方法
逐行分类方法是一种基于输入图像的网格划分来检测车道的简单方法。对于每一行,模型预测最有可能包含车道标志一部分的单元格。由于每行仅选择一个单元格,因此对图像中的每个可能通道重复该过程。类似于分割方法,它还需要一个后处理步骤来构建车道集。该方法首先在《End-to-End Lane Marker Detection via Row-wise Classification. 》中引入,在两个数据集上获得了最先进的结果。在《Ultra Fast Structureaware Deep Lane Detection》中,作者表明它能够达到高速,尽管失去了一些精度。这种方法也用于《 Inter-Region Affinity Distillation for Road Marking Segmentation. 》。

其他方法
在《FastDraw: Addressing the Long Tail of Lane Detection by Adapting a Sequential Prediction Network》中,作者提出了一种新的基于学习的方法来解码车道结构,这避免了对聚类后处理步骤的需要(在分割和逐行分类方法中需要)。尽管所提出的方法显示出实现了高速度,但是就精确度而言,它并不比现有的最先进的方法表现得更好。polylanet中显示了相同的效果,其中提出了一个基于深度多项式回归的更快的模型。在这种方法中,模型学习为每个车道输出一个多项式。尽管速度很快,但该模型仍在与车道检测数据集的不平衡性质作斗争,其预测中对直行车道的高度偏向就是证明。在《 End-to-end traffic line detection with line proposal unit. 》中,提出了一种基于锚的车道检测方法。该模型在公共数据集上获得最先进的结果,在另一个不公开的数据集上获得有希望的结果。尽管实时效率很高,但该模型比其他方法要慢得多。而且代码不公开,导致结果难以重现。还有解决车道检测器管道其他部分的工作。在《Lane Detection using Lane Boundary Marker Network with Road Geometry Constraints》中,提出了一种以遮挡情况为重点的后处理方法,取得了比其他作品高得多的结果,但代价是速度非常低(大约4 FPS)。

三、提出的方法

LaneATT是一个基于锚点的单级模型(类似YOLOv3 [21]或SSD [16]),用于车道检测。该方法的概述如图1所示。它从安装在车辆上的前置摄像头接收作为输入的RGB图像。输出是车道边界线(以下称为车道,遵循文献中常用的术语)。为了生成这些输出,被称为主干的卷积神经网络(CNN)生成一个特征图,然后将该特征图汇集在一起以提取每个锚点的特征。这些功能与一组全局注意力模块产生的特征。通过结合局部和全局特征,模型可以更容易地使用来自其他车道的信息,这在诸如遮挡或没有可见车道标记的情况下可能是必要的。最后,组合的要素被传递到完全连接的图层,以预测最终的输出通道。


图一:拟议方法概述。主干从输入图像生成特征图。随后,将每个锚点投影到要素地图上。该投影用于汇集与注意力模块中创建的另一组特征相连接的特征。最后,使用这个结果特征集,两个层,一个用于分类,另一个用于回归,进行最终预测。

3.1 车道和锚表示车道由2D点表示

车道由等间距Y坐标的2D点表示,由于Y是固定的,因此车道线只能由其坐标X = { Xi } Npts 1i = 0来定义。由于大多数车道线不会垂直穿过整个图像,因此开始索引s和结束索引e用于定义x的有效连续序列

同样,line-cnn[13],我们的方法使用线而不是框来执行基于锚的检测,这意味着车道的建议是以这些线作为参考。锚点是图像平面中的“虚拟”线,由(I)原点O = (xorig,yorig)(其中yorig∈ Y)位于图像的边界之一(除了顶部边界)和(ii)方向θ定义。所提出的方法使用与[13]相同的一组锚。这种车道和锚点表示满足了绝大多数真实世界的车道。

3.2主干网络

提出的方法的第一阶段是特征提取,它可以由任何通用的cnn执行,例如一个ResNet [9]。这一阶段的输出是一个特征图,每个锚点的特征将通过汇集过程从中提取,如下一节所述。对于降维,对输出的特征图应用1 × 1卷积,生成简化特征图F ∈ RCF×HF×WF。执行这种减少是为了减少计算成本。

3.3基于锚点的特征池化

锚点定义了将用于车道线各自提取的特征点。由于锚点被建模为线,因此给定锚点的兴趣点是截取锚点的虚拟线的点(考虑到光栅化线被缩减为要素图的尺寸)。对于每个yj= 0,1,2,.。。HF-1,将会有一个单独的相应的坐标

其中(xorig,yorig)和θ分别是锚线的原点和斜率,而δback是主干的全局跨步。因此,每个锚I将具有其对应的特征向量aloc i ∈ RCF HF(列向量表示法),该向量由携带局部特征信息(局部特征)的F汇集而成。在锚的一部分在F的边界之外的情况下,aloc i是零填充的。
请注意,池化类似于Fast R-CNN的[8]感兴趣区域投影(RoI投影),然而,不是使用建议的池化,而是通过使用锚本身来实现单级检测器。此外,RoI池层(用于生成固定大小的特征)对于我们的方法不是必需的。与仅利用特征图边界的Line-CNN [13]相比,我们的方法可以潜在地探索所有的特征图,这使得能够使用具有较小感受野的更轻量级主干。

3.4 注意力机制

根据模型架构的不同,集合特征向量携带的信息最终大多是本地的。对于更浅更快的模型来说尤其如此,它们倾向于利用具有较小感受野的主干。然而,在某些情况下(例如有遮挡的情况),局部信息可能不足以预测车道的存在及其位置。为了解决这个问题,我们提出了一种注意力机制,它作用于局部特征(aloc ),以产生聚集全局信息的附加特征(aglob)。

基本上,注意力机制结构由全连接层Latt组成,它处理局部特征向量aloci,并为每个锚j输出概率(权重)wi,公式如下:

然后,将这些权重与局部特征相结合,以产生相同维度的全局特征向量:

自然,整个过程可以用矩阵乘法有效地实现,因为对所有锚执行相同的过程。让N成为锚点的数量。设Aloc= [aloc 0,。。。,aloc N]是包含局部特征向量(作为行)的矩阵,W = [wi,j]N×N权重矩阵wi,在等式(2)中定义。因此,全局特征可以计算为:

3.5 预测

对于每个车道线,预测得到的各自锚点包含三个主要部分:
第一, K + 1 概率吧(k为k条车道线,一为背景或者无效预测)
第二,预测和锚线之间的水平距离
第三,建议的长度l(有效偏移量的数量)。建议的起始指数直接由锚点原点的y坐标决定(yorig,见第3.1节)。
为了生成最后的预测,本地和全局信息共同组成增强的特征向量。这个增广向量被馈送到两个并联的全连接层,一个用于分类(Lcls)和一个用于回归(Lreg),它们产生最终预测。

3.6 非极大抑制(NMS)

像在基于锚的深度检测中一样,NMS对于减少误报数量至关重要。在提出的方法中,基于《Line-CNN: End-
to-end traffic line detection with line proposal unit》中提出的车道距离度量,在训练和测试阶段都应用了该程序。两条车道之间的距离基于它们共同的有效指数(或y坐标)计算。让s0= max(sa,sb)和e0= min(ea,eb)定义这些常用指数的范围。因此,车道距离度量被定义为

3.7. Model training

在训练期间,上一条等式中的距离度量也用于定义正锚和负锚。首先,这个度量用于测量每个锚(在NMS没有过滤的锚)和地面真实车道之间的距离。随后,具有距离的锚(等式。5)低于阈值τ的被认为是阳性,而距离大于τ的被认为是阴性。那些阈值之间有距离的锚点(及其相关提议)将被忽略。多任务损失中使用的剩余Np&nare定义为:

其中,pi、RI是锚I的分类和回归输出,而p和r是锚I的分类和回归目标。回归损失仅使用长度l和x坐标值来计算,该长度l和x坐标值对应于建议和基础事实共同的指数。x坐标的公共索引(s0和e0之间)的选择类似于车道距离(等式(5)),但是e0 = egtinstead为e0= min(eprop,egt),其中epropand分别是建议及其相关地面事实的索引。如果使用建议eprop中预测的结束指数,训练可能会因收敛到退化解而变得不稳定(例如,eprop可能会收敛到零)。Lclsand和Lregare函数分别代表焦点损失[14]和平滑L1。如果锚I被认为是负的,它对应的Lregis等于0。因子λ用于平衡损耗分量。

3.8.锚过滤提高速度效率

全套锚包括总共2,782个锚。这个提升的数字是限制模型速度的主要因素之一。由于大量锚在训练期间将是无用的(例如,一些锚可能具有训练数据集中所有图像的水平线以上的起点),因此可以减小集合的大小。为了选择在训练和测试阶段忽略哪些锚,该方法测量训练集中每个锚被标记为阳性的次数(与训练中的标准相同)。最后,只有顶部标记的锚被保留以供进一步处理(也是在测试期间)。

4.实验

我们的方法在两个最广泛使用的车道检测数据集(tussimple[24]和CULane [17])和最近发布的基准(LLAMAS [3])上进行了评估。表1显示了数据集的概况。本节开始描述效率指标和一些实施细节。所有实验都使用数据集创建者设置的默认度量参数,这些参数与相关作品使用的参数相同。前三小节讨论了每个数据集的实验结果(包括数据集描述和评估指标)。最后两个小节涉及效率权衡实验和零件烧蚀研究。

效率指标

论文设计到两个与效率相关的指标:每秒帧数(FPS)和运算量(MACs)。一个MAC大约是两次浮点运算。FPS是使用每批单个图像和恒定输入计算的,因此度量不依赖于输入/输出操作,而只依赖于模型的效率。

实验细节

除非明确指出,否则所有输入图像的大小都会调整为高×宽= 360×640像素。对于所有的训练总,Adam优化器用于CULane上的15个时期和TuSimple上的100个时期(巨大的差异是由于数据集大小之间的巨大差异)。对于数据增强,随机仿射变换与随机水平翻转一起执行(具有平移、旋转和缩放)。大多数实验和所有FPS测量都是在搭载英特尔i9-9900KS和RTX 2080 Ti的机器上计算的。模型参数为Npts= 72,Nanc = 1000,τp= 15,τn= 20。**使用的数据集不提供车道类型(例如,虚线或实线),因此,我们设置K = 1(根据第3.5节)。**有关更多详细信息和参数值,可以访问code1以及每个实验的配置。

评估指标
在TuSimple上,三个标准指标是错误发现率(FDR)、假阴性率(FNR)和准确性。精确度定义为


Results
LaneA TT在TuSimple上的结果以及其他最先进的方法显示在表2和图3(左侧)中。定性结果如图2所示(顶行)。如前所述,就准确性而言,LaneATT是与其他最先进的方法不相上下。然而,同样清楚的是,这个数据集中的结果已经饱和(高值),可能是因为它的场景并不复杂,并且度量是许可的[23]。不同方法之间的性能差异很小就证明了这一点,这与更复杂的数据集和不太许可的度量的结果形成对比(如第4.2节所示)。尽管如此,我们的方法比其他方法快得多。文献[20]中提出的方法是唯一一种与我们的方法速度相当的方法。由于FDR和FNR指标没有在他们的工作中报告,我们使用发布的代码计算它们并报告这些指标。虽然他们达到了很高的精度,但故障诊断率还是很高的。例如,使用ResNet-122时,我们的最高误报率为5.64%,而他们的最低误报率为18.91%,几乎高出四倍。


4.2. CULane

数据集描述。CULane [17]是最大的公开可用的车道检测数据集之一,也是最复杂的数据集之一。所有图像均为1640 × 590像素,所有测试图像分为拥挤、夜晚、无可见线条等九类


表3。上面是在CULane中最先进的成果。由于“cross”类别中的图像没有车道,因此报告的数字是误报的数量。为了更公平地比较,我们在与我们相同的机器和条件下测量了最快方法([20])的FPS。源代码可用的方法的最佳和次佳结果分别用粗体和下划线标出

评估指标

Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection相关推荐

  1. PolyLaneNet:基于深度多项式回归的车道估计(PolyLaneNet: Lane Estimation via Deep Polynomial Regression)

    官方源代码:https://github.com/lucastabelini/PolyLaneNet 摘要 车道线检测要求实时性(>=30FPS). 引言 车道线检测很重要巴拉巴拉... 车道线 ...

  2. 【论文解读】A review of recent advances in lane detection and departure warning system(车道线检测综述)

    Pattern Recognition 2017 原文链接:https://www.sciencedirect.com/science/article/abs/pii/S003132031730326 ...

  3. Arm架构CPU服务器

    Arm架构CPU服务器 CPU作为计算机设备的运算和控制核心,负责指令读取.译码与执行,因研发门槛高.生态构建难,被认为是集成电路产业中的"珠穆朗玛峰".纵观全球,Intel.AM ...

  4. Spatial As Deep: Spatial CNN for Traffic Scene Understanding论文翻译

    Spatial As Deep: Spatial CNN for Traffic Scene Understanding论文翻译 Abstract摘要 Convolutional neural net ...

  5. Linux常用20条命令

    Linux常用20条命令 假装这里有个标题 1.cd 2.ls 3.grep 4.find 5.cp 6.mv 7.rm 8.ps 9.kill 10.kill all 11.file 12.tar ...

  6. 基于先验时间一致性车道线的IPM相机外参标定

    文章:Online Extrinsic Camera Calibration for Temporally Consistent IPM Using Lane Boundary Observation ...

  7. 车道线检测综述及新工作汇总

    编辑丨3D视觉工坊 车道线检测综述及近期新工作--为ADAS.自动驾驶服务. 部分视频效果展示: https://www.bilibili.com/video/BV1E54y1V7G4 https:/ ...

  8. 生信分析流程构建的几大流派

    导言 构建生信分析流程是生物信息学从业人员必备的技能之一,对该项能力的评估常常是各大公司招录人员的参考项目之一. 在进行 ngsjs 项目时,我做了一张示意图来表示一些高通量测序数据分析项目重现性的要 ...

  9. ElasticSearch 2 (1) - Getting Start

    ElasticSearch 2.1.1 (1) - Getting Start Install & Up cd elasticsearch-2.1.1/bin./elasticsearch. ...

  10. 多级NUMA:AMD EPYC互连速率、位宽与功耗的关系

    几天前我发过一篇<AMD EPYC服务器OS兼容注意事项>,正好又看到份资料,引发了我的一些思考.由规格参数倒推CPU的设计不见得是种高效的方式,但分享给大家可能也是个有意思的过程,如果我 ...

最新文章

  1. 今日 Paper | 协作蒸馏;人脸反欺骗;人脸表示;3D-CariGAN等
  2. Flask之扩展flask-migrate
  3. dict()与{},list()与[]性能对比
  4. (转载)面试时,你会问面试官哪些问题?
  5. 如何计算代码的运行性能
  6. 将本地项目上传到gitLab操作
  7. java实现求数组中元素第二大的元素
  8. (Windows)获取系统显示的缩放比例方法
  9. smtplib发送带附件的邮件
  10. 彪悍的人生,不需要解释!
  11. 2018 PHP面试真题(包括详细解析)
  12. 期货反向跟单犯法吗?
  13. 我的博客 http://aofengblog.blog.163.com/
  14. DM8数据库备份与恢复 DMRMAN
  15. VC++编写电子邮件程序 第二篇 也是用simple mapi
  16. 苹果庆祝 7 月17 日 Emoji 世界表情符号日,带来众多新表情
  17. 计算机二级c语言考试真题及答案详解,全国计算机二级考试C语言复习题与答案解析...
  18. [S3-E429]CSS布局说——可能是最全的
  19. 环境工程专业辅助计算机软件,环境工程
  20. 遇到上传的图片太大怎么办?那么来试试压缩上传

热门文章

  1. OA系统-员工的添加和查询-登录功能的实现
  2. 结构思考力-有逻辑的表达,有结构的思考
  3. php 卡路里计算,热量换算_懒人工具|www.ab173.com
  4. 什么是ESP/MSR 分区,如何建立ESP/MSR 分区
  5. JavaSE方法(构造方法)与方法重载基础练习题
  6. PPT计算机原理结构初步,测量实践初步(赖丽娟).ppt
  7. JAVA之基数排序LSD顺序
  8. windows下装ipython
  9. Android 实现 iBeacon
  10. Python课堂作业(用于复习)