注:部分信息借鉴互联网,感谢相关作者分享。
目录
-
背景
车道线检测是一个基本计算机视觉问题,具有广泛的应用(例如,ADAS Advanced Driver Assistance System 高级辅助自动驾驶和自动驾驶)。
车道线检测有两种主流方法,传统图像处理方法和深度学习方法。
-
难点
- 车道线一般为细长形的外观结构,需要强大的高低层次特征融合来同时获取全局的空间结构关系和细节处的定位精度。
- 车道线的形状呈现具有不确定性,如遮挡、磨损、道路变化时本身的不连续性、天气影响(雨、雪)等。需要网络针对不同情况具备较强的推理能力。
- 车辆的偏离或换道过程会产生出车所在车道的切换,车道线也会发生左/右线的切换。一些提前给车道线赋值固定序号的方法,在换道过程中会产生歧义的情况;
- 车道线检测必须实时或更快速地执行,以便节省其他系统的处理能力;
- 目前大多数方法不提供源码,导致复用性能差。
-
数据集
车道线检测使用的数据集如下表所示。最常用数据集:tuSimple、CULane、LLAMAS等。
数据集名 | 总数量 | 标注方式 | 车道线类型 | 图像分辨率 | 数据集说明 | 信息说明 |
tuSimple | 6K | line | 未标注 | 1280×720 | 采集至美国高速公路数据 | |
CULane | 133K | line | 未标注 | 1640*590 | 采集至北京公路数据,场景包含拥挤、黑夜等八种难以检测的情况。 | |
BDD100K | 100K | line | 标注 | 1280×720 | 数据集包含多种自动驾驶感知任务,数据集较新,算法采用度目前不高 | |
ApolloScape | 110K | mask | 标注 | 3384*2710 | 车道线以掩码的形式标注,包含2维或3维28个类别 | |
LLAMAS | 100K | 使用高精地图自动标注的数据,全是高速场景 | ||||
Caltech | 1.2K | line | 640*480 | 场景简单视角较好 | ||
Comma2k19 | ||||||
CurveLanes | 135K | line | 2650*1440 | 华为弯道检测数据集 135k张图, 采用三次样条曲线手动标注所有车道线,包括很多较为复杂的场景,如S路、Y车道,还有夜间和多车道的场景 | ||
ELAS | ||||||
OpenLane | ||||||
ONCE-3DLanes | ||||||
VPGNet | 20K | 包含白天(非雨天、雨天、大雨天)、夜晚的数据,同时包含了各种车道线类型,以及其他不同类型的车道标识(左转箭头、直行箭头、斑马线等) | ||||
Road Marking | 1443 | |||||
KITTI Road | 579 |
注:表中除了数据集名称外,其他数据可能不太精确,以实际下载数据情况为准。
-
算法
车道线检测算法总体可以分为两大类:基于传统图像处理的车道线检测算法和基于深度学习处理的车道线检测算法。
1. 基于传统图像处理的车道线检测算法
通过边缘检测、滤波等方法检测车道线区域,然后结合霍夫变换、RANSAC等算法进行车道线检测,需要人工手动调整滤波器算子,根据算法针对的街道场景特点手动调节参数,工作量巨大,鲁棒性较差。
常用算法(可参考:https://wenku.baidu.com/view/031a0bcb0a75f46527d3240c844769eae009a3e6.html):
基于霍夫变换的车道线检测
基于LSD直线的车道线检测
基于俯视图变换的车道线检测
基于拟合的车道线检测
基于平行透视灭点的车道线检测
局限性:
应用场景受限:霍夫直线检测算法准确但不能做弯道检测,拟合方法可以检测弯道但是不稳定,仿射变换可以做多车道检测但在遮挡等情况下干扰严重。
透视变换操作会对相机有一些具体的要求,在变换前需要调整图像,而且摄像机的安装和道路本身的倾斜都会影响变换效果。
部分参考文档和代码:
https://blog.csdn.net/zimiao552147572/article/details/106090203/
2. 基于深度学习处理的车道线检测算法
目前基于深度学习的方法由于具有较高的精度,成为当前的主流方式。
常用算法:
基于语义分割的方法
SCNN:对细长的车道线检测很有效,但速度慢,仅7.5 FPS。
SAD:提出自蒸馏模块,基于信息蒸馏解决了大主干网络对速度的影响。
行分类方法
一种基于输入图像网格划分的车道线检测方法。对于每一行,模型预测最有可能的单元格包含车道标记的一部分。由于每一行只选择一个单元格,因此对图像中的每个可能的车道重复此过程。
算法:E2E-LMD、IntRA-KD、UFAST等,其中UFAST实现了当前最快的检测速度,达到了200FPS。
基于anchor的方法
使用目标检测算法,类似yolov5和ssd等,如Line-CNN、LaneATT等,其中LaneATT提出了新的基于anchor的车道线检测注意力机制,表现SOTA,达到了250 FPS。
基于多项式方法
使用多项式的方式拟合车道线。比如https://arxiv.org/abs/2203.02431这篇文章。
基于其他方法
FastDraw:不需要后处理,需要分割和行分类的方法。
PolyLaneNet:速度快,但是由于现在的数据集不均衡,造成一些偏差。
局限性:
如果网络结构太大,实时性较差,特别对车载摄像头有30 FPN的速度要求。
部分参考文档和代码:
Lane Detection | Papers With Code (最新的车道线检测论文及代码)
-
指标
1. Precision,Recall,F1-measuer,准确率
Precision为精确率,precision = TP / (TP + FP)
Recall为召回率,recall = TP / (TP + FN)
F1-measure为综合评估精确率和召回率的指标,F1-measure = 2 * (Precision * Recall) / (Precision + Recall)
accurate,acc = (TP + TN) / (TP + TN + FP + FN)
其中:
TP: IoU > 0.5的预测;
FP:IoU < 0.5的预测;
TN:没有该车道且预测没有该车道;
FN:有该车道但被预测为没有该车道;
2. 其他指标
Runtime(ms):推理时间
MACs(multiply-accumulate operations)
FPS:推理速度
FDR(false discovery rate):误检率
FNR(false negtive rate):漏检率
-
车道线检测传统算法思维导图
-
CVRP2022及历年车道线检测算法和论文
详情参考网址:https://paperswithcode.com/task/lane-detection/latest#code
文章出处登录后可见!