车道线检测综述及近期新工作——为ADAS、自动驾驶服务。
部分视频效果展示:
https://www.bilibili.com/video/BV1E54y1V7G4
https://www.bilibili.com/video/BV1Lb4y1Z7fT
https://www.bilibili.com/video/BV15q4y1E7gU
0 前言
近期刚入门车道线检测任务,做了一点调研和整理,算是有了一点了解。发现目前车道线相关的资料还比较少,所以决定将部分整理的内容分享出来,希望可以给同样的新人一点帮助。(部分内容来自网页搜集,表示感谢,如有侵权,联系删除)
1 问题定义
如上图所示,车道线检测任务就是对当前行驶道路的车道线进行检测,给出自车道及左右两侧至少各一个车道的相关信息,如车道的ID、方向、曲率、类型(虚线、实线、黄线、白线等)、宽度、长度、速度等信息,并进行可视化输出。
2 主要难点
3 公共数据集
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:
2020:
7 部分文章原理
留待后期陆续更新。。。。,感兴趣的朋友可以关注一下。