自动驾驶感知中BEV的景物表示方法(下)

本文是讨论如何给定来自多个车载摄像机图像获得校正的360度BEV图像。校正的BEV图像被分割成语义类别,并且包括对遮挡区域的预测。神经网络方法并不依赖手动标记数据,而是在模拟合成数据集上进行训练,并泛化到现实世界数据。以语义分割图像作为输入,可以减少模拟数据与现实世界数据之间的现实差距,并也证明该方法可以成功应用于现实世界中。

源代码和数据集:https://github.com/ika-rwth-aachen/Cam2BEV

如图所示:将单应性变换应用于车载摄像头的四个语义分割图像,将其转换为BEV;IPM直接用homography转换误差很大(路面平坦的假设),而这种方法在无视觉失真情况下学习如何计算准确的BEV图像。

图片.png

对于每个车载摄像机,虚拟射线从其安装位置投射到语义上分割的真值BEV图像的边缘。这个射线仅投射到特定摄像头视野的边缘像素。根据以下规则处理这些射线的所有像素以确定它们的遮挡状态:

  1. 一些语义类总是挡住视线(例如,建筑物,卡车);
  2. 一些语义类永远不会遮挡视线(例如道路);
  3. 汽车挡住了视线,但不能挡在后面的较高物体(例如卡车,公共汽车);
  4. 被部分遮挡的物体仍然完全可见;
  5. 仅当目标在所有摄影机透视图中均被遮挡时,才将其标记为遮挡。

本文作者提出两个模型设计,一是单输入模型,基于DeepLabv3+,其中主干分别采用MobileNetV2 和 Xception测试;二是 多输入模型,基于U-Net,做了一些变型。

如图是多输入模型的体系结构:作为带Spatial transformer的多输入模型,名字称为uNetXST;它为每个输入图像都有单独的编码器路径(绿色路径); 作为每个尺度级(紫色路径)跳连接的一部分,特征图将进行投影变换(v-块)、与其他输入流串联(|| -块)、卷积、解码器路径的上采样输出进行串联;此图显示了一个只有两个池化层和两个上采样层的网络,实际训练的网络分别包含四个。

图片.png

上图中v-块类似于空间变换器单元,其细节如下图所示: 来自前一个卷积层(橙色网格层)的输入特征图通过IPM(逆投影映射)获得的单应性做投影变换; 不同摄像机的输入流之间,这种转换也不同;这里建立了空间一致性,因为变换的特征图捕获了与BEV真值相同的视野。 然后需要将这些变换的特征图级联到一个单特征图(参见上图的||-块)。

图片.png

实验结果比较如下:

image
图片.png

虚拟合成数据

图片.png

真实数据

image

7 FISHING Net: Future Inference of Semantic Heatmaps In Grids,arXiv 2006.09917

该文提出一个采用自上而下表示形式执行语义分割和短期预测的端到端流水线,FISHING (Future Inference of Semantic Heatmaps In Grids)Net。该方法由一组神经网络组成,这些神经网络从不同的传感器模式中获取传感器数据,并将其转换为单个通用的自上而下的语义网格表示形式。这种表示与传感器特定的参考框架无关,并且捕获了周围场景的语义和几何信息。因为这些模式共享一个单输出表示,可以轻松地汇总产生融合的输出。本文只是做语义网格的短期预测,但是该框架可以扩展到其他任务。

FISHING Net体系结构如图所示:多个神经网络,每个传感器模态(雷达,雷达和摄像头)一个,接收一系列输入传感器数据,并输出代表3个目标类别(弱势道路用户即VRU、车辆和背景)的一系列自上而下的共享语义网格;然后,使用聚合函数融合序列,以输出语义网格的融合序列。

image

系统总体架构包括用于每个传感器模式的神经网络,如图所示:网络体系结构均由具有卷积层的编码器-解码器网络组成;它在编码器中用卷积核大小为(2,2)的平均池,在解码器中使用上采样;在解码器之后,一个线性卷积层产生logits,而softmax产生沿每个输出时间步长三个类的各自最终输出概率;与激光雷达和雷达网络(U-Net)相比,视觉网络使用略有不同的编码器和解码器方案,ResNet为主干,主要是解决像素空间特征(加入OFT层,类似前面的View Parsing Network)。

image
image

LiDAR特征包括:1)二进制激光雷达占用率(如果给定的网格单元中存在激光雷达点,则为1,否则为0)。 2)激光雷达密度(在一个网格中所有激光雷达点的对数归一化密度)。 3)Max z(给定网格单元激光雷达点的最大高度值)。 4)最大z切片(每个网格单元在5个线性切片的最大z值,例如0-0.5m,...,2.0-2.5m)。

雷达特征包括:1)二进制雷达占用率(如果在给定的网格单元中存在任何雷达点,则为1,否则为0);2)每个雷达回波多普勒速度的X,Y值,均用自车运动进行了补偿; 3)雷达横截面(RCS); 4)信噪比(SNR); 5)多义的多普勒间隔。

图像的尺寸与192 x 320的输出分辨率匹配。

实验结果比较如下:

image

输入的传感器数据、标注和各个预测结果的定性直观图

image
image

注:最左边是标注,然后依次是激光雷达、雷达和视觉的结果。


8 BEV-Seg: Bird’s Eye View Semantic Segmentation Using Geometry and Semantic Point Cloud,arXiv 2006.11436

本文提出BEV-Seg,做BEV语义分割,这项任务可根据侧视(不是鸟瞰)摄像头的RGB图像预测BEV的像素级语义分割。存在两个主要挑战:从侧视图到鸟瞰图的视图转换,以及学习迁移到未见过的领域。作者提出的两级感知流水线方法,可显式预测像素深度,并以有效的方式将其与像素语义相结合,使模型利用深度信息来推断BEV中目标的空间位置。其中迁移学习的实现是,抽象高级几何特征,并预测跨不同领域通用的中间表示(IR)。

BEV-Seg流水线如图所示:

图片.png

第一步,N个RGB道路场景图像由不同角度的摄像头捕获,并分别通过语义分割网络S和深度估计网络D;所得到的侧视语义分割和深度图被组合并投影到3-D变成语义点云;这里点云语义图是不完整的。第二步,然后将该点云投影到不完整的鸟瞰图中,再将其输入到一个parser network预测最终的鸟瞰图分割,做“填洞”和“平滑”等工作。

补充一些细节:对于侧视语义分割,用HRNet主干,这也是用于语义分割的最新卷积网络。对于单目深度估计,用与骨干网相同的HRNet来实现SORD模型。对于这两个任务,在所有四个视图训练相同的模型。生成的语义点云沿着垂直高度方向投影到512x512图像上。训练一个单独的HRNet模型作为parser network,进行最终的鸟瞰语义分割。

通过模块化和抽象性做到的迁移学习包括:

  • 1)根据目标域的第一步数据微调第一步的模型;
  • 2)将训练的第二步模型应用于目标域中投影的点云数据。

实验结果比较如下:VPN做比较

image

在BEVSEG-Carla数据的结果比较:

[图片上传失败...(image-8f71da-1645945576911)]

迁移学习的结果比较:

image
image

9 Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D,arXiv 2008.05711

这是一个端到端架构,直接从任意数量的摄像头数据提取给定图像场景的鸟瞰图表示。将每个图像分别“提升(lift)”到每个摄像头的视锥(frustum),然后将所有视锥“投放(splat)”到光栅化的鸟瞰图网格中。这里要学习的是,如何表示图像以及如何将所有摄像机的预测融合到场景的单个拼接表示,同时又能抵抗标定误差。为学习运动规划的密集表示,这里模型推断的表示,“捕捉(shoot)”模板轨迹到网络输出的鸟瞰损失图,从而实现可解释的端到端运动规划。

代码上线:•https://nv-tlabs.github.io/lift-splat-shoot

如下图所示是本文的想法:给定多摄像头图像数据(左),直接在鸟瞰(BEV)坐标系中推断语义(右)。 这里显示了车辆分割(蓝色),可驾驶区域(橙色)和车道分割(绿色)。 然后,又将这些BEV预测投影到输入图像(左侧那些排列点)。

image

如下图是之前方法的示意图:传统意义上,诸如语义分割之类(左边,来自Seg-Net)的计算机视觉任务涉及在输入图像相同的坐标系中进行预测(右边,来自Neural Motion Planner,即NPN)。 相反,自动驾驶的规划通常在鸟瞰坐标系进行。 该模型直接在给定的鸟瞰图坐标系进行预测,并根据多摄像头图像进行端到端的规划。

图片.png

单目传感器融合的挑战是,需要将深度转换成参考帧坐标,但本质上与每个像素关联的“深度”是模棱两可的。本文的解决方案是,为每个像素生成所有可能深度的表示,类似多视角合成中的多平面图像(multi-plane image)。该网络能够选择,是在鸟瞰图表示的特定位置放置图像的上下文信息,还是将上下文分布在整个空间光线之间(如果深度不明确的话)。如下图就是展示这个思路,可视化的“提升”步骤:对于每个像素,预测深度值的类别分布(左)和上下文向量(左上部),沿着射线的每个点特征取决于其外积(右)。

image

如下图是“Lift-Splat-Shoot“的框架概览:在“提升”步骤中,类似于pointpillars,每个单图像会生成一个视锥形状的点云(左中部分),然后用内外参数将每个视锥都“投放“到BEV平面(右中部分)。 最后在“捕捉(shoot)”步骤,即规划,一个BEV CNN处理BEV表示形式,做BEV语义分割或规划工作(右部分)。

image

“捕捉“可以从摄像机的输入进行运动规划的端到端损失图学习。 在测试时,可以通过“捕捉”不同轨迹对它们的损失进行评分,然后根据最低损失得到的轨迹进行操作,从而用推断的损失图进行规划。

本文的想法来自神经运动规划器(Neural Motion Planner,NMP)方法,但不用NMP的hard-margin loss,而是将规划组织为一组K模板轨迹的分类任务。 利用规划问题的损失-体量(cost-volume)性质,强制K个模板轨迹分布按照以下形式:

image

其中co(x,y)是给定在位置(x,y)观测值o预测损失图的索引所定义,因此可以通过优化专家轨迹的对数概率从数据进行端到端训练。以上定义意味着能够学习可解释的空间损失函数,而无需像NMP那样定义hard-margin损失。

这些轨迹模版实际上是通过K-means得到。下图是轨迹规划的示意图:可视化在训练和测试过程中“捕捉”损失图(cost map)的1K轨迹模板。在训练过程,计算每个模板轨迹的损失并理解为模板的1K-维 Boltzman分布。 在测试过程,选择分布argmax的模板,并根据所选模板进行操作。

图片.png

模型的神经体系结构类似于OFT(orthogonal feature transform)。与OFT中一样,模型具有两个大型网络主干。一个主干分别在每个图像运行,在每个图像生成的点云提取特征。一旦点云投放到参考坐标系的pillar,另一个主干就对其操作。这两个网络由lift-splat layer连接。

对于独立运行于每个图像的网络,在所有实验中利用Imagenet预训练的EfficientNet-B0,包括基准模型。 EfficientNets是在资源受限的情况下通过穷举架构搜索发现的网络架构,其深度、宽度和分辨率按比例扩大。相对于ResNet-18 / 34/50,它们具有更好的性能,但不便之处在于需要更多的优化迭代来收敛。

对于鸟瞰网络,类似于PointPillars,用ResNet块组合。另外,基于“cumulative sum" trick,采用sum pooling across pillars而不是max-pooling,这个称为“Frustum Pooling"。由于鸟瞰CNN可以从数据中学习如何在摄像机之间融合信息,因此可以训练模型对自动驾驶发生的简单噪声(例如摄像头外参误差或摄像机死机)具有较强的鲁棒性。

实验结果比较如下:

图片.png
图片.png

在nuScenes数据,丢失摄像头意味着该车局部某些区域没有传感器测量值,其受限于完整传感器性能。一些质量问题的例子如图所示:对单个时间戳,删除每个摄像机,并可视化如何选择网络预测的损失。 在每种情况下,被丢失相机所覆盖的区域变得更加模糊。 当拆下前置摄像头(中上部分),网络会推断自己前方的车道和可行驶区域;在右上角摄像头只看到一角的汽车,可推断车身。

image

下面是模型泛化能力的性能比较:一是零样本摄像头位置迁移,加入新摄像头;二是数据库变化。

image
image

而如图显示的是另外一个迁移:在一个完全新摄像头情况下的定性结果性能,其中道路分割为橙色,车道分割为绿色,车辆分割为蓝色。

image

如图显示的是1k模板中排名前10条运动规划的轨迹:该模型根据单个时间戳观测结果,预测双峰分布和曲线;该模型无法获取车速信息,但该模型可以预测人行横道和刹车灯附近的低速轨迹。

image

10 Understanding Bird’s-Eye View Semantic HD-maps Using an Onboard Monocular Camera,arXiv 2012.03040

这是一个单个车载摄像机的视频输入做语义BEV高清图在线估计的方法,包括图像级的理解、BEV级的理解以及时间信息的汇总。如图是其直观示意图:

image

如图是其框架图:它依靠三个pillar,也可分为处理主干特征的不同模块。 首先,由两个解码器组成的图像级分支,一个解码器处理静态HDmap,一个解码器处理动态障碍物体;其次是BEV时间聚合模块,该模块融合了三个pillar,并聚合了BEV的所有时间和图像平面信息;最后 是BEV解码器。

image

如图是其中时间聚合模块的示意图:它将来自所有帧和所有分支的信息组合到一个BEV特征图中。 骨干特征和图像级静态估计通过warping函数投影到BEV,并且在Batch dimension执行Max操作。 得到的结果在通道维级联。 Max函数使用了参考坐标系下的主干特征(突出显示为红色),以及跳连接的合并操作。

image

时间warping过程是通过投影单应性将所有图像平面特征和热图一起warp到一个常见的BEV表示。帧warping函数将特征从第n个摄像机坐标系投影到固定的公共BEV坐标系。这种warping可以从相机坐标(或中间)系统的地平面知识中推导出来。

本文采用的数据集提供了23个目标类别的3D边界框。 在实验中,选择六个高清地图类别:可驾驶区域,行人横过带,人行道,停车场区域,道路和车道。 对于动态目标,选择类别有汽车、卡车、公共汽车、拖车、工程车、行人、摩托车、交通锥和障碍物。 即使用六台摄影机来捕获数据,也只用前置摄影机进行训练和评估。

实验结果比较如下:PON、Deeplabv3+等方法

image
image
image

注:PON=Pyramid Occupancy Network (前面提到)

如图是静止场景估计例子:

image

如图是两个例子,目标在参考坐标系不可见情况下被网络成功检测的结果。

image

如图是Nuscenes(上部分2行)和Argoverser(下部分2行)结果比较:在Nuscenes下部图像,网络完全分割行人横过区。 由于自我运动和行人运动,网络错误估计了行人位置,而其他方法甚至无法检测到行人。 在Argoverse上部图像,结果与两种方法(偶尔产生汽车检测的FP和FN)的结果相当。 PON模型使右侧车道的车幻觉恢复,而该方法也错过了左侧车道的一个汽车和一个大车。

image

11 Street-Map Based Validation of Semantic Segmentation in Autonomous Driving,arXiv 2104.07538

本文提出用街道地图的先验知识进行模型不可知性验证。 特别是展示了如何验证语义分割掩码,并展示了OpenStreetMap的好处。 作者引入验证指标,指明错误的正或负路段。 除了验证方法外,还提供一种校正车辆GPS位置的方法,可以将更准确的定位信息用于基于街道地图的验证。 在Cityscapes数据集上做过测试,给出定量结果。

如图是整个方法概述:街道地图的先验知识,验证语义分割掩码的可驾驶区域; 为此,将给定摄像机视图的分割掩码与给定车辆位置对应的街道地图相结合; 在鸟瞰图和街道地图计算分割的叠加,忽略遮挡的动态物体,例如其他车辆或植被; 叠加层用于识别验证错误区域,分为FP(低IoS表示,橘红色)和FN(低IoM表示,粉红色);C1-3步骤描述涉及摄像机视图的任务,M1-3的步骤描述涉及地图视图的任务,CM1-2步骤应该是涉及摄像头和地图两部分的任务。这里语义分割采用的模型是ERFNet。

image

这里两个测度,即IOS = Intersection over Segmentation,IOM = Intersection over Map,如图示意:

图片.png

一个道路FP的例子:

image

一个道路FN的例子:

image

关于定位的矫正,如下图给出基于真值分割掩码进行定位校正的算法:(a)该算法将原始GPS位置周围的范围考虑在内;(b)然后计算该范围内在道路上潜在位置重叠,在metric diagram的锯齿模式是沿着道路的长度和宽度扫描的结果;(c)显示了位置特定迭代的重叠,并说明了搜索算法如何找到最佳位置。

image

实验结果如下:

image
image

补充几句:有很多研究driving behavior和motion prediction的工作都是基于BEV来做的,这里没有再去讨论,只是着重于感知方面。

你可能感兴趣的:(自动驾驶感知中BEV的景物表示方法(下))