文章目录
- 零. 概述
- 一、基于分割和辅助实例化信息的方法
-
- 1. HDMapNet: An Online HD Map Construction and Evaluation Framework
- 2. 3D-LaneNet: End-to-End 3D Multiple Lane Detection
- 3. LaneAF: Robust Multi-Lane Detection with Affinity Fields
- 4. Spatial As Deep: Spatial CNN for Traffic Scene Understanding
- 5. RESA: Recurrent Feature-Shift Aggregator for Lane Detection
- 6. LaneNet: Real-Time Lane Detection Networks for Autonomous Driving
- 7. Learning Lightweight Lane Detection CNNs by Self Attention Distillation
- 8. ONCE-3DLanes: Building Monocular 3D Lane Detection
- 9. End-to-End Deep Learning of Lane Detection and Path Prediction for Real-Time Autonomous Driving
- 二、基于关键点的方法
- 三、基于row-wise的方法
- 四、基于多项式回归的方法
- 五、基于anchor的方法
-
- 1. PersFormer: 3D Lane Detection via Perspective Transformer and the OpenLane Benchmark
- 2. Line-CNN: End-to-End Traffic Line Detection With Line Proposal Unit
- 3. (Lane-ATT)Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection
- 4. 3D-LaneNet: End-to-End 3D Multiple Lane Detection
- 5. Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection
- 6. Learning to Predict 3D Lane Shape and Camera Pose from a Single Image via Geometry Constraints
- 7. Eigenlanes: Data-Driven Lane Descriptors for Structurally Diverse Lanes
- 8. CLRNet: Cross Layer Refinement Network for Lane Detection
- 六、直接输出实例的方法
零. 概述
车道线检测是自动驾驶中的一个基础模块,其实也是一个由来已久的任务,早期已有很多基于传统图像处理实现的车道线检测算法。但随着大家研究的深入,车道线检测任务所应对的场景越来越多样化,逐步已经脱离了对于“白、黄色线条”这种低阶理解。目前更多的方式是寻求对于语义上车道线存在位置的检测,即使它是模糊的、被光照影响的、甚至是完全被遮挡的。
本文主要对主流的车道线检测(包括 BEV-鸟瞰图视角
和 图像视角
)方法进行总结。由于基于深度学习的方法性能远超传统方法,所以本文只总结了基于深度学习的方法。
文中车道线检测有些是有高度的3D检测
,有些没有高度的BEV检测
,统一标识了BEV,没有特别区分是否预测高度。主要分了六大类:
- 包括基于分割的方法(像素级的分类,忽略了车道线作为一个整体的问题;后处理也会引入偏差)
- 基于关键点的方法
- 基于row-wise的方法(实例级别的车道线判定仍然是问题)
- 基于多项式回归的方法(速度快,但是精度差)
- 基于anchor的方法(灵活性差,受限于anchor)
- 直接输出实例的方法
1. DataSet
2. 车道线检测难点
-
车道线一般为细长形的外观结构,需要强大的
高低层次特征融合
来同时获取全局的空间结构关系
和细节处的定位精度
; -
车道线的状态呈现具有不确定性,如被
遮挡、磨损
、道路变化时本身的不连续性、天气影响(雨、雪)等
。需要网络针对不同情况具备较强的推理能力; -
车辆的偏离或换道过程会产生自车所在
车道的切换
,车道线也会发生左/右线的切换。一些提前给车道线赋值固定序号的方法,在换道过程中会产生歧义的情况; -
车道线检测必须
实时
或更快速地执行
,以节省其他系统的处理能力; -
目前大多数方法不提供源码,导致
复用性差
;
3. 数据增强
一般通过翻转、平移、旋转、添加高斯噪声、亮度增强、增加阴影
来扩充数据集,增加模型的鲁棒性。
一、基于分割和辅助实例化信息的方法
基于分割的方法将车道线检测建模为逐像素分类问题,每个像素分类为车道区域或背景。为了区分不同的车道线,
- SCNN将不同的车道线视为不同的类别,从而将车道检测转化为多类分割任务。还提出了一种逐片CNN结构,以实现消息跨行和跨列传递。
- 为了满足实践中的实时性要求,ENet SAD应用了一种用于上下文聚合的自注意力蒸馏机制,以便允许使用轻量级主干。
- LaneNet通过将车道检测作为实例分割问题,采用了不同的车道表示方法。包括一个二进制分割分支和一个嵌入分支,将分割结果分解为车道实例。
分割方法局限:
- 需要后处理,速度慢,实例区分有困难;
- 它们还受到分割任务的局部性的影响,因此它们往往在遮挡或极端光照条件下表现更差。
1. HDMapNet: An Online HD Map Construction and Evaluation Framework
- 13 Jul 2021
- 论文: 地址
- 代码: 地址
- 概述:
- 通过MLP得到视觉bev特征,通过Pointpillar得到激光bev特征,concat得到最终bev feature。在bev feature上学习语义分割、实例分割instance embedding和方向预测direction prediction,并通过后处理得到语义要素;后处理得到的线会出现闭环;
2. 3D-LaneNet: End-to-End 3D Multiple Lane Detection
- ICCV 2019
- 论文: 地址
- 代码: 地址
- 概述:
- 将图像划分成格子,每个格子进行二分类(判断是否有线经过),另外,对有线的格子回归线段的横向偏移 、角度 (N个bins分类+offset微调)、高度偏移和Embedding vector(用于把曲线小片段聚合成车道线曲线)。在特征学习上,沿用了3D-LaneNet,都是两路的path way。只不过相机外参俯仰角、安装高度直接输入而不是模型预测。
3. LaneAF: Robust Multi-Lane Detection with Affinity Fields
- 22 Mar 2021
- 论文: 地址
- 代码: 地址
- 概述:
输出binary seg, 横纵向affinity fields,分别表示:在每行中,每个前景像素位于它所属车道线中心的左边还是右边、当前像素相较于上一行的车道线中心,是在左边还是右边。最后通过这三个预测解码得到车道线实例。
4. Spatial As Deep: Spatial CNN for Traffic Scene Understanding
- 17 Dec 2017
- 论文: 地址
- 代码: 地址
- 概述:
将车道线检测问题构建为一个多类别语义分割问题,提出spatial cnn方法来建模空间结构信息(信息向下/向上/向右/向左传播),来学习形状先验。该方法对细长的车道线检测很有效;该方法固定数量、需要聚类等处理、多类别分割模型较大,速度慢;
创新点: 提出了一种新的卷积方式:Spatial CNN,充分利用图像的空间信息。用更少的计算代价在“细长”、“大型”的物体上概括能力都很强。且引入了SCNN的baseline在车道线检测任务和语义分割任务上表现效果优异,达到了当时的SOTA水平。此外还建立了一个新的车道线检测数据集。
为什么: 由于车道线的外观信息较少、先验几何约束较明显,而CNN对同一层空间的信息利用不够、传统的方法MRF、CRF需要计算成本过高,不能满足实时性,因此需要一种计算效率高且能充分利用空间信息的方法检测车道线。
怎么做: 提出SCNN,对浅层特征体横向、竖向切开,用CNN分别对单层卷积,从四个方向(U,D,R,L)然后类似Residual Connect的方法连接下一层,从而实现在同一层之间空间信息的传播。
思考: 在2017年提出的这一方法,确实对空间信息的利用更好,但是这种传播方式类似RNN,无法做到并行计算,所以计算成本仍然比较高,笔者认为如今可以尝试使用Transformer结构达到更好的效果。
5. RESA: Recurrent Feature-Shift Aggregator for Lane Detection
- 31 Aug 2020
- 论文: 地址
- 代码: 地址
- 概述:
这篇文章是上面那个SCNN的升级,减少计算量。RESA整体思路和SCNN相同,包含四种OPs:”往上“、”往下“、”往左“、”往右“。区别是每个OPs会重复做K次,每次的stride会逐渐增加。