作者 | Junchuan Zhang,复睿微电子自动驾驶仿真算法专家
自动驾驶仿真是计算机虚拟仿真技术在汽车领域的应用,将真实世界进行数字化还原和泛化,高仿可靠的仿真平台可以加速自动驾驶商业化落地。在现实生活的自动驾驶汽车上,激光雷达、摄像头等硬件的设计、测试是一个复杂的过程,一旦硬件发生升级和更新会带来大量的人力和物力成本。自动驾驶模型的学习和测试需要大量的道路数据输入,兰德智库有过一个评估,自动驾驶系统想要达到量产应用条件,至少需要经过 110 亿英里 (约 170-180 亿公里) 的道路验证。现在很多城市开设了自动驾驶测试区,但场景单一,道路环境无法获得全覆盖的道路状况,有些特殊的碰撞测试场景无法获得。
自动驾驶仿真可以解决一部分成本和场景的多样性需求,对于全球各大车企和自动驾驶公司来说,虚拟仿真平台都是主要测试手段,自动驾驶测试中有 90% 的场景通过仿真平台来完成。将真实路段的信息通过场景建模或数字孪生的方式在虚拟环境里实现,在此基础上生成各式各样的交通流,产生大量的混合式仿真数据以及自动生成的标注真值,提供给自动驾驶模型进行训练和测试,提高模型的泛化性。此外,自动驾驶仿真很容易在数据、标注、训练、测试中形成闭环,从而加速自动驾驶算法的更新和迭代。
特斯拉 AI Day 自动驾驶仿真剖析
特斯拉作为自动驾驶的标杆,在自动驾驶仿真方面也是领头羊,在去年的 Tesla AI day 上,特斯拉就展现了其高度真实的自动驾驶仿真平台,驾驶场景非常完备,道路、车辆、行人、路灯、周边的路延、草地、树木、不规则建筑、光源等等,第一眼看上去几乎就是摄像头下的真实场景。在今年的 AI Day 上,特斯拉再一次展示了他们在自动驾驶仿真平台上的进展,介绍了他们 Simulation World Creator 的工作流程和大体框架。
今年发布会中特斯拉介绍的仿真工作内容,主要属于 WorldSim 的范畴,意即仿真测试使用的数据全部是虚拟出来的。有关 LogSim 的仿真测试内容,即单纯使用真实数据建模、回放给自动驾驶算法,在去年的 Tesla AI Day 发布会中有所涉及。当然,值得注意的是,在今年发布会特斯拉介绍的方法中,WorldSim 和 LogSim 的界限进一步模糊,在其 World Creator 中也使用了部分真实数据作为输入,这一点在接下来的文章中会进一步介绍。


根据发布会内容笔者总结了特斯拉 Simulation World Creator 工作流程。
-
首先特斯拉强大的 Auto Labeling 工具链会给出一份数据收集所在地的详尽的道路信息,包括道路边界、隔离带边界、车道线、道路连接信息等,特斯拉会在 Houdini 中利用这些类似高精地图的信息制作路网模型、依据道路边界等生成路面网格,并对路面和路面上的车道线进行渲染。Houdini 是一款广泛应用于影视和游戏行业的模型、特效制作软件。笔者推测,特斯拉针对仿真场景建模基于 Houdini 开发了自动化 pipeline,以像他们在发布会中强调的那样,高效地生成仿真场景。
-
路网模型生成以后,World Creator 会从特斯拉丰富的三维模型素材库中选择植被、建筑物和其他静态物体来填充道路隔离带、完善路边街景、以及增加更丰富的视觉细节 —— 如落叶对路缘的随机遮挡。如特斯拉在去年的 AI Day 发布会中所说,他们已经制作了数千种不同的三维模型,这些模型根据一定的规则可以组合成不同风格的、随机的、同时又是合理的街景,以丰富视觉渲染信息,达到获取大量传感器数据集的目的。自动化街景的生成可以节省很多技术美术人力。
-
静态场景完成后,World Creator 还会参考地图信息对路网添加交通灯、交通标志等,并从 Auto Labeling 的结果中获取道路行驶方向、连接及相邻关系等道路连接信息,作为下一步生成随机交通流的依据。AI 算法控制的交通参与者会根据以上道路连接信息,在制作的仿真场景中形成随机交通流,让被测车辆身处较为真实的交通环境中。
仿真对于自动驾驶开发的重要意义在于其可以提供大量真实场景无法提供的数据,那么如何产生大量丰富的场景呢?特斯拉在发布会中提到了两点内容:
第一是前文提到的,路边街景的随机生成,如图 3 所示,在一个相同结构的路口周围产生了六种不同的街景环境。
第二是根据算法测试需求,道路连接信息也可以被修改,图 4 中展示的是通过改变一个路口的道路连接关系(连带改变了地面行驶标志),改变了交通流的走向,创造出了更多不一样的仿真场景。


接下来特斯拉介绍了 World Creator 的一些工程化内容(图 5):包括通过 tile creator 应用前文所述的流程制作三维场景,然后用 tile extractor 分片区地将这些 geometry 和 instances 数字资产储存起来,需要时按图索骥调取相应位置的多个片区场景加载入 tile loader,最终输送给 Unreal Engine 引擎运行仿真。

自动驾驶仿真产品架构
结合特斯拉发布会介绍的仿真工作内容,笔者计划参考游戏引擎架构简要分析自动驾驶仿真产品(WorldSim)的主要架构层级。图 6 为现代游戏引擎架构层级图 [1]。

- 工具层指的是各种能够人工或者自动化生产仿真场景所需数字资产的工具和能力,如图 7 所示:包括仿真产品本身的编辑器,也包括能够导入第三方工具生产的内容的能力。这其中可能包含静态地图、道路模型、建筑物模型、行人模型,甚至动态场景等。好的仿真产品工具层能够应该能够方便多种技术角色人员共同对仿真场景进行开发,如特斯拉在发布会中提到的,其 World Creator 产品可以让美术人员快速新建仿真场景。

- 功能层体现了仿真产品为了达成仿真测试目标提供的主要功能:如物理解算功能、渲染功能、动画功能、动态场景、驾驶行为模拟功能、真值输出功能、与被测对象间的接口功能等。如去年 AI Day 发布会中特斯拉着重强调的他们结合了实时光线追踪与神经网络渲染的图形渲染功能。

- 资源层代表了完成仿真测试需要的一切数据文件,以及在运行仿真时加载这些文件的能力:精细的车辆模型可以提供更好的视觉效果,但会导致仿真产品加载场景更缓慢吗?图 9 展示了一系列静态建筑物模型。

-
核心层代表一系列仿真产品的基础设施,包括数学计算库、文件解析工具、线程管理工具,决定了仿真产品的很多基础表现,例如仿真产品能否充分利用并行计算资源模拟复杂物理过程?
-
平台层决定了仿真产品能否适配不同计算机平台:linux、windows、云平台,以及特定的实时计算平台等。
另外,第三方库可以提供仿真产品某些层级中的部分解决方案,例如物理解算器可以选择 Bullet、ODE、DART 等物理引擎。
自动驾驶仿真中的自动标注
自动驾驶仿真平台的最大优势在于它能给出准确的真值,传感器的安装位置和配置可以随意调整,自动标注工具可以随着这些变化来自动调整生成和算法模型匹配的 Raw 数据以及 Label。
自动驾驶算法正在经历从 2D 检测 / 分割网络到 3D 检测 / 分割网络的更迭期,目前落地的算法以 2D 检测 / 分割居多,Yolo、Unet 等网络在 2D 目标识别中广泛应用,网络训练用到的 2D 检测框、车道线分割、可行驶区域分割真值在仿真平台中很方便获取。

近年来,随着 Transformer 模型的出现,基于多传感器、BEV 空间的 3D 检测 / 分割网络层出不穷,对应的 3D 检测框、矢量车道线、占用网格这些标注真值对于人工标注来说难度较高,但对于仿真平台来说,通过编码就能自动准确地获得网络训练测试需要的标签。

随着自动驾驶感知算法的快速发展,海量的感知数据和配套的真值标签正变得越来越重要,自动驾驶仿真工具体系在更先进的计算硬件和更新的建模技术的帮助下,一定能给行业带来更多收益,加速算法开发和产品测试,节约更多人力时间和金钱成本。
参考资料:
- Games 104: 现代游戏引擎:从入门到实践:https://games104.boomingtech.com/