论文链接:https://arxiv.org/abs/1802.05591?context=cs
代码https://github.com/MaybeShewill-CV/lanenet-lane-detection
这篇论文是做车道线检测的,之前的检测方法都限制于检测预定义的固定数量的车道线,本文将车道线检测问题看做一个实例分割问题,并实现了端到端的训练,速度是50fps。还一个亮点是考虑到地面坡度的问题,使用曲线拟合的方法来增大精确度。
车道线检测思路是:将车道线检测任务分成两个分支,车道检测分支与车道嵌入分支。车道分割分支就是将图片分为车道与背景。车道嵌入分支就是将分割出的车道进一步分解成不同的实例instance。流程图如下图所示
A.车道线端到端检测网络 LaneNet,包括二值分割以及聚类进行实例分割
二值分割:将车道线对应像素连在一起,这样做的话即使车道线被汽车遮挡或者车道线不明显(如 虚线或者褪色)等情况,车道线仍能被检测出来。用的是标准的交叉熵损失函数。因为前景背景数量高度不平衡,应用了bounded inverse class weighting。【29: ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation】
实例分割:使用基于距离度量学习的one-shot学习方法【5:Semantic Instance Segmentation with a Discriminative Loss Function】。通过使用这种聚类方式,instance embedding 分支训练出为每根车道线像素训练出pixel embedding。相同线的像素embedding距离小,不同线的像素embedding距离大。
Loss function设计为:
为方差损失,降低类内距离
为距离损失,增大类间距离
对于每两根车道线计算L2 loss
聚类:通过设定阈值不断迭代进行聚类。为了避免选中outlier,使用mean shift。
**网络结构:**LaneNet基于ENet的encoder-decoder架构。
B 曲线拟合 H-Net
通常情况下,车道像素被投影成“鸟瞰图”表示,使用一个固定的转换矩阵。然而,由于变换参数对所有图像都是固定的,所以当遇到非地面时,例如在斜坡上,这会引起一些问题。为了缓解这个问题,我们训练一个网络,称为H-Network,它可以估算输入图像上的“理想”透视变换的参数。
曲线拟合:曲线拟合车道线P时,一般会用转移矩阵H将车道线投影为鸟瞰图。
这里的0是为了让水平线经过映射后仍然保持水平。
先使用H映射得到, 且,对于映射的使用最小二乘法拟合一个多项式,也就是曲线函数。然后再根据y方向坐标,计算出拟合后的x坐标
简单来说,先根据转移矩阵H将车道线坐标映射到鸟瞰图上,对于鸟瞰图上的坐标拟合一条曲线,然后以y坐标映射前后保持不变,
结果
参考
https://blog.csdn.net/c20081052/article/details/80622722