利用视频游戏训练现实中的自动驾驶汽车

渥太华大学教授,Sensor Cortek and Tempo Analytics 创始人兼首席科学官 Robert Laganière

无论您是否认同“数据是新石油”这一观点,(事实仍然是)系统架构师为自动驾驶汽车开发人工智能 (AI) 芯片时,需要大量数据来训练神经网络以做出正确的决策。 

构建和使用深度学习系统的难题在于使用尽可能真实的数据来训练网络。深度网络在构建之后会接受训练,在“真实场景”中执行识别。基于训练时使用的数据,深度网络的性能表现非常好,但在新环境中部署网络时,性能可能会有很大差异。性能的变化率通常被称为深度神经网络的“泛化能力”。这一概念仍处于研究阶段,同处该阶段的还有称为“域适应”的技术,这些技术旨在利用来自源域的标记数据来准确地建模新环境。

训练系统需要大量数据来克服泛化能力和域适应的挑战,构建表现符合预期的安全 AI 产品。此外,该系统需要大量的数据来确保网络在所有情况下都能表现良好。 

涉及自动驾驶时尤其如此。为了构建完全自主的车辆,训练数据必须考虑汽车可能遇到的所有可能的天气情况、道路地理条件、驾驶员行为类型以及弱势道路使用者。开发一个训练有素的网络不仅需要数百万公里的驾驶经验,还需要几艾字节的数据 (1 EB = 1000 PB = 1,000,000 TB)。大多数公司没有相应的财务措施去部署汽车行驶几百万公里。此外,在现实世界中经历所有可能的场景(例如,在车辆密集处行走的行人、在道路上行走的动物或者闯红灯的骑车人),然后再开发数据集,这并不切合实际。

利用合成图像创建合成数据集

使用合成数据是更为快速和经济地训练网络的一种解决方案。合成数据越来越多地用于机器学习应用,此类应用基于合成生成的数据集训练模型,旨在将模型的学习转移到现实世界。图 1 显示了公开的合成数据集“Playing for Benchmarks”的示例。Playing for Benchmarks 建立在视频游戏“侠盗猎车”(Grand Theft Auto) 之上,这是一个相当逼真的城市驾驶场景。使用合成图像训练网络提供了各类驾驶场景,无需驾驶真车外出。对于可能影响现实世界中的数据集发挥作用的保障、安全或隐私问题,合成数据集也能够予以规避。

 

图 1:“侠盗猎车”游戏用作训练数据

合成数据集以编程方式生成,其功能和长度可能有所变化,并且还可能具有一定程度的随机性。针对自动驾驶等安全攸关的应用,合成数据集还可以将各种场景、对象和照明条件涵盖其中。可以插入随机噪声以模拟摄像头模糊、雾和其他视觉障碍。

更重要的是,由于可以控制数据集中的所有内容,例如知道汽车、树木、行人和标志的出现位置,因此可以免费获得数据标注。为现实世界的数据集生成完全准确的标签,可能花费巨大或者根本无法实现。免费标注是一大优势。英特尔实验室和德国达姆施塔特大学的一组研究人员,针对“侠盗猎车”游戏,开发出了从中提取数据标注的方法,以供训练使用。研究人员在游戏和计算机硬件之间创建了一个软件层,用于对游戏显示的道路场景中的对象进行分类。人类几乎不可能手动标记所有相似细节的场景,但分类软件会自动为机器学习算法提供标签。然后,该算法可以识别卡车、轿车、标志、行人和其他对象。

可以通过改变天气、照明条件、汽车、行人和自行车的数量和密度以及其他“自然”变量,修改合成数据集以改进模型和训练。

使用诸如开源游戏引擎 CARLA 之类的工具,可以产生其他数据集,也能生成驾驶场景,但此类场景不如“侠盗猎车”逼真(图 2)。Synscapes 7D 是最逼真的公开数据集,但在多样性方面受到较多限制。

图 2:CARLA 和 Synscapes 7D 数据集生成的示例场景

合成数据集可以用于真实世界的汽车吗?

虽然使用合成数据集的概念是一个有趣的学术行为,但真正的问题是,“使用合成图像训练要在现实世界中部署的网络,是否是个好主意?”

为了测试这个概念,我们尝试了两种策略。要使用包含合成图像和真实图像的数据集来训练网络,第一个选项是简单地将所有内容放在一起,并使用混合的合成数据和真实数据来训练网络(图 3)。 

图 3:选项 1——混合合成数据和真实数据

第二个选项则是借助“微调”(图 4)。首先,我们使用合成数据集训练网络,然后使用真实数据完善网络。

图 4:选项 2 ——使用合成数据训练网络,然后使用真实数据完善网络

在这种情况下,另一个考虑因素是确定合成与真实数据集的正确比例,以获得最佳性能。为此,我们执行的一系列训练程序始终将图像总量保持在 15000。我们使用 Kitti / Cityscape (KC) 真实数据集来比较这两个概念的性能。基线(图 5)显示了在只使用真实的 KC 数据集图像训练神经网络时获得的结果。其他三条线显示了混合的合成数据和真实数据,从 2.5% 的真实数据和 97.5% 的合成数据,到 10% 的真实数据和 90% 的合成数据,共三种混合比例。(上图和右图的结果优越,表现了更高的平均精度和平均调用次数。)非 KC 线上的三个点对应的是合成数据集。对于混合数据集(图 5,左),精度与基线大致相同,但调用次数略少。但是,总体结果与基线相当。

第二种方法是微调(图 5,右),表现出比混合数据集更大的调用量,可能是因为合成数据更加多样化,可以更精确地检测行人和汽车。具体而言,两个圈出的数据集(10% 真实数据搭配 90% 合成数据)显示出比基线更强的调用和精度结果,而 CARLA 稍微令人失望,可能是因为它不够多样化。 

图 5:混合数据集显示与基线相似的结果,但微调技术提供了比基线更好的结果。

结语

训练自动驾驶汽车的数据越多越好,而且使用合成数据优势明显,例如更多样化的场景和自动数据标签,而不会局限于真实数据,同时还能尽量减少数据收集成本。拥有的数据越多,就越有可能生成强大的系统。微调合成数据产生的结果可以和仅使用真实数据一样好,甚至更好。即使合成数据和真实数据之间的比率为 10:1,性能结果也和只使用真实数据相当。使用合成数据时,请确保包含各种各样的环境、对象和照明条件,这样不仅能够提高真实感,更会对您的结果起到影响作用。

 

如需更多信息:

Nowruzi F.E., Kapoor P., Kolhatkar D., Al Hassanat F., Laganière R. Rebut J., How much real data do we actually need: Analyzing object detection performance using synthetic and real data, ICML Workshop on Autonomous Driving, Long Beach, CA, June 2019.