【车道线检测论文】 LaneNet

论文名称:《Towards End-to-End Lane Detection an Instance Segmentation Approach》
论文链接:https://arxiv.org/abs/1802.05591
参考代码(非官方):https://github.com/MaybeShewill-CV/lanenet-lane-detection

综述

背景介绍

传统车道线检测方法主要依赖于高度专门化,手工提取特征和启发式方法来分割车道线。在传统方法中,较为常见的手工特征有基于颜色的特征、结构传感器特征、Ridge特征等,结合Hough变换或卡尔曼滤波等方法实现车道线识别。识别出车道线之后,利用后期图像处理技术过滤掉误检等情况得到最终车道线。

近些年来,更为流行的方法是用深度网络提取深度特征代替手工特征,实现如像素级别的车道线分割。目前流行的深度学习车道线检测方法可以很好地分割出车道线像素,其较为大的感受野可以在标注模糊或无标注的情况下估计出大致车道线。

然而这些方法产生的二值化车道线分割图仍需要分离得到不同的车道实例。为处理这个问题,一些方法采用后处理来解决,主要是用启发式的方法,比如几何特性。但启发式方法计算量大且受限于场景变化鲁棒性问题。另一条思路是将车道检测问题转为多类别分割问题,每条车道属于一类,这样能实现端到端训练出分类好的二值图像。但该方法受限于只能检测预先定义好的固定数量的车道线,无法处理车道的变化。

基于此,作者提出了LaneNet模型,不仅能够得到车道线像素,还能将不同的车道线实例区分开。

得到车道线实例后,需要对每条车道线进行描述。最常用的描述方法是曲线拟合车道线模型,目前流行的曲线拟合模型有三次多项式,样条曲线,回旋曲线等。为了提高拟合质量且保持计算效率,通常我们将图像转到鸟瞰图后做拟合。最后再逆变换到原图即可。然而,目前所使用的透视变换矩阵的参数通常是预先设定、不会改变的,在面对外部地形影响(如上坡)等情况下的车道线拟合并不准确,鲁棒性不强。

基于此,作者提出了H-Net模型,用来用来学习透视变换矩阵的参数。

这便是这篇论文的两个创新之处,接下来将详细展开分析。

总体思路

作者提出了一个带分支结构的多任务网络结构,包含一个二值分割分支(lane segmentation)和一个实例分割分支(lane embedding),从而实现端到端、任意数量的车道线检测。具体来说,二值分割分支输出所有的车道线像素,而实例分割分支将输出的车道线像素分配到不同的车道线实例中。

论文模型的主框架如下图。
image_1cqo14o4i3rcej7hjvmoh1mli9.png-216.3kB

Lanenet网络

Lanenet网络结构如下图。
image_1cqo158fk1c6c1s8v133219n06mvm.png-230.4kB

二值分割网络

Lanenet的一个分支网络为二值分割网络(下面那个),该网络将车道线像素与背景区分开。损失函数使用的是标准的交叉熵损失函数,由于目标类别是2类(车道/背景),并且高度不平衡,因此参考了《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》,使用了bounded inverse class weighting

实例分割网络

Lanenet的另一个分支网络为实例分割网络(上面那个),。该分支网络参考了《Semantic Instance Segmentation with a Discriminative Loss Function》,使用基于one-shot的方法做距离度量学习,将该方法集成在标准的前馈神经网络中,可用于实时处理。该分支网络训练后输出一个车道线像素点距离,基于归属同一车道的像素点距离近,不同车道线像素点距离远的基本思想,利用聚类损失函数聚类得到各条车道线。具体实现的原理如下。

聚类损失函数

image_1cqnp5ecr13rf42i15lhs7o1iji13.png-46.2kB
如公式所示,L_var的主要作用就是把属于同一条车道线的像素点往一起推,如果像素点和中心点距离超过一定阈值,就会产生loss;L_dist作用是把不同类中心点往距离加大的方向拉,如果中心点之间的距离小于一定阈值,就会产生loss。使用L_var+L_dist作为模型的损失函数,进行迭代,迭代终止条件为δd > 6δv

网络结构

Lanenet中的网络结构使用encoder-decoder的ENet,该网络共有三个阶段,这两个分支共享前两个阶段;但是第三个阶段的encoder和和最后的decoder部分则相互独立,这样可以节省一定的计算开销同时取得较好的效果。二指分割网络分支将会输出单通道图像,实例分割网络分支输出N通道图像,每个分支的权重相等。ENet的网络结构图如下:
image_1cqnpbr4i1spl11ke1pvc16mqpbq20.png-187.1kB

曲线拟合之H-net

LaneNet网络输出的是每条车道线的像素集合,常规的处理是将图像转为鸟瞰图,然后用二次或三次多项式拟合出弯曲的车道线。然而,目前所使用的透视变换矩阵的参数通常是预先设定、不会改变的,在面对水平线波动的影响(如上下坡)等情况下的车道线拟合并不准确,鲁棒性不强。因此,作者提出了H-net模型,用来学习透视变换矩阵的参数。具体的数学原理不详细展开,需要了解可以查看原论文。
image_1cqo191f47p4vsf1sg21sj11ri113.png-432.9kB
通过对比结果图可以看出,使用H-net模型进行的曲线拟合效果要好很多,鲁棒性更强。

结果展示

原文中的参数设置如下:

  • LaneNet
    Embedding维度为4(输出4通道),δv=0.5,δd=3,采用Adam优化器,batchsize=8,学习率为5e-4;
  • H-Net
    使用3阶多项式拟合,采用Adam优化器,batchsize=10,学习率为5e-5;

该网络在图森的车道线数据集上取得了96.4的精度,效果较好。
image_1cqo1l7951kem1jftc6u1r0g1n2g9.png-663.5kB

参考

  1. https://arxiv.org/abs/1606.02147
  2. https://arxiv.org/pdf/1708.02551.pdf
  3. https://github.com/hq-jiang/instance-segmentation-with-discriminative-loss-tensorflow
  4. https://zhuanlan.zhihu.com/p/40804147
  5. https://blog.csdn.net/c20081052/article/details/80622722
发布了11 篇原创文章 · 获赞 4 · 访问量 557

猜你喜欢

转载自blog.csdn.net/sanshibayuan/article/details/103645440