车道线检测综述及近期新工作——为ADAS、自动驾驶服务。
部分视频效果展示:
https://www.bilibili.com/video/BV1E54y1V7G4
https://www.bilibili.com/video/BV1Lb4y1Z7fT
https://www.bilibili.com/video/BV15q4y1E7gU
0 前言
近期刚入门车道线检测任务,做了一点调研和整理,算是有了一点了解。发现目前车道线相关的资料还比较少,所以决定将部分整理的内容分享出来,希望可以给同样的新人一点帮助。(部分内容来自网页搜集,表示感谢,如有侵权,联系删除)
1 问题定义
如上图所示,车道线检测任务就是对当前行驶道路的车道线进行检测,给出自车道及左右两侧至少各一个车道的相关信息,如车道的ID、方向、曲率、类型(虚线、实线、黄线、白线等)、宽度、长度、速度等信息,并进行可视化输出。
2 研究难点
. 车道线一般为细长形的外观结构,需要强大的高低层次特征融合来同时获取全局的空间结构关系和细节处的定位精度;
. 车道线的状态呈现具有不确定性,如被遮挡、磨损、道路变化时本身的不连续性、天气影响(雨、雪)等。需要网络针对不同情况具备较强的推理能力;
. 车辆的偏离或换道过程会产生自车所在车道的切换,车道线也会发生左/右线的切换。一些提前给车道线赋值固定序号的方法,在换道过程中会产生歧义的情况;
. 车道线检测必须实时或更快速地执行,以节省其他系统的处理能力;
. 目前大多数方法不提供源码,导致复用性差;
3 公共数据集
Caltech:约1.2k张图,场景比较简单,且视角较好;大小:640x480;
VPGNet:20k张图,包含白天(非雨天、雨天、大雨天)、夜晚的数据,同时包含了各种车道线类型,以及其他不同类型的车道标识(左转箭头、直行箭头、斑马线等);
TuSimple:72k张图,位于高速路,天气晴朗,车道线清晰,特点是车道线以点来标注;大小:1280x720;
CULane:98k张图,包含拥挤、黑夜、无线、暗影等8种难以检测的情况,最多标记4条车道线;大小:1640x590;
BDD100k:120M张图, 包含美国4个区的白天、黑夜各种天气状况,二维8类别车道线;大小:1280x720;
ApolloScape:140k张图,特点是车道线以掩码的形式标注,包含2维或3维28个类别;大小:3384x2710;
CurveLanes:华为弯道检测数据集 135k张图, 采用三次样条曲线手动标注所有车道线,包括很多较为复杂的场景,如S路、Y车道,还有夜间和多车道的场景。训练集10万张,验证集2万张,测试集3万张;大小:2650x1440;
LLAMAS:19年新提出的,100k张图,标注不是人工标注,而是高精地图生成的,全是高速场景。
目前,我看到的最新的学术论文里,大都是用的 TuSimple 和 CULane 两个数据集进行性能对比,也有文章使用 LLAMAS。
4 研究方法
4.1 传统图像方法
通过边缘检测滤波等方式分割出车道线区域,然后结合霍夫变换、RANSAC等算法进行车道线检测。这类算法需要人工手动去调滤波算子,根据算法所针对的街道场景特点手动调节参数,工作量大且鲁棒性较差,当行车环境出现明显变化时,车道线的检测效果不佳。主流方式如下:
. 基于霍夫变换的车道线检测;
. 基于LSD直线的车道线检测;
. 基于俯视图变换的车道线检测;
. 基于拟合的车道线检测;
. 基于平行透视灭点的车道线检测;
局限性:
. 应用场景受限;霍夫直线检测方法准确但不能做弯道检测,拟合方法可以检测弯道但不稳定,仿射变换可以做多车道检测但在遮挡等情况下干扰严重。
. 透视变换操作会对相机有一些具体的要求,在变换前需要调正图像,而且摄像机的安装和道路本身的倾斜都会影响变换效果。
4.2 基于深度学习的方法
目前基于深度学习的方法由于具有较高的精度,成为当前的主流方式,大抵可以分为以下四类:
1)基于语义分割的方法
SCNN:对于细长的车道线检测是很有效的但是速度慢(7.5FPS),这阻碍了它在现实世界中的适用性。
SAD:提出了一种自注意蒸馏模块,基于信息蒸馏为了解决大主干网络对速度的影响,可以聚合文本信息。 该方法允许使用更轻量级的骨干,在保持实时效率的同时实现高性能。
CurveLanes-NAS:使用神经架构搜索(NAS)来寻找更好的骨干。 虽然取得了最先进的结果,但在计算上非常耗时。(华为诺亚方舟实验室)
2)行分类方法
一种基于输入图像网格划分的车道检测方法。 对于每一行,模型预测最有可能的单元格包含车道标记的一部分。 由于每一行只选择一个单元格,因此对图像中的每个可能的车道重复此过程。
如: E2E-LMD、IntRA-KD、UFAST等,其中UFAST实现了当前最快的检测速度,达到了300FPS(后面详细介绍)。
3)基于anchor的方法
类似YOLOv3或SSD的单阶段模型,如Line-CNN、LaneATT等,其中LaneATT提出了新的基于anchor的车道检测注意机制,表现SOTA,达到了250FPS(后面详细介绍)。
4)其他方法
FastDraw :不需要后处理,需要分割和行分类的方法。虽然速度高。但是精确度不高。
PolyLaneNet:速度快,但是由于现有的数据集不均衡,造成一些偏差。
附:(本节提到的几篇文章出处)
SCNN—Spatial As Deep: Spatial CNN for Traffic Scene Understanding. AAAI, 2018.
SAD—Learning lightweight Lane Detection CNNs by Self Attention Distillation. ICCV, 2019.
CurveLanes-NAS—CurveLane-NAS: Unifying Lane Sensitive Architecture Search and Adaptive Point Blending. ECCV,2020.
E2E-LMD—End-to-End Lane Marker Detection via Row-wise Classification. CVPR Workshop, 2020.
IntRA-KD—Inter-Region Affinity Distillation for Road Marking Segmentation. CVPR, 2020.
UFAST—Ultra Fast Structure aware Deep Lane Detection. ECCV, 2020.
Line-CNN—Line-CNN: End-to-end traffic line detection with line proposal unit. Intelligent Transportation Systems,2019.
LaneATT—Keep your eyes on the lane: Real-time attention-guided lane detection. CVPR, 2021.
FastDraw—FastDraw: Addressing the Long Tail of Lane Detection by Adapting a Sequential Prediction Network.CVPR, 2019.
PolyLaneNet—PolyLaneNet: Lane Estimation via Deep Polynomial Regression. ICPR, 2020.
5 评价指标
两个当前主流数据集 TuSimple 和 CULane 采用不用的评价指标。
首先,在判断 True or False时,主要有两种方式:
1.End Point,通过判断线的端点间的距离及其包围面积是否超过阈值;(TuSimple数据集)
2.IoU,预测和标注都画出来,像图像分割一样计算IoU的重叠面积,小于阈值判为负;(CULane数据集)
指标1—准确度(TuSimple):
Cclip:预测正确的道路点数;
Sclip:所有的道路点数;
指标2—F1-measure(CULane):
TP: IoU>0.5的预测;
FP: IoU<0.5的预测;
TN: 没有这条车道且预测没有该车道;
FN: 有这条车道但被预测为没有该车道;
其它指标:
Runtime(ms)
MACs(multiply-accumulate operations)
FPS
FDR(false discovery rate)
FNR(false negative rate)
6 近期比较新的方法
2021:
1. Structure Guided Lane Detection IJCAI 2021 美团
2. CondLaneNet: a Top-to-down Lane Detection Framework Based on Conditional Convolution
3. Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection CVPR 2021 代码开源
4. YOLinO: Generic Single Shot Polyline Detection in Real Time
5. LaneAF: Robust Multi-Lane Detection with Affinity Fields 代码开源
6. Robust Lane Detection via Expanded Self Attention
7. End-to-End Deep Learning of Lane Detection and Path Prediction for Real-Time Autonomous Driving
8. RESA: Recurrent Feature-Shift Aggregator for Lane Detection AAAI 2021 代码开源
9. End-to-end Lane Shape Prediction with Transformers WACV 2021 代码开源
2020:
1. 3D-LaneNet+: Anchor Free Lane Detection using a Semi-Local Representation
2. Keep your Eyes on the Lane: Attention-guided Lane Detection 代码开源
3. RONELD: Robust Neural Network Output Enhancement for Active Lane Detection ICPR 2020 代码开源
4. CurveLane-NAS: Unifying Lane-Sensitive Architecture Search and Adaptive Point Blending ECCV 2020 Datasets
5. Towards Lightweight Lane Detection by Optimizing Spatial Embedding ECCV 2020 Workshop
6. Structure-Aware Network for Lane Marker Extraction with Dynamic Vision Sensor
7. Lane Detection Model Based on Spatio-Temporal Network with Double ConvGRUs
8. Heatmap-based Vanishing Point boosts Lane Detection
9. Synthetic-to-Real Domain Adaptation for Lane Detection
10. E2E-LMD: End-to-End Lane Marker Detection via Row-wise Classification
11. SUPER: A Novel Lane Detection System
12. Ultra Fast Structure-aware Deep Lane Detection ECCV 2020 代码开源
13. PolyLaneNet: Lane Estimation via Deep Polynomial Regression 代码开源
14. Inter-Region Affinity Distillation for Road Marking Segmentation CVPR 2020 代码开源
15. Gen-LaneNet: A Generalized and Scalable Approach for 3D Lane Detection ECCV 2020 代码开源
16. Detecting Lane and Road Markings at A Distance with Perspective Transformer Layers
17. Semi-Local 3D Lane Detection and Uncertainty Estimation
18. FusionLane: Multi-Sensor Fusion for Lane Marking Semantic Segmentation Using Deep Neural Networks 代码开源
19. PINet:Key Points Estimation and Point Instance Segmentation Approach for Lane Detection 代码开源
20. Better-CycleGAN + ERFNet: Lane Detection in Low-light Conditions Using an Efficient Data Enhancement : Light Conditions Style Transfer submitted to IV 2020
21. Multi-lane Detection Using Instance Segmentation and Attentive Voting ICCAS 2019
7 部分文章原理
留待后期陆续更新。。。。,感兴趣的朋友可以关注一下,能点个赞的话更好啦。
欢迎自动驾驶同行或者感兴趣的朋友加入交流群,一起玩!