本文主要是介绍ECCV2020 | Gen-LaneNet:百度Apollo提出两阶段的3D车道线检测算法,已开源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点击上方“AI算法修炼营”,选择“星标”公众号
精选作品,第一时间送达
这篇文章收录于ECCV2020,是百度Apollo团队发表的关于3D车道线检测的文章,针对3D-LaneNet做了一些改进,能够直接输出车道线的3D坐标。文章在Apollo Synthetic的3D车道线检测数据集上进行实验,取得了比前作3D-LaneNet更好的效果。已经开源,大家可以尝试下。
论文地址:https://arxiv.org/pdf/2003.10656.pdf
代码地址:https://github.com/yuliangguo/Pytorch_Generalized_3D_Lane_Detection
本文提出了一种通用且可扩展的3D车道线检测方法,称为Gen-LaneNet。该方法的灵感来自《3d-lanenet: end-to-end 3d multiple lane detection.》中的3D LaneNet技术,同时,该方法是一个统一的框架,可在单个网络中解决图像编码、特征的空间变换和3D车道线预测的问题。
Gen-LaneNet提出了两种独特的设计方案:首先,在新的坐标系中引入新的几何引导车道线anchor表示,并应用特定的几何变换直接从网络输出中计算真实的3D车道点。实验证明,将车道点与新坐标系中的基础俯视图特征对齐对于处理不熟悉场景的通用方法至关重要。其次,提出了一个可扩展的两阶段框架,该框架将图像分割子网络和几何编码子网络的学习解耦。与3D-LaneNet相比,Gen-LaneNet大大减少了在实际应用解决方案中所需的3D车道线标签数量。此外,还发布了一个新的合成数据集及其构建策略(https://github.com/yuliangguo/3D_Lane_Synthetic_Dataset),有利于3D车道线检测方法的发展与评估。在实验中,GenLaneNet在平均精度(AP)和F评分上明显优于3D-LaneNet。
简介
在过去的几年里,自动驾驶引起了学术界和工业界的众多关注。为了安全驾驶,其中一个基本问题就是要实时准确地感知车道结构。对当前车道和附近车道的鲁棒性检测不仅是车辆横向控制和准确定位的关键,也是构建和验证高精度地图的有力工具。大多数基于图像的车道线检测方法将车道线检测作为一个2D任务。一个典型的2D车道线检测流程由三个部分组成:语义分割组件,为图像中的每个像素分配一个类标签,以指示其是否属于车道;空间变换组件,将图像分割输出投射到一个平坦的地面平面上;第三部分是提取车道线,通常涉及车道现模型的拟合,具有很强的假设性,例如,拟合二次曲线。然而,将3D的车道线检测降维成2D的检测任务的假设可能会导致意想不到的问题,例如,当自动驾驶车辆遇到丘陵道路时,二维的车道线检测算法会提供不正确的三维道路感知。
为了克服与平面道路假设相关的缺点,最新的方法已经开始关注复杂的3D车道线结构的感知。具体来说,最新的3D-LaneNet已经引入了一个端到端框架,将图像编码、图像视图和俯视图之间的空间变换、三维曲线提取等三大任务统一在一个网络中。但是,3D-LaneNet在并不恰当的坐标系里使用anchor进行预测;同时,把image segmentation和geometry encoding整合到一个统一的端到端架构里,使得geometry encoding对图像分割结果比较敏感,需要大量3D标注数据才能把网络训练好。
图1.Gen-LaneNet的流程。分割主干(图像分割子网)首先将输入图像编码为较深的特征,然后将特征解码为车道分割图。给定分段作为输入,3D-GeoNet(几何编码子网)专注于几何编码并预测中间3D车道点,特别是在顶视图2D坐标和实际高度中表示。最后,提出的几何变换直接将网络输出转换为真实世界的3D车道点。
在本文中,提出了Gen-LaneNet,这是一种从单个图像检测3D车道线的通用且可扩展的方法。通过在新的坐标系中引入了几何引导的anchor表示车道线新方法,并应用了特定的几何变换以从网络输出直接计算真实的3D车道点。将anchor点表示与基础俯视图特征对齐对于使方法可推广到未观察到的场景至关重要。此外,提出了一种可扩展的两阶段框架,允许对图像分割子网络和几何编码子网络进行独立学习,从而大大减少了学习所需的3D标签数量。得益于价格更实惠的2D数据,当昂贵的3D标签仅限于某些视觉变化时,两阶段框架的性能要优于端到端学习框架。最后,提出了具有高度视觉变化的图像的高度逼真的合成数据集,这将有助于3D车道线检测的开发和评估。在实验环节进行了广泛的消融研究,以证实Gen-LaneNet在AP和F评分中明显优于现有技术水平,在某些测试集中提升高达13%。
由于端到端学习网络将三维几何推理与图像编码紧密结合,使得几何编码不可避免地受到图像外观变化的影响。3D LaneNet可能需要成倍增加的训练数据量,以便在存在部分遮挡、变化的照明或天气条件下产生相同的3D几何体。标记3D车道要比标记2D车道贵得多。它通常需要建立在昂贵的多传感器(激光雷达、摄像机等)上的高分辨率地图、精确的定位和在线校准,以及在3D空间中更昂贵的手动调整来产生正确的地面真实感。这些限制阻止了3D LaneNet在实际应用中的可伸缩性。
3D-LaneNet
论文地址:https://arxiv.org/abs/2003.05257
3D-LaneNet是一种用于带不确定性估计的3D车道线检测。该方法基于半局部BEV(鸟瞰视角)的网格表示形式,其将车道线分解为简单车道线段。该方法结合了线段学习的参数化模型和聚类线段成为全车道线的深度特征嵌入。这种结合可以将该方法推广到复杂的车道拓扑结构、曲率和曲面几何。此外,该方法是第一个为车道线检测任务提供基于学习估计不确定性的方法。
如图是有不确定性估计网络的基于摄像机3-D车道线检测示意图。该方法适用于“鸟瞰视角(Bird Eye View)”透视图,该视图被栅格化为粗网格。输出所有网格的参数化3-D曲线表示,然后处理形成整个3-D车道曲线以及检测的不确定性估计。
假设通过每个网格的车道线段很简单,用低维参数模型表示。具体而言,每个网格均包含一条线段,该线段的参数包括距网格中心偏移、方向和距鸟瞰视角平面的高度偏移。这种半局部网格表示位于从全局表示(整个通道)到局部表示(像素级别)之间的连续变化。这种基于分段的解决方案,每个网格输出比单个像素更具信息性,它可以推理局部车道线结构,只是不像全局解决方案那样受限,因为全局解决方案必须获取整个车道的拓扑、曲率和表面几何的复杂性。
该表示将车道曲线细分为多个车道线段,但未明确获取它们之间的任何关系。相邻的网格将具有重叠的感受野并产生相关结果,但是没有捕获多个网格表示的是同一车道的事实。为了生成完整的车道曲线,文中学习了每个网格的嵌入,其沿着车道满足全局一致性。这样,可以将小车道线段聚类成一个完整的曲线。
此外,通过网络输出建模为高斯分布并估计其均值和方差值,可以实现不确定性估计。对每个车道线段参数操作,将其组合在一起,对每个车道线的点生成最终的协方差矩阵。与沿着网格进行局部学习的线段参数不同,这种方法训练不确定性所需的经验误差,取决于组成整个车道的所有网格并全局进行推理。
如图是网络结构图。该网络由两个处理流水线组成:图像视图和鸟瞰(BEV)视图。图像视图编码器由ResNet块组成。BEV主干由投影图像视图的特征图组成,并与来自前一个块的卷积投影特征图拼接。最终BEV特征图是生成局部车道线段的车道线预测头输入、将这些线段聚类到整个车道的全局嵌入、以及依赖于局部网格和整个车道曲线的车道点位置不确定性。
网络的输入是单目图像。该方法采用了该团队以前提出的双途径主干方法,使用编码器和反透视映射(IPM)模块将特征图投影到鸟瞰图(BEV)。如图所示。
投影应用相机俯仰角ϕ和高度h定义的单应变换(homography),将图像平面映射到道路平面,如图所示。最终BEV特征图在空间上分为由W×H个非重叠网格组成的网格G。与以前方法相似,投影可确保BEV特征图中的每个像素对应于预定义的道路位置,与摄像机的内参数和外部姿态无关。
假设通过每个网格的车道线可以拟合为一个线段。具体地说,网络针对每个网格回归三个参数:相对于网格中心的横向偏移距离,直线角度和高度偏移。除了这些参数之外,网络还预测二值分类分数,该分数指示车道与特定网格相交的概率。将网格相交的车道线投影到道路平面后,用GT车道线点把网格相交的车道线段近似为直线,可计算出偏移量和角度,即GT回归的目标。
以下是预测模型训练的损失函数:
其中
以下是车道线聚类的全局嵌入所采用的鉴别损失(discriminative push-pull loss):
其中
最后,要将BEV平面的车道线点转换到摄像头坐标系:
本文方法:Gen-LaneNet
1 Geometry in 3D Lane Detection
在如图3所示,x,y,z轴和原点O表示车辆坐标系,与道路垂直,而xc,yc,zc和原点C表示摄像机坐标系。因此,可以通过以下方式生成virtual top-view视图:首先通过投影变换将3D场景投影到图像平面,然后通过平面单应性将捕获的图像投影到平坦的道路平面。由于涉及相机参数,因此virtual top-view视图中的点与车辆坐标系中的相应3D点对应,原则上具有不同的x,y值。
下面来推导virtual top-view视图坐标和真实世界坐标的关系。
对于投影相机,3D点(x,y,z),其在像平面上的投影以及相机光学中心(0,0,h)应该位于单条光线上。类似地,如果将virtual top-view视图的一个点投影到同一图像像素,则该点必须在同一条光线上。因此,相机中心(0,0,h),3D点(x,y,z)及其对应的virtual top-view视图点看起来是共线的,如图4(a)所示和(b)。正式地,这三点之间的关系可以写成:
相机光心为相机坐标系原点,以相机到地面的垂直投影点作为ego-vehicle坐标系和virtual top-view原点,则由下图推导出top-view坐标和ego-vehicle坐标的换算关系:
具体的推导过程可参考论文原文。
2 Geometry-guided anchor representation
按照提出的几何形状,作者分两步解决3D车道线检测:首先使用网络对图像进行编码,将特征转换为virtual top-view视图,并预测virtual top-view视图中表示的车道点;然后采用几何变换来计算ego-vehicle坐标系中的3D车道点。具体来说,步骤为:
(1)使用图像语义分割网络预测车道线mask
(2)使用反透视映射(IPM)模块将mask转换为top-view(需要相机内参矩阵)
(3)在virtual top-view中预测车道线
(4)利用上一节推导出的几何关系把virtual top-view中的车道线映射回真实世界坐标
Anchor representation
与3D-LaneNet类似,Anchor representation使网络可以直接预测多线形式的3D车道线。Anchor representation的本质其实是利用网络实现结构化场景中边界检测和轮廓分组。 基于这个Anchor representation,本文所提出的网络在virtual top-view视图中输出三维车道线,之后应用上一节推导出的变换公式计算出它们对应的三维车道点。在给定每个车道点的预测可见性概率的情况下,只有那些可见的(概率高的)车道点才会被保留在最终的输出中。主要有两大特点:(1)anchor位置:预先定义了x位置和y位置的N条等距垂直线;(2)需要anchor预测的值:偏移量 ,当前点的z坐标、可见性v、概率p
与3D-LaneNet相比,Anchor representation涉及两个主要改进:(1)在不同的空间(virtual top-view视图)中表示车道点位置。在virtual top-view视图中表示车道点可确保目标车道位置与投影到顶视图的图像特征对齐。(2)与3D-LaneNet中整个场景的全局编码相比,在处理新的或未观察到的场景时,本文方法采用的局部local patch-level 的相关性编码更鲁棒。本文的方法在Anchor representation中添加了其他属性,例如每个anchor点的可见性。因此,该方法在处理从中途开始或结束的部分可见车道线时更加稳定。
3 Two-stage framework with decoupled learning of image encoding and geometry reasoning
Stage1:图像语义分割网络
Stage2:GeoNet基于分割网络的输出预测车道线位置
与其采用端到端的学习网络,本文提出了一个两阶段的框架,将图像编码的学习和3D几何推理解耦。如图6所示,第一个子网络专注于图像域的车道线分割;第二个子网络从第一个子网络的分割输出中预测3D车道线结构。这两个阶段的框架很好地表明三维几何的编码与图像特征提取环节相互独立。如图4(a)所示,地面高度height(z值)是与从位置( ̄x, ̄y)到位置(x,y)的位移矢量密切相关的。事实上,在virtual top-view视图中,估计车道高度z在概念上等同于估计将顶视图车道点(红色曲线)移动到其目的地位置的矢量场(黑色箭头),以便它们可以形成平行曲线(蓝色曲线)。同时,该网络将编码视觉特征和目标矢量场之间的相关性,由于目标向量场主要与几何学有关,从稀疏车道分割中提取的简单特征就足够了。
第一阶段中的2D图像分割可以采用轻量级语义分割网络模型实现,例如ErfNet、FCN等。为了简单起见,选择ERFNet 来用于框架的第一阶段。对于第二阶段的3D车道线预测,提出了3D-GeoNet,如图6所示。顶视图分割编码器首先将分割图输入投影到顶视图层,然后通过一系列卷积层将其编码在特征图中。车道线预测head将根据Anchor representation来预测3D车道线的属性,并预测车道点在顶视图上的位置。
一般的端到端学习框架,对图像的外观非常敏感,因此,它依赖于大量昂贵的真实世界三维数据。 因此,它依赖于大量非常昂贵的真实世界的3D数据。而本文的两阶段方法可以大幅降低成本,因为它不再需要在不同天气、不同时间、不同遮挡情况下收集同一区域内冗余的真实三维车道线标签数据。此外,两阶段框架可以利用更充分的二维真实数据来训练一个更可靠的二维车道线分割子网络。有了极度稳健的分割作为输入,3D车道预测反倒会有更好的表现。在最佳情况下,两阶段框架可以利用2D真实数据训练图像分割子网络,并只用合成的3D数据训练3D几何子网络,由于需要域转移技术来解决完美的合成分割基础真值和第一个子网络的分割输出之间的域差距,因此将最优解推迟到未来工作中。
4 Training
损失函数
与3D-LaneNet中引入的损失函数相比,有三个变化。首先,x是在virtual top-view坐标系中表示的,而不是在ego-vehicle坐标系中表示的。第二,增加了额外的损失项来衡量预测的可见性向量和GT可见性向量之间的差异。第三,距离的损失项乘以其相应的可见性概率v,这样那些不可见点就不会对损失产生影响。
需要特别指出的是,语义分割网络和GeoNet是单独分开训练的。虽然没有端到端特性显得算法不那么“优雅”,但降低了算法对3D标注的需求量。
5、数据集
本文使用了基于Unity游戏引擎的Apollo Synthetic Dataset(地址:https://apollo.auto/synthetic.html),并以多样化的场景结构和视觉外观渲染图像。合成数据集是从具有不同地形信息的三幅世界地图上绘制的:高速公路,市区和居民区。所有地图都基于美国硅谷的真实区域,车道线和中心线涉及足够的地面高度变化和转弯,如图7所示。
实验与结果
拆分Apollo Synthetic数据集:Balanced scenes、Rarely observed scenes、Scenes with visual variations
更多细节可参考论文原文。
参考
[1] https://zhuanlan.zhihu.com/p/152601714
[2] https://zhuanlan.zhihu.com/p/133623737
这篇关于ECCV2020 | Gen-LaneNet:百度Apollo提出两阶段的3D车道线检测算法,已开源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!