深度学习方法
车道线检测常用数据集见 FunnyWii's Zone 车道线检测功能综述【传统方法】
基于分割的方法
利用语义分割或实例分割方法来区分图像中的车道线与其他物体或背景。这种方法将车道线检测问题转化为一个像素级分类问题。这种方法会将场景图片的每一个车道线像素都进行分类,判断该像素是否属于车道线或者背景。
由于这种方法是逐像素进行分类,所以计算量大。
语义分割方法
将图像中的每一个像素分配给一个特定的类别。对于车道线检测,像素可能被分为“车道线”或“非车道线”。
- UNet
- LaneATT:使用基于锚的注意机制,可以聚合全局信息。拥有更好的实时性。
开源代码:https://github.com/lucastabelini/LaneATT
实例分割方法
- LanNet + H-Net
开源代码:MaybeShewill-CV/lanenet-lane-detection: Unofficial implemention of lanenet model for real time lane detection (github.com)
LanNet 是一种多任务模型,它将 实例分割 任务拆解成 语义分割 和 对像素进行向量表示,然后将两个分支的结果进行聚类,得到实例分割的结果。
H-Net 是个小网络,负责预测变换矩阵 H,H 可以理解为图像的透视变换参数,以对坡度道路上的车道线进行拟合。
基于检测的方法
将场景图片划分为一个个大小相同的小网格区域,然后利用 YOLO 这样的目标检测器对每一行的网格区域进行检测判断是否属于车道线,最后将属于车道线的网格拟合为车道线。
基于检测方法的优点是速度快,处理直线车道能力较强。当环境复杂且弯道较多的情况下,基于分割的方法的效果要明显由于基于检测的方法,但是速度教慢。
- Ultra Fast Structure-aware Deep Lane Detection:模型如其名,其Inference非常快,因此部署到边缘计算设备上更加可行。区别于分割的方法,判断每个pixel是否为车道线,而是将图片分成grid,再去检测这些grid,因此运算量会大幅降低。
基于参数曲线的方法
- PolyLaneNet:使用多项式曲线回归,速度很快,但是精度不太好。
开源代码:lucastabelini/PolyLaneNet: Code for the paper entitled "PolyLaneNet: Lane Estimation via Deep Polynomial Regression" (ICPR 2020) (github.com)
论文解读:Richard日常读paper: 2020简单有效的开源车道线检测PolyLaneNet_哔哩哔哩_bilibili
基于关键点的方法
直接对车道线的实例进行检测,使用后处理对实例进行划分。受人体位姿估计的启发,将车道检测视为关键点估计和关联问题。采用自底向上的设计思想,将车道线建模为由一组均匀分布的关键点顺序相连而成的曲线。
- GANet
开源代码:https://github.com/Wolfwjs/GANet
参考文章
[1] 万斌, 童亮, 魏双叶 and 任子豪, 2021. 基于自适应滑动窗口检测的车道线识别. 北京信息科技大学学报 (自然科学版).
[2] https://bbs.huaweicloud.com/blogs/297250
[3] https://b10515007.medium.com/ufld-%E4%BB%8B%E7%B4%B9-bf939a5902e9
[4] https://zhuanlan.zhihu.com/p/513922825