11月22日,由腾讯游戏学堂举办的第五届腾讯游戏开发者大会(Tencent Game Developers Conference,以下简称TGDC)正式开播,本届大会以“Five by five”为主题,汇聚40多位海内外行业嘉宾与专家学者,围绕产品、技术、艺术、市场、独立游戏及社会价值等议题,与从业者一起共同探讨行业未来趋势,分享具备实战与前瞻性的从业经验与研究成果。
在第三天(11月24日)的活动中,腾讯自动驾驶仿真技术总监孙驰天发表了“游戏技术助力自动驾驶仿真”主题演讲。在演讲中,孙驰天就腾讯自动驾驶部门的定位、腾讯自行研发的自动驾驶“绿洲”系统、以及游戏技术如何助力自动驾驶仿真发展等内容进行了详细分享。

在他看来,首先腾讯自动驾驶部门的定位是要做汽车行业的工具箱和加速器,而并非自己造车。目前自动驾驶行业面临的感知算法训练和测试验证两大挑战,都是需要虚拟仿真技术来帮助解决的。腾讯为此正在构建自动驾驶用的“绿洲”系统,并强调其对真实世界的几何还原、逻辑还原、物理还原、高并发这四大核心能力。
随后,他举例展示了游戏技术例如云渲染技术,MMO同步技术是如何运用于仿真系统的研发当中的。在演讲最后,孙驰天强调:运用游戏技术帮助汽车自动驾驶系统的开发是十分高效且严肃的事情,并希望通过大家的这些努力,可以在未来3–5年内,让大家敢于将汽车的驾驶权交给汽车商的自动驾驶算法,真正地实现汽车自动驾驶。
以下是为演讲实录,略有删减!
大家好,我是来自腾讯自动驾驶业务中心的孙驰天,今天我想跟大家分享一下我们用游戏技术,来助力自动驾驶仿真所做的一些工作。
首先介绍一下我们整个腾讯自动驾驶部门。很多朋友、很多同学都会疑惑:腾讯还有自动驾驶部门,你们是不是要造车呀?因为确实目前整个行业内部做自动驾驶以及造车的公司越来越多。但其实我们还是很明确的,腾讯是不会自己去造车的,那我们做什么呢?
做汽车行业的工具箱和加速器
我们的定位是做汽车行业的工具箱和加速器,去做帮助自动驾驶落地的工具、软件以及服务。其中会涉及到包括面向自动驾驶的模拟仿真体系TAD SIM,包括自动驾驶车端的全套软件TAD Pilot,也包括面向自动驾驶用的一套云工具链和云服务TAD Cloud,最后一个是面向自动驾驶专用的,一种地图格式叫高精度地图TAD HD MAP。

腾讯自动驾驶是2016年正式成立的。在这五年来我们打造了一个三位一体的面向自动驾驶的研发体系,包括刚刚提及的一个自动驾驶的云开发平台、自动驾驶的高精度地图的平台,也包括一个专门为自动驾驶或者我们称之为智能网联汽车服务的仿真平台。
在这几年的研发、探索和实践中也碰到了一些问题。其实能很深切的感受到,在整个自动驾驶行业、或者说智联网联汽车这个行业,有一些难题是困扰着整个行业的前进和落地,所以我们将这里面的最重要两点总结了出来。
第一是在感知算法训练上所面临到的挑战。
有一个比较有意思的段子是说:人工智能、人工智能,你有多少人工才能有多少智能。这个点其实在自动驾驶行业里也是非常现实的,每年全球这些做自动驾驶的公司,需要投入非常多的人力物力还有财力,来进行自动驾驶专用的人工智能算法的标注还有训练。这里面需要标注的这些样本,包括一般的汽车在路上经常碰到的交通场景,也会包括一些可能平时不经常碰到,但一旦碰到会发生比较危险的交通事件的一些场景,我们都是需要去进行数据的采集和标注的。

据第三方的统计,每年全球的自动驾驶公司,仅在这样的数据集的采集和标注上,就有超过10亿美元的投入,所以这个投入还是非常非常巨大的,而且这个数据集也是很难进行非常普适性的共享。原因是,行业内有些公司会将自己采集和标注的数据集拿出来给大家去共用,但是在不同的国家、不同的城市内,有不同的情况。
举个例子,我国有些特色的场景,比如外卖小哥、老头乐这种电动车。这种场景、要素,在别的国家是很少见到的,那这种要素的采集、标注,都是需要我们国家内部的这些科技公司来自己进行数据的搜集和标注、制作。所以这就会导致我们的数据集,基本上是每家都要自己去制作很多很多的标注和采集的投入,这样的量级对于自动驾驶行业来说,还是比较沉重的负担。
第二个比较重要的问题是测试验证问题。
在2016年的时候,兰德智库就提出来:一辆自动驾驶汽车需要经过110亿英里的距离,才能证明它达到一个合格的人类驾驶员水平,它才可以进入一个量产的阶段。那110亿英里是什么概念?这里我们举了一个比较直观的数字,地球到太阳距离大概是0.932亿英里,这样相当于是不到1亿英里的样子,110亿英里就相当于100多倍的地日距离,这个距离行业里的公司们做到什么程度呢?
拿行业里可能路测数据最多的谷歌无人车的子公司叫Waymo,以他的数据来举例:Waymo到目前为止,已经完成了超过2千万英里的路测,即折合成0.2亿英里的数字,大家可以看到0.2亿英里,和我们想达到的目标数字——110亿英里还是有一个非常大的距离,而且这也是花费了Waymo很多年的时间才能达到。所以这个数字将是自动驾驶落地的一个非常大的阻碍。

那行业里会去怎么解决它呢?目前大家看到比较通用的办法,是利用虚拟仿真的引擎、虚拟仿真系统,来生成各种各样的场景解决刚刚所说的两个问题。
举个例子,第一个感知算法训练的问题,那我们可能不需要通过这么多的真实采集车去进行数据的采集和标注,而是借由仿真系统自己内部构建千变万化,多种多样的场景。比如说城市的、高速的、城区的、晴天的、雨天的、雾天的等等。这些场景会生成各种各样的图像、点云,和不同的数据集用来给做感知系统做训练。这样做不仅可以很方便地生成各种天气、极端的交通场景,另外一个重要原因,是因为由仿真系统生出来的场景是自带真值的。
“真值”是指什么呢?这可能是在人工智能里,用得比较多的一个词: ground truth。它是指一个物体或者一个元素的客观属性,在观察和了解这个世界的时候,我们看到的东西、认知到的东西、或者摸到的东西,它都不是真值,它不是客观值,是观测值。而真值是指这个物体本身就具备的客观属性,所以由观测值去推导它物体本身具有的客观真值,中间就会存在误差,这里面就会引入错误,但由仿真系统这种自带真值的系统,它生成出来的,预带标注结果的数据,它的结果是100%准确的。所以通过这种方式可以100%准确地生成带有标注结果的训练数据。

第二个问题测试验证。虽然行业内公认的谷歌无人车的子公司WayMo,它目前只进行了0.2亿英里的路测,但是他已经进行了150亿英里的仿真测试。当然不仅仅是WayMo,在整个行业内部,使用虚拟仿真技术来进行大范围、大规模的里程测试,是一个共识。大家也将虚拟仿真技术称作为整个自动驾驶技术奠基技术。为什么要用虚拟仿真技术,来尽可能的代替道路测试呢?当然不是要完全代替,只是说使用虚拟仿真技术来极大的代替,比如95%、99%的路测里程。
有三个非常重要的原因:首先是安全性问题。在2018年的3月18号,自动驾驶行业内发生了一件非常有冲击性的事情。在美国的亚利桑那州,Uber的无人测试车发生了整个行业内、全球的第一起自动驾驶测试致死事故,这个事故当时对于整个行业来说,是非常大的一个负面冲击。
因为自动驾驶目前面临的挑战,大家关心的最核心的就是安全性这个点。在测试过程中就已经发生了致死事故,又如何能够保证你的产品在以后大规模应用的时候,可以解决这些你本应该解决的安全问题呢?所以使用虚拟仿真测试来代替真实的道路测试,就可以完全避免安全性的问题。
在虚拟世界内部是不会有任何真实的伤亡,毕竟在虚拟世界内部把楼、把车、把道路都撞毁了也是不会有任何损失的,所以安全性是用虚拟仿真测试来代替真实路测的一个很重要的原因,也是我们放在第一个的原因。

第二个原因就是时间和金钱。举一个我们去进行一次自动驾驶路测例子:早上准备代码的发布、发包、车端部署。中午上车,把车开到指定的测试区域——因为不是所有区域都可以测试的,必须要去政府指定的自动驾驶的测试区域开展路测。测完之后下午再把数据拿回来,拿到本地进行数据的分析和处理。这样一来一回,那怕你只是调了算法里非常小的一个参数、一个变量,那也至少需要消耗一整天的时间来进行验证。
我们可以想象,如果进行更多的、更丰富的场景测试,有几千个、几万个、几十万个场景需要测试和覆盖的时候,所消耗的时间和金钱是非常海量的数字。而使用虚拟仿真测试来进行这样的测试,唯一需要承担就是电费成本。
第三个我们会重点提到软件OTA的回归测试。在这里简单解释一下,软件的OTA是指这个软件可能一开始发布到自动驾驶渠道上是版本一,后面通过不停的云端推送来进行长期的升级和迭代。比如特斯拉,它是最典型的自动驾驶行业内部,或者汽车行业内部,会使用OTA不停地进行智能驾驶或者说辅助驾驶软件升级的一家公司。
回归测试,是指我们每次升级之后,我们要进行一个非常全面的检查和测试,来保证最新的自动驾驶算法,是可以解决之前所有已经解决的问题,而不是捡了芝麻丢了西瓜,或者拆东墙补西墙。如果一个软件版本就需要进行110亿英里的里程测试,那当每次软件通过OTA进行更新之后,需要进行回归测试的时候,这个总的里程就是一个天量、天文数字,没有一家公司是可以承受得起的。所以,使用虚拟仿真测试来进行软件OTA之后的回归测试是一个必然的趋势。
自动仿真驾驶的“四大核心能力”(构建自动驾驶用的“绿洲”系统)
基于上面两个解决方案,我们做了一件事情——我们的目标是要打造一个类似于电影《头号玩家》中的“绿洲”系统。 本质上我们的目的是要构建这样的虚拟世界,只不过接入到这个虚拟世界内部的,不再是人类的玩家用户,而是被测试的自动驾驶算法。我们的目的是要生成不同的关卡、不同的副本,让自动驾驶算法来体验不同的场景,面对不同的困难和挑战,来观察它们是不是可以很好地去解决这些路上常见、或是不常见的交通场景和问题,从而来决定这个算法是不是已经成熟到可以部署到自动驾驶车辆上,进行真实的道路测试或者规模的商用。基于这个目的,就需要打造我们的核心仿真系统,我们也总结了四个仿真系统最核心的能力。

第一个是对于一个真实世界的几何还原能力。大家可以理解为去构建了一个游戏场景,这里面可能更需要在三维的静态场景之上。不管是游戏里的场景构建、还是地编,都是类似一个概念。只有很准确的将一个世界真实地还原出来,才有可能比较准确地去观测它。
尤其是在做自动驾驶测试的时候,我们不仅要将世界非常真实的还原出来,还需要将观测这个世界的算法或者是传感器比较精确地还原出来。大家熟知的传感器可能会包括摄像头,其实在自动驾驶或者智能网联汽车领域,也会用激光雷达,毫米波雷达这样的传感器。我们的目标是通过对世界进行完整地、精确地几何还原,来帮助进行世界的真实重建,以及基于真实重建的世界的传感器仿真。
第二步是要对世界一个非常精确的逻辑还原。几何还原解决了,那逻辑还原需要解决的是,我们如何去生成世界内部的动态的元素,动态场景问题。动态元素就会包括车、行人、外卖小哥、老头乐电动车。
要还原这些动态要素,首先就要对这些动态元素有一个比较形象、准确的建模——车的运动轨迹是什么样子?人的运动轨迹是什么样子?当行人碰到别的障碍物车的时候,它会有什么样的反应?当行人碰到别的车、碰到别的行人的时候是什么样的反应?这都需要进行非常精确的逻辑还原,从而让这个世界内部的所有元素都更精确地贴近真实世界的元素反馈。
第三是对于真实世界的物理还原。做物理还原的原因是因为在做整个自动驾驶仿真的时候,我们很关心这些汽车运动模型,这辆车的动力学模型、它的电机、发动机、变速器、动力传动系统,当然我们也会关心汽车的轮胎和地面的摩擦等这些物理效应,所以只有当比较准确、精确、真实还原出这些物理效果,才能得到一个比较精确的车辆仿真结果。
第四步需要做的是高并发。这个在上一部分我也提到了,我们做仿真系统的目的,就是给这些自动驾驶算法建立非常多的副本,让他们去进行挨个的挑战。所以想建立成千上万、几百万个副本,就需要具备高并发能力。从而让这些自动驾驶算法,可以并行的进入到这几千、几万、几十万的场景或者副本当中去进行测试,而不是一个副本一个副本进行测试,那这样十万个场景量级的场景库可能需要等待数个月的时间才能得到一个结果。这四个点是我们目前总结的,对于自动驾驶仿真来说最核心的四个能力。
从无到有 构建数字孪生世界
基于要构建的这四个能力,我们在过去的这五年时间里做了什么呢?

首先我们的TAD SIM1.0从无到有地构建了数字孪生世界,来将自动驾驶算法放在里面进行世界的测试。
第一步,我们基于自动驾驶专用的高精度地图,来完整1:1还原了整个现实世界,然后将现实世界转换成一些真值,输出给自动驾驶的算法,训练集。下一步在虚拟世界内部生成,千变万化的测试场景,供我们的自动驾驶算法进行测试。后来我们发现只有这些可能是不够的,尤其是自动驾驶方面。在仿真的真实性上是需要做提升的,所以我们又花费了比较多的时间,来利用游戏技术以及真实数据这两条腿、双擎驱动的方式,来极大地提升仿真系统的真实性。当然我们用了一些比较不同的技术路线和方式来提升,包括在传感器仿真上去运用游戏引擎的能力,包括在做交通流的仿真时,会使用AI、Agent AI的能力。

谈到用游戏技术来提升自动驾驶仿真系统的真实性,它指的不是我们小时候,带给我们无限欢乐的这些游戏,而是那些更新地使用最新的游戏引擎、渲染引擎或者游戏AI技术等等来构建的次时代游戏。这里面有很多东西是值得借鉴,可以用于构建自动驾驶仿真测试用的系统。举例来说,第一点是如何用这些游戏技术来进行看似很真实,但实际上是虚拟场景的还原。这里面举了四个例子,大家可以看一看这四个场景的构建,哪一个是真实、哪一个是虚拟的。

这四个场景其实都是虚拟的,都是利用游戏引擎以及一些场景构建技术还原出来的一个真实世界供自动驾驶汽车来进行测试。
在这种场景还原的技术点上,有几点是我们特别关心的:首先是模型的面数,包括所有模型使用的材质,对应的光照变化和应用的优化,这些结合起来会极大地影响整个虚拟测试场景的还原真实度。场景还原真实度也会极大地影响整个仿真测试的结果。所以使用游戏技术里面的场景还原技术和一些别的技术来帮助我们极大提升场景的真实性是非常有帮助的。
同时我们也用了一些腾讯地图的数据和卫星图的数据,人工智能算法来帮助我们大规模地生成城市级别区域。
我们用腾讯地图+卫星图数据+,自己的数据孪生的人工智能算法的工具链,可以直接纯自动的生成。包括北京市五环以内576平方公里的完全的城市重建,这里面没有任何人工干预,不管是建筑物还是道路还是水系还是植被,完全都是纯自动生成、一键生成的,所花的所有成本也就是在本地,运行了一个22小时的电脑和电费,仅此而已。
如果这个工作放在云上的话,可以在一小时内快速完成576平方公里的重建,所以使用这种技术来帮助我们重建,并在游戏引擎内去渲染一个非常广域和真实世界能够对应上的场景,可以帮助我们去进行真实世界所对应的虚拟场景搭建,从而进行对应的虚拟世界的自动驾驶的测试。

刚刚介绍的是利用腾讯地图、卫星图还有一些POI数据,来帮助我们构建城市级别的场景。当我们做自动驾驶仿真测试的时候,在一些局部的道路对精度有着非常高的要求。我们希望精度可以达到厘米级,比如3厘米、5厘米,这种情况下就会采用第二种技术手段,也就是一套依赖数据采集车的数据采集和重建技术,来非常高精度以3厘米的精度来还原整个真实世界。

这里介绍了整个还原真实世界的步骤,首先会进行一定的数据采集生成一定的虚拟世界,然后转化成刚刚提到过通过真值系统转换成深度值、语义信息。通过这些数据,生成式对抗网络,将它们转换成了真实图片风格的图像,以及标注的结果,而且这个标注结果因为是进行了真值标注,所以是100%准确。
通过这些真值的结果,又反过来训练场景生成和感知的算法,又反过来提升场景生成的自动化率,以及降低人工参与的比例,所以这样闭环的工具链经过三年时间可以非常高自动化率、低成本地不间断的运行,帮助我们自动生成世界上各种各样的场景。当然还是需要采集一定的真实数据,来作为这个数据集的输入来补齐的,但是这样一个自闭环场景生成的工具链,帮助我们极大地解决了采集数据会花费一定的时间和成本,但要又要生成无限多种虚拟场景的问题。

这个可以看到是通过刚刚介绍的依赖采集车的数据孪生的工具链,帮助还原了一个仿真测试场景,右边是真实的采集回来的路测数据,左边是我们用采集回来的数据,可以完全还原的虚拟仿真的测试场景,这里面包括我们对于静态世界的还原,建筑、道路、路牌、标识牌、道路、路面上的一些地面标识,当然也包括动态元素,这些行人这些车流,包括也可以看到,我们也生成了外卖小哥的小车。
将动态元素和静态元素合在一起就可以生成一个比较真实,可以进行虚拟仿真测试的一个虚拟环境。这样做的好处是,可以通过有限的数据去生成无限多种的测试场景,这里我们是生成了一个和真实世界非常一致的,完全复现真实路采数据的虚拟场景,但我们可以用这个数据来生成无限多种千变万化跟真实世界,完全不一样的场景,来进行进一步的自动驾驶的仿真测试。
基于刚刚这些工作生成出来这些场景之后,还可以做进一步更真实的仿真测试,在行业内部我们管这个叫“车辆在环测试”。举一个直观例子,我们给自动驾驶汽车套上了一个AR眼镜,大家可以看到在右侧四幅画面里面