深度学习方法
车道线检测常用数据集见 FunnyWii's Zone 车道线检测功能综述【传统方法】
基于分割的方法
基于分割的方法利用语义分割或实例分割来区分图像中的车道线、其他物体和背景。这类方法将车道线检测问题转化为像素级分类问题,会对场景图片中的像素进行分类,判断该像素是否属于车道线。
由于这种方法逐像素进行分类,所以计算量通常较大,但在复杂弯道、遮挡、破损车道线等场景中,分割结果可以更细致。
语义分割方法
语义分割会将图像中的每一个像素分配给特定类别。对于车道线检测来说,像素可以被分为车道线或非车道线。
UNet
实例分割方法
LaneNet + H-Net
开源代码:MaybeShewill-CV/lanenet-lane-detection
LaneNet 是一种多任务模型,它将实例分割任务拆解成语义分割和像素嵌入向量表示两个分支,然后将两个分支的结果进行聚类,得到不同车道线实例。
H-Net 是一个小网络,负责预测变换矩阵 H。H 可以理解为图像到车道线拟合空间的透视变换参数,用于帮助在坡度道路或透视变化下对车道线进行拟合。
基于检测的方法
基于检测的方法不会直接对每个像素做分割,而是把车道线表示成候选点、行锚、网格分类结果、anchor 或曲线参数,再通过后处理拟合为完整车道线。这类方法通常速度较快,更适合部署在边缘计算设备上。
复杂弯道场景中,分割方法可能更细致,但通常计算更重、速度较慢;检测类或 row anchor 类方法速度更快,但对曲线复杂度、遮挡和长尾场景的建模能力依赖具体设计。
Ultra Fast Structure-aware Deep Lane Detection
Ultra Fast Structure-aware Deep Lane Detection 的 inference 非常快,因此部署到边缘计算设备上更加可行。它区别于逐像素分割方法,不是判断每个 pixel 是否为车道线,而是采用 row anchor / grid classification 思路,将图像按行和网格组织,再预测车道线在各行上的位置,因此运算量会大幅降低。
LaneATT
LaneATT 使用基于 anchor 的注意力机制,可以聚合全局信息,在速度和精度之间取得较好的平衡。
开源代码:https://github.com/lucastabelini/LaneATT
基于参数曲线的方法
PolyLaneNet
PolyLaneNet 使用多项式曲线回归,直接预测车道线曲线参数。它的速度很快,但在复杂形状或长尾场景下,精度可能受多项式表达能力限制。
开源代码:lucastabelini/PolyLaneNet
论文解读:Richard 日常读 paper: 2020 简单有效的开源车道线检测 PolyLaneNet
基于关键点的方法
基于关键点的方法直接对车道线实例进行检测,并通过后处理对实例进行划分。受人体姿态估计启发,这类方法可以将车道检测视为关键点估计和关联问题。它通常采用自底向上的设计思想,将车道线建模为由一组均匀分布的关键点顺序相连而成的曲线。
GANet
开源代码:https://github.com/Wolfwjs/GANet
参考文章
[2] 车道线检测综述
[3] UFLD 介绍
[4] 车道线检测算法综述
[5] LaneATT
[7] PolyLaneNet
[8] GANet
评论