文献阅读记录:Towards End-to-End Lane Detection: an Instance Segmentation Approach

Towards End-to-End Lane Detection: an Instance Segmentation Approach

面向端到端的车道线检测:实例分割方法

摘要

 现代汽车正在整合越来越多的驾驶员辅助功能,其中包括自动车道保持。后者使汽车能够在道路车道内正确定位,这对于全自动汽车的后续车道偏离或轨迹规划决策也至关重要。传统的车道线检测方法依赖高度具体、人工特征和疑似特征的结合,通常采用后处理技术,这通常计算量很大且对于不同的道路场景可扩展。越来越多的新方法利用深度学习模型,为像素级车道分割而训练,及时由于接收场较大图像中没有标记的情况。尽管有这些优点,这些方法仅限于检测预定的,固定数目的车道,例如ego-lanes,不能应对车道变更。这篇文章,我们超越了上述限制,提出将车道检测问题转化为实例分割问题,每个车道形成自己的实例-可以进行端到端训练。为了在拟合车道之前对分割后的车道实例进行参数化,我们进一步提出应用基于图像的学习视角变换,而不是固定的“鸟瞰”变换。通过这种做法,我们确保了车道拟合对于道路平面变化具有鲁棒性,这与现有的依赖于固定的预定义转换的方法不同。总之,我们提出了一种快速车道线检测算法,运行帧率为50fps,它可以处理可变数量的车道并应对车道变化。我们在tuSimple数据集上验证了我们的方法并且获得了有竞争力的结果。
  


1.介绍
  在学术界和工业界,全自动驾驶都是当今计算机视觉和机器人技术研究的重点。在任何情况下的目标都是通过各种传感器和控制模块来完全理解车周围的环境。基于摄像头的车道检测是迈向这种环境感知的重要一步,因为它可以让汽车合理地给自己在车道上定位。这对之后的车多偏离和轨迹规划决策也至关重要。因此,实时执行基于相机的车道检测是全自动驾驶的关键因素。
  传统的车道检测方法 (e.g. [4], [9], [15], [17],[33], [35])依赖高度具体、人工特征和疑似特征的结合来识别车道段。通常选用颜色特征 [7],结构张量[25],条形滤波器[34],山脊特征[26]作为人工选择。它们可能与霍夫变换[23], [37]、粒子或卡尔曼滤波器[18], [8], [34]相结合。在标记车道段后,用后处理技术滤除错误检测并将片段放到一起形成最终的车道。有关车道检测系统的详细概述,请参考[3].通常由于道路场景的变换这些传统方法容易出现鲁棒性问题,这不能以一个简单的模型系统来建模。
  
  很多最近的方法已经用深度网络代替了人工特征检测器来学习密集的预测,即像素级车道分割。Gopalan et al. [11] 使用像素层次结构特征描述符对上下文信息建模,并使用增强算法选择相关的上下文特征以检测车道标记。与此相类似,Kim and Lee [19] 结合卷积神经网络和RANSAC算法来从边缘信息检测车道。注意,他们方法中CNN主要用于图像增强,并仅在道路复杂场景,例如它包括路边的树木,篱笆或十字路口。Huval et al. [16]展示了现有的CNN模型怎么用于公路驾驶应用,端到端CNN执行车道检测和分类。He et al. [13] 一如双重视图CNN,次啊用前视图和顶视图来排除错误检测并删除non-club-shaped结构。Li et al. [22] 提出使用多任务深度卷积网络,重点查找集合车道属性,例如位置和方向,和递归神经网络(RNN)一起检测车道。最近, Lee et al. [21]展示了,多任务网络怎么加入处理车道和道路标记检测和识别在恶劣天气和低照度的情况下。比上述网络效果更好能分割车道标记的[16],他们大的感知野甚至可以在图像中没有车道标记是估计车道。然而,在最后阶段,仍需要将二值车道分割分解成不同的车道实例。
  为了解决这个问题,一些方法已经应用了后处理技术,这些技术再次依赖于启发式算法,通常以几何属性为指导,例如[19],[12].如上所述,这些启发式算法在计算上是昂贵的并且由于道路场景变化易于出现鲁棒性问题。另一工作现把车道检测转化为多类别分割问题,其中每个车道形成自己的类别。这样,网络的输出包含每个车道的解算出的二值图并且可以端到端的方式进行训练。尽管有它的优点,该方法仅限于检测预定的固定数量的车道,即ego-lines.而且,由于每个车道具有指定的类别,所以它不能应付车道的改变。
  在这篇文章中,我们超越了上述限制,建议将车道检测问题转化为实例分割问题,其中每个车道形成自己的车道类内实例。受到密集预测网络在语义分割[24],[28],[31],[6]和实例分割任务[36],[38],[30],[2],[14],[5]中的成功的启发,我们设计了一个分支的多任务网络,像[27]的车道实例分割,它由一个车道分割分支和一个可以端到端训练的车道嵌入分支组成。车道分割分支具有两个输出类别:背景或车道,而车道嵌入分支进一步将分割的车道像素分为不同的车道实例。通过将车道检测问题分为上述两个任务,我们可以充分利用车道分割分支的功能,而不必 为不同的车道分配不同的类别。相反使用聚类损失函数训练的车道嵌入分支,将车道id分配给车道分割分支中的每个像素而忽略了背景像素。这样我们可以缓解车道变更问题,并且可以处理可变数量的车道,这与[20]不同。
  估计完车道实例后,即哪些像素属于哪个车道,作为最后一步,我们希望将每个像素转换为参数描述,为此曲线拟合算法已在文献中被广泛使用,。流行的模型是三次多项式[32],[25],样条曲线[1]或回旋曲线[10]。为了在保证计算效率的同时提高拟合质量,通常采用透视变换将图像转换为“鸟瞰”[39]并进行曲线拟合,注意,鸟瞰图中的拟合曲线可以通过逆变换矩阵重新映射到原始图像中。通常,转换矩阵是在单个图像上进行计算的,并且保持固定。然而,如果地平面发生变化(例如,通过上坡路段),此固定变换将不再有效,靠近地平面的车道点可能会投影到无穷远处,从而对线的拟合产生负面影响。
  

  在这里插入图片描述图一. 系统概述。给定输入图像,LaneNet通过标记每个车道像素的车道ID输出一个车道实例图。接下来,使用H-Net输出的变换矩阵对车道像素进行变换,变换矩阵从输入的图像中学习得来。对每个车道,将拟合三阶多项式,并重新投影到图像上。

在这里插入图片描述
 
图二 .LaneNet架构。由两个分支组成。分割分支(底部)为了处理二值车道mask训练。嵌入分支(顶部)在每个车道像素上生成N维嵌入,因此来自同一车道的嵌入彼此靠近,来自不同车道的嵌入在流形中距离远。为简单起见,我们显示了每个像素的二位嵌入,将其可视化为彩色图像和xy坐标中的点。在使用来自分割分支的二值分割图掩盖背景像素之后,将车道嵌入(蓝点)聚集在一起,并分配给他们的聚类中心(红点)。

 为了解决这种情况,我们还在拟合曲线之前对图像进行了透视变换,但是与依赖于固定变换矩阵进行透视变换的现有方法相反,我们训练了一个神经网络来输出变换系数。特别是,神将网络将图像作为输入,并使用针对车道拟合问题的损失函数进行优化。所提出的方法的固有优点是,车道拟合对于道路平面变化是鲁棒的,并且被特定优化以更好地拟合车道。我们的完整概述可以在图一中看到。
 我们的贡献可以归纳为以下几点:(1)一个分支,多任务结构把车道检测问题转化为实例分割任务,,可以应对车道变化并且允许推理任意数量的车道。特别地,车道分割分支输出密集的,按像素地车道段,而车道嵌入分支进一步将分割的车道像素解算为不同的车道实例。(2)一个给定输入图像网络估计透视变换参数,允许针对道路平面变化的地车道拟合鲁棒性(例如,上/下坡)。
 2.方法
  我们训练了一个端到端车道检测的神经网络,以解决上述车道切换以及车道数量限制的问题。通过将车道检测问题转化为实力分割问题来实现。我们将其成为LanNet(参见图2),结合二值车道分割和为单次实例分割设计的聚类损失函数地优势相结合。在LanNet地输出中每个车道像素被分配相应车道的类别。这将在2-A中进一步解释。
  由于LaneNet输出每个车道的像素集合,我们仍然必须通过这些像素拟合一条曲线来获得车道参数。通常,首先使用固定的变换矩阵将车道像素投影到“鸟瞰”表示中。但是,由于变换参数都是固定的,当遇到非平坦地平面时会出现问题例如在斜坡上的情况。为了解决这个问题我,我们训练了一个称为H-Net的网络,该网络根据输入图像来估计“理想”透视变换的参数。这种变换不一定是典型的“鸟瞰图”。而是车道更适合低阶多项式的变换。2-B小节描述了这个步骤。
  A.LANENET
  LaneNet是为端到端车道检测训练的,把车道检测视为实例分割问题。这样,网络不固定车道数量可以应对车道变化。实例分割任务由两部分组成,分割和聚类部分。为了提高速度和准确性,这两部分在一个多任务网络中训练
  二值分割 Lanenet 的分割分支是为了输出二值分割图像训练的,显示出哪个像素属于车道,哪个不属于。为了构建ground-truth分割图,我们将所有的ground-truth车道点连在一起,形成车道的连接线。注意,即使是在遮挡汽车等物体的情况下,或者在没有明显的可是车道线段的情况下(虚线,或褪色的车道)我们也会绘制ground-truth车道。这样,即使处于阻塞或不利条件下,网络也将学会预测车道位置。分割网络用标准的交叉熵(cross-entropy)损失函数进行训练。由于这两个类别(车道/背景)数量非常不平衡,我们采用有界逆类别权重,在[29]中有描述。
  实例分割 为了算出由分割分支标记的车道像素,我们训练第二个分支进行车道实例嵌入(见图2,top branch)。最流行的检测和分割方法(e.g.[14],[38])不适用于车道分割实例因为边界框检测更适合于紧凑的对象,而车道则不合适。因此我们使用De Brabandere et al. [5]提出的九月距离度量学习的one-shot方法。它可以轻松地与标准前馈网络集成,兵器认为实时应用专门设计。
  通过使用他们的聚类损失函数,实例嵌入分支被训练为输出每个车道像素的嵌入,因为嵌入属于同一车道地像素距离较小,而属于不同车道的像素之间距离最大。这样,同一车道的像素将-嵌入聚集在一起,形成每个车道独一无二的聚类。这是通过引入两个项来实现的:方差项 ( L v a r ) (L_{var}) (Lvar)和距离项 ( L d i s t ) (L_{dist}) (Ldist),方差项 ( L v a r ) (L_{var}) (Lvar)在每个嵌入上施加朝向车道中间嵌入的拉力,距离项 ( L d i s t ) (L_{dist}) (Ldist)使聚类的中心彼此远离。这两个项是有联系的:仅当嵌入离聚类中心比 δ v δ_v δv远时pull force起作用,仅当中心聚类小于 δ d δ_d δdpush force 起作用。用 c c c表示簇(车道)的数量, N c N_c Nc是簇 c c c中元素的数量, x i x_i xi是一个像素嵌入, µ c µ_c µc是嵌入簇 c c c的中心, ∣ ∣ ⋅ ∣ ∣ ||·|| 是L2距离, [ x ] + = m a x ( 0 , x ) {[x]}_+=max(0,x) [x]+=max(0,x)是转折,总的 l o s s   L loss L loss L等于 L v a r + L d i s t L_{var}+L_{dist} Lvar+Ldist

在这里插入图片描述
 一旦网络收敛,车道像素的嵌入将聚集在一起(见图2 ),以便每个聚类彼此之间的距离远于 δ d δ_d δd,而且每个聚类的半径小于 δ v δ_v δv

****聚类(这块之后重新好好翻译一下)

聚类 聚类通过迭代过程完成。通过在上述损失中设置 δ d > 6 δ v δ_d>6δ_v δd>6δv,可以进行随机车道嵌入围绕它半径为 δ v δ_v δv的阈值选择属于同一车道的所有嵌入。重复这个过程直到所有的车道嵌入都分配给同一个车道。为了避免在阈值附近选择离群值,我们我们首先使用 mean shift将其靠近聚类中心,然后再进行阈值化(见图2)。
  网络结构 LaneNet的体系结构基于编码器-解码器网络ENet[29],因此被修改为二分支网络。由于ENet的编码器比解码器包含更多的参数,因此在两个任务之间完全共享完整的编码器会导致令人不满意的结果[27]。因此,原始的ENet编码器由三个阶段(阶段1,2,3)组成,但LaneNet仅在两个分支的前两个阶段共享(阶段1和2),剩下的ENet编码器的第三阶段和完整的ENet解码器作为每个独立分支的骨干。分割分支的最后一层输出单通道图像(二值分割),而嵌入分支的最后一层输出N通道图像其中嵌入维度为N.图二对此进行了示意性描述,每个分支的损失项均经过加权,并通过网络反向传播。
  
  在这里插入图片描述
  图三.曲线拟合。左:用H-Net生成的矩阵H变换车道点。中:一条线穿过转换点,并在不同高度处(红点)评估曲线。右:评估的点被转换回原始图像空间

B.用H-NET拟合曲线
  如上一节所述,LaneNet的输出是每个车道像素的集合。通过这些在原始图像空间的像素拟合多项式不理想,因为只有高阶多项式才能应对弯道。解决此问题的常用方法是将图像投影到“鸟瞰”表示,其中车道彼此平行,因此弯道可以拟合为2阶或三阶多项式。  
  
p i = [ x i , y i , 1 ] T ∈ P p_i ={ [x_i,y_i,1]}^T\in P pi=[xi,yi,1]TP   origin
p i ′ = [ x i ′ , y i ′ , 1 ] T ∈ P ′ p'_i ={ [x'_i,y'_i,1]}^T\in P' pi=[xi,yi,1]TP  transfromed   e q u a l   t o   H p i  equal  to  H{p_i}  equal to Hpi

least-squares algorithm is used to fit a n-degree polynomial f ( y ′ ) f(y') f(y), through P ′ P' P
在这里插入图片描述
在这里插入图片描述
最小二乘闭式解
在这里插入图片描述
损失函数
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42840360/article/details/113138820
今日推荐