来源:计算机视觉
深度学习和动驾驶
作者:黄浴
数字孪生就是在虚拟环境中建立一个和现实世界一致的模型。数字孪生技术将为自动驾驶仿真测试发展道路上的一大助力,是仿真测试的增效利器。
百度在论文【37】提出一种用于自动驾驶端到端仿真的数据驱动方法:增强自动驾驶仿真(AADS)。该方法通过模拟交通流来增强真实世界的图片,创建与真实世界渲染类似的照片逼真模拟场景。如图10-37显示AADS系统的流水线及其主要输入和输出。
具体来说,用激光雷达和摄像机扫描街道场景。将输入数据分解为背景、场景照明和前景目标。采用一种视图合成技术,可以在静态背景改变视点。前景车辆配有3D CG模型。有了准确估计的室外照明,3D车辆模型、计算机生成的行人和其他可移动目标可以重定位并渲染放回背景图像,创建照片般逼真的街景图像。此外,模拟的交通流(例如,合成目标的放置和移动)基于捕捉的真实世界车辆轨迹,这些轨迹看起来很自然,并捕捉真实世界场景的复杂性和多样性。
与传统的基于VR或基于游戏引擎的AV仿真系统相比,AADS提供了更精确的端到端仿真能力,不需要昂贵的CG模型或繁琐的编程来定义交通流。
利用ApolloScape数据集中的语义信息,删除特定类型的目标,例如汽车、自行车、卡车和行人。移除移动目标后,RGB图像和点云中会出现大量孔洞,应仔细填充这些孔洞,以便为AADS生成完整干净的背景。用最新的RGB图像修复方法来填洞,其中语义标签来指导基于学习的修复技术,之后在新背景合成的深度处理中引入点云补全(point cloud completion)。
给定合成背景图像,可以将任何3D CG模型放置在地面上,然后将其渲染到图像空间中,以创建新的合成模拟图像。然而,为了使合成图像照片逼真,首先估计背景图像中的照明度。这使AADS能够在地面和车身渲染具有一致阴影的3D CG模型。此外,为了进一步改善合成图像的真实性,AADS还从真实图像中抓取纹理来增强3D CG模型的外观。具体地,给定具有未移动车辆的RGB图像,检索相应的3D车辆模型,将这些模型与输入图像对齐。然后从对齐的真实图像中迁移并完成3D CG模型的外观。
谷歌waymo的SurfelGAN【2】基于收集的有限激光雷达和摄像头数据,生成逼真的摄像头图像。如图所示,其主要有两个步骤:
首先,扫描目标环境,重建一个大量带纹理的表面元(Surfel)构成的场景。
然后,用摄像头轨迹对表面元进行渲染,同时进行语义和实例分割。接着,通过GAN生成逼真的图像。
waymo提出一种纹理增强表面元地图表示方法。表面元适用于动态几何建模,一个目标由一组密集点或带有光照信息的表面元来表示。将激光雷达扫描的体素,转换为有颜色的表面元,离散成 k×k 网格。
由于光照条件的不同和摄像头相对姿态的变化,每个表面元在不同帧可能会有不同的表观,创建一个由 n 个不同距离的 k×k 网格组成的编码,增强表面元表示。在渲染阶段,该方法根据相机姿态决定哪一个 k×k 块。
为了几何形状和纹理的进一步完善,训练两个对称的编码-解码生成器,如图所示:一个从Surfel图像到真实图像,另一个从真实图像到Sufel图像。同样也有两个判别器,分别针对Surfel图像域和真实图像域。
输入数据包括配对数据和未配对数据。其中未配对数据为了两个目的:
提高判别器的泛化性;
循环一致性约束。
另外,由于表面元图像的覆盖范围有限,渲染图像包含大面积的未知区域,并且,摄像头和表面元之间的距离引入不确定因素,附加距离加权损失来稳定GAN的训练。
VISTA(Virtual Image Synthesis and Transformation for Autonomy)是一个MIT开源的数据驱动模拟器【3】,其流程如下:
使用连续运动学模型更新车辆状态;
检索数据集与当前姿势相关的最近帧;
将帧投影到3D空间重建场景;
重投影到自车视点。
与传统的基于几何模型的仿真系统不同,数据驱动的仿真直接从真实数据中合成新视点,这已成为克服照片真实性和仿真-现实差距的一种方法。
如图是VISTA的应用场景:
从一个收集的驾驶轨迹中,VISTA合成一个新的可能轨迹空间,用于学习虚拟智体控制策略;
保持真实世界的真实感允许虚拟智体超越模仿学习(IL),用只有很少奖励的强化学习(RL)来探索空间,学习的策略不仅直接传递到现实世界,而且优于使用模仿学习训练的端到端方法。
如图给出VISTA 1.0如何实现新视点图像数据来用于训练:
自车与数据驱动仿真模拟器的交互示意图;在时间步骤t,智体接收环境观测并发出命令执行动作;
在VISTA仿真车辆运动,并将其与真实世界中估计运动进行比较;
然后将场景的3D表征转换为虚拟智体视点得到新观测。
从一个最近的单目图像,用卷积神经网络使用自监督学习方法得到估计深度图模型(单目深度估计NN模型很多)。根据估计的深度图和摄像头内参,可以将传感器图像帧反投影到3D世界中。这样,新视点的图像可以从3D世界投射回传感器图像坐标系得到。VISTA能够模拟不同的局部旋转(±15◦) 以及沿道路的横向和纵向平移(±1.5 m)。由于车辆在其车道内的自由横向空间通常小于1m,VISTA可以模拟超出车道稳定行驶范围的情况。
VISTA 2.0目标是以数据驱动的方式将仿真扩展到其他模态,即合成激光雷达的新传感器测量值和数据集周围的局部事件数据,并利用和发布该平台进行鲁棒的感知学习。其集成了用于自动驾驶车辆的多种传感器【4】,包括RGB摄像机、3D激光雷达和基于事件的摄像机。VISTA 2.0在模拟中快速生成新视点数据,丰富了可用于策略学习的数据,其中包含在物理世界中难以捕捉的极端案例。
如图所示是VISTA 2.0的框架:作为数据驱动的仿真器,VISTA2.0在合成场景中模拟智体,支持大规模学习和测试环境;这里优先考虑处理真实世界数据集的轻量级API,其仅对局部视点变化进行操作,实现高效的渲染和低内存开销。
如图是VISTA 2.0多传感器仿真的示意图:(A) 虚拟智体动力学在数据驱动环境中展开轨迹,每次都从当时的新视点呈现传感器观测数据;合成的三种传感器,包括来自RGB摄像头的图像(B)、来自激光雷达的3D点云(C)和连续差分事件(D),其中为每个传感器可视化新视点的合成示例。
激光雷达的传感器具备测量几何深度信息的准确性和对环境变化(如照明)的鲁棒性。与返回结构化网格状图像的摄像头不同,激光雷达传感器捕捉环境的稀疏点云。这里,每个点由4元组表示:(x, y, z, i),其中(x, y, z)是点在三维笛卡尔空间中的位置,i是该点的强度特征测量值。给定虚拟智体在环境中的位置,以及到最近收集点云Ψ的相对变换(旋转R和平移t),VISTA的目标是合成一个新的激光雷达点云ψ′,源自虚拟智体的相对位置。
由于Ψ在三维笛卡尔空间表征,一个简单的解决方案是直接将智体的相对变换 (R, t)作为刚性变换应用于Ψ,:Ψ′ =RΨ + t。然而,由于以下几个原因,这种方法 会失败:从激光雷达传感器获得的点云具有源自传感器光学中心的特定环形模式;对点应用刚性变换不仅会变换单个点,而且还会变换和打破固有地定义传感器位置的环形结构;相反,为了保护传感器这种数据空间结构,将来自新传感器位置的激光雷达光线重新投射到场景中,并估计新的强度;此外,简单变换点云的结果很可能在原始扫描可见点在新视点中被遮挡,因此需要被拒绝接收以保持传感器的视线特性。
为了克服这些问题,VISTA 2.0
剔除当前被遮挡点;
创建稀疏点云的密集表征;
根据传感器特定的先验知识从密集表征中采样得到新稀疏点云。
首先实现一个基于GPU加速对稀疏转换后点云Ψ′的剔除(culling)算法。Ψ′投影到2D极坐标。那么,在图像中剔除点,每个像素的距离要和其周围光线“锥体”的平均距离比较,类似Z-buffer技术。如图显示剔除算法:变换后的稀疏场景(A)将有一些点在渲染之前被拒绝接收(剔除),避免前景和背景(B)的混合;剔除算法(C)是轻量级的,GPU加速,不依赖于场景网格的光线投射过程。
使用稀疏和剔除后的点云,需要构建场景的密集表征,最后采样新激光雷达光线并生成新视点。为使稀疏表征致密,训练UNet架构学习一个场景的致密点云输出。致密化网络(densification network)的训练数据是用2D线性插值生成的。与严格的基于规则的插值算法(scipy.interpolate)相比,数据驱动的方法通过数据挖掘会产生更平滑、更自然的定性结果。此外,所得到的模型很容易实现GPU并行化,则实现显著的加速(~100倍)。
最后,从密集表征中采样稀疏点形成新的视点的点云。为确定采样位置,可以在数据集传感器的现有光线投射角上构建一个先验Ω。传感器的光线矢量随时间推移基本上固定不变,因为其本身内置在传感器硬件中,但可能会根据环境有一些轻微变化或回落。从先验Ω中采样ω会产生一组光线{(αi, βi)},从中投射和回收点的读数。
此外,先验Ω将尊重传感器的几个理想特性,也可以由用户指定,例如激光雷达射线的数量和密度。由于仍然在极坐标图像空间中操作,ω相当于一个二值掩码图像,表示致密图像中应该采样的位置。用新采样极坐标图像,可以逆变换数据表征,回到所需的三维笛卡尔空间。如图新视角合成所示:路面横向1米的运动为例,通过场景的密集表征深度和灰度 (A, B) 以及采样和重投影返回三维笛卡尔空间后的结果(C),可视化渲染流水线的不同阶段。