【车道线检测论文阅读笔记——经典论文粗读汇总】

[阅读心得] 车道线检测论文粗读笔记

  • 前言
  • 一、Segmentation
    • 1. SCNN
    • 2. ENet
    • 3. LaneNet
    • 4. SAD
    • 5. DSUNet
  • 二、Mark
    • 1. UFast
    • 2. FOLOLane
    • 3. Line-CNN
    • 4. Lane-ATT
    • 5. E2E-LMD

前言

  1. 本篇目的:熟悉自动驾驶基本知识,了解自动驾驶领域的写作思路。顺便记录一下各个论文的主要工作
  2. 预计完成时间:一周内完成
  3. 日志:
    1) 1.4日:完成seg部分论文粗读以及SCNN论文的精读,明天开始mask部分论文粗读
    2) 1.5日:完成mask部分粗读2篇
    3) 1.6日:完成其余全部论文,并整理、分类完成。

一、Segmentation

把车道线检测视作semantic segmentation任务来做,这是较早被提出也是相对主流的车道线检测任务的解决方案。下述工作都基本延续着这一个思路在做。


1. SCNN

[论文]Spatial As Deep: Spatial CNN for Traffic Scene Understanding
[代码]https://github.com/XingangPan/SCNN
【车道线检测论文阅读笔记——经典论文粗读汇总】_第1张图片
创新点: 提出了一种新的卷积方式:Spatial CNN,充分利用图像的空间信息。用更少的计算代价在“细长”、“大型”的物体上概括能力都很强。且引入了SCNN的baseline在车道线检测任务和语义分割任务上表现效果优异,达到了当时的SOTA水平。此外还建立了一个新的车道线检测数据集。
为什么: 由于车道线的外观信息较少、先验几何约束较明显,而CNN对同一层空间的信息利用不够、传统的方法MRF、CRF需要计算成本过高,不能满足实时性,因此需要一种计算效率高且能充分利用空间信息的方法检测车道线。
怎么做: 提出SCNN,对浅层特征体横向、竖向切开,用CNN分别对单层卷积,从四个方向(U,D,R,L)然后类似Residual Connect的方法连接下一层,从而实现在同一层之间空间信息的传播。
思考: 在2017年提出的这一方法,确实对空间信息的利用更好,但是这种传播方式类似RNN,无法做到并行计算,所以计算成本仍然比较高,笔者认为如今可以尝试使用Transformer结构达到更好的效果。


2. ENet

[论文]ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation
【车道线检测论文阅读笔记——经典论文粗读汇总】_第2张图片
创新点: 提出了一种轻量化的端到端网络结构,ENet,用于移动端语义分割。权衡了速度和精度,能够达到实时性。
为什么: 当时的CNN网络结构大多使用VGG16做backbone,且大量用到Fully Connected层,参数量巨大,计算成本高,大多需要在工作站上运行,无法在算力较弱的边缘端运行
怎么做: 提出ENet,参考了Residual Block、PRelu等方法,提高了每层CNN的效率,使最后搭建的网络结构仅用很少的参数量获得较好的效果。


3. LaneNet

[论文]Towards End-to-End Lane Detection: an Instance Segmentation Approach
【车道线检测论文阅读笔记——经典论文粗读汇总】_第3张图片
创新点: 提出了一种端到端的车道线检测网络LaneNet,能够达到50FPS。不同于先前的网络设计,LaneNet不受车道线数目变化的影响。此外,训练了一种视角转换的网络H-Net,更加鲁棒地完成视角变换。
为什么: 当时的车道线检测网络受限于预设好的车道线数目,不能应对车道线变换问题。
怎么做: LaneNet用两个分支分别完成分割和ID提取任务,随后聚类完成对不同车道线的区分。输出结果通过H-Net生成的单应矩阵拟合,后还原回原图。解决了车道线变化和视角波动的问题。

4. SAD

[论文]Learning Lightweight Lane Detection CNNs by Self Attention Distillation
[代码]https://github.com/cardwing/Codes-for-Lane-Detection

【车道线检测论文阅读笔记——经典论文粗读汇总】_第4张图片
创新点: 提出了一种基于注意力图的知识蒸馏方式,在不增加新的标签和监督需求的条件下,提高车道线检测网络的训练效果,并且只在训练时采用,推理时间没有增加。并且充分分析了SAD的使用条件。
为什么: 车道线检测作为segmentation任务存在正负样本不均衡、目标被遮挡、光线不足等困难场景的限制。之前的工作尝试从MTL(multi-task learning)和MP(message passing)两种手段提升模型的应对能力。但是MTL需要额外的人工标注、MP则占用较大推理时间,均不够理想。
怎么做: SAD是一种自监督学习的策略,在原始网络训练过一定数量的epoch后,令当前层网络学习下一层网络,来提高每一层网络的捕捉信息能力,从而提高整个网络的性能。并且这一策略只在训练时使用。

5. DSUNet

[论文]End-to-End Deep Learning of Lane Detection and Path Prediction for Real-Time Autonomous Driving
【车道线检测论文阅读笔记——经典论文粗读汇总】_第5张图片
创新点: 将Depthwise Separable Convolution引入到UNet中,提出了一种轻量化的分割网络DSUNet,在1.6倍推理速度的情况下达到了与Unet几乎相同的性能。
为什么: 自动驾驶场景下的算力较低,必须使用轻量化的网络
怎么做: 将Unet中的常规卷积全部替换成Depthwise Conv+Pointwise Conv的组合,从而减小参数量


二、Mark

不同于分割方式,下述工作大多基于anchor或者key-point等模式,利用车道线的几何约束进行回归,各自工作的思想独创性比较强,百花齐放。


1. UFast

[论文]Ultra Fast Structure-aware Deep Lane Detection
[代码]https://github.com/cfzd/Ultra-Fast-Lane-Detection

【车道线检测论文阅读笔记——经典论文粗读汇总】_第6张图片
创新点: 提出了一种新的row-based范式的车道线检测网络UFast,不同于以往的分割思路,把图像分割成row anchor与grid cell进行分类识别是否为车道线,有效解决了计算成本过高no-visual-clue这两个问题。还提出了一种利用车道线先验信息的structural loss。提出的方法在速度和精读两个层面均达到了SOTA。
为什么: 先前的工作大多把车道线检测看作一个semantic segmentation任务,但是这样一是会导致计算成本过高,二是没用充分利用车道线的先验信息。
怎么做: 提出新的范式UFast,把图像按row分割成若干行,在每个行中分出若干grid cells,对每个cell进行分类识别,判断是否属于车道线,这样的做法相比segmentation任务对原图全部像素进行处理,参数量大幅减小,同时显式地展示了车道线的位置信息,方便后面利用先验提升精度。随后,利用同一车道线相邻处距离近和车道线多为直线两个先验信息提出两种loss,提高训练效果。最后,在训练中利用增加seg任务分支,增加网络的特征融合能力,防止只训练classification任务会过早饱和而影响性能。


2. FOLOLane

[论文]Focus on Local: Detecting Lane Marker from Bottom Up via Key Point
【车道线检测论文阅读笔记——经典论文粗读汇总】_第7张图片

创新点: 提出一种新的车道线检测网络,FOLOLane,把车道线检测视作关键点评估+关联任务。降低计算成本的同时避免了Segmentation策略中噪声大、信息冗余的问题。最后FOLOLane在CULane和TuSimple数据集上均获得了SOTA的精度。
为什么: 主流的方法把车道线检测视作分割任务,但是这样一是计算量大,二是pixel-wise的输出存在信息的冗余、会带来大量的噪声干扰,导致后去post-processing过程聚类可能出错,影响精度。
怎么做: 通过轻量级的分割网络,输出两个分支,一个分支输出heatmap图表示像素是否是关键点,另一个分支输出offsets用于精准补偿关键点的位置。输出的网络通过关联算法完成局部到全局的曲线关联,形成多条完整的curve


3. Line-CNN

[论文]Line-CNN: End-to-End Traffic Line Detection With Line Proposal Unit
【车道线检测论文阅读笔记——经典论文粗读汇总】_第8张图片
创新点: 提出了一种端到端的车道线检测网络L-CNN,类比Faster R-CNN中的RPN结构,提出针对车道线的LPU(Line Proposal Unit)模块,把车道线检测视作一种基于line-anchor的检测任务,这样把每条车道线视为一个整体,利用了高维语义信息,能够有效地应对遮挡、残缺等情况。
为什么: 车道线检测任务具有目标虚实结合分离合并情况多发环境多变等难点,而目前的车道线检测方法大多较少地利用到了车道线的全局信息。
怎么做: 图片线通过作为backbone的ResNet获取特征图,随后对输出的特征图左、下、右边界进行1*1卷积的窗口滑动,对每个位置提出line proposal,并通过对预设的line anchor进行位置补偿,得到精准的车道线位置。


4. Lane-ATT

[论文]Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection
[代码]https://github.com/lucastabelini/LaneATT
【车道线检测论文阅读笔记——经典论文粗读汇总】_第9张图片
创新点: 提出了一种基于line的anchor-based网络,Lane-ATT,将车道线检测视为anchor-based检测任务来做。并且引入了attention机制将局部特征和全局特征融合,以便更好的应对部分遮挡、表示磨损等情况。
为什么: 车道线检测任务中,基于多项式回归的方法受数据长尾分布的影响效果差,而基于语义分割的方法实时性不好,计算成本过高。
怎么做: 输入图片通过resnet输出特征图,再基于line anchor进行pooling操作,将输出的向量输入胡注意力模块融合局部和全局信息。最后通过cls和reg两个分支进行学习,输出车道线检测结果。


5. E2E-LMD

[论文]End-to-End Lane Marker Detection via Row-wise Classification

【车道线检测论文阅读笔记——经典论文粗读汇总】_第10张图片
创新点: 提出了一种车道线检测网络,E2E-LMD。把车道线检测视作一个逐行分类任务(row-wise),利用了车道线的几何先验信息,在CULane上达到了当时的SOTA。
为什么: 之前的车道线检测方法大多采取segmentation+post-processing的方式进行,但是这种模式的第一阶段没有充分利用车道线本身的几何约束,所以导致后续复杂且高计算成本的聚类等工序。
怎么做: 在分割网络的backbone后,接共享的HRM层对宽度降维,随后输出三个分支,输出分别为当前车道线的置信度、当前行的置信度,以及对应行车道线的坐标。只有前两个分支输出的置信度均大于阈值,第三个分支输出的坐标才被采纳。另外为了增强网络的分辨力,在HRM层中引入了注意力模块SE block。

你可能感兴趣的:(自动驾驶,深度学习,计算机视觉)