本文介绍一个拥有无限场景开放式驾驶仿真器:PGDrive,通过 Procedural Generation 技术可以生成无限多的驾驶场景,由香港中文大学周博磊团队开发。
论文地址:https://arxiv.org/pdf/2012.13681.pdf
项目地址:https://decisionforce.github.io/pgdrive/
0. Absrtact
(这里先给出本文摘要)
在过去的几年中,基于学习的自动驾驶系统(learning-based self driving system)
受到了越多越多的关注。为了保证安全性,自动驾驶系统首先在模拟器中开发和验证,然后再应用到真实世界中。但是,大多数现有的驾驶模拟器仅包含一组固定的场景和数量有限的配置设置
。这很容易造成系统的过拟合
,以及缺乏对未见场景的泛化能力。
为了更好地评估和改善端到端驾驶系统的泛化能力,本文将介绍一个开放、高度可配置的驾驶模拟器 PGDrive
,模拟器具有procedural generation
的特征。模拟器首先通过提出的生成算法从基本blocks中采样来生成多样化的道路网络
。然后将它们转变为交互式训练环境,在该环境中以逼真的运动学方法渲染车辆附近的交通流
。实验结果证实随着procedural generation
的场景数量的增加,能够提高自动驾驶汽车在不同交通密度
和道路网络场景
的泛化能力。
1. Introduction & Related Work
( 本文的引言部分和第二部分研究现状这里就不详细介绍了,大家可以查看原文,我在这里大致总结下。)
- Self Driving
自动驾驶研究可以分为两类:模块化(modular)
和端到端(end-to-end)
。在模块化研究中,自动驾驶系统由许多子系统组成,如感知,定位,规划,控制,决策
等。模块化设计的优势是可解释性
,如果发生故障或意外行为,则可以轻松识别出发生故障的模块。 但是,设计和维护模块需要花费大量的人力,并且还可能会因人工设计而导致系统内部冗余。另一方面,一种流行的端到端方法
是通过强化学习
驾驶汽车。近年来,强化学习能够通过与环境交互来发现特定于任务的知识,因此大大减轻了对精心设计和领域知识的需求
。 同时,强化学习主体通过对环境的探索来学习,因此其能力不限于训练数据。 - Driving Simulators
这里介绍了8种常用的驾驶模拟器,CARLA,GTA V,SUMMIT,Flow,TORCS,Duckietown,Highway-env,SMARTS
。它们的主要劣势是地图场景有限
,不能提供多样的训练场景来帮助自动驾驶汽车提高泛化能力。 - Procedural Feneration
这里介绍了过程生成
技术,使用到了数据增强,域随机化,GAN
等技术来设计过程生成算法。 - Generalization
这里提出强化学习可以解决过拟合现象,在本文作者中比较了SAC
和PPO
两种强化学习算法的学习能力。
2. PGDrive Simulator
下表给出了PGDrive
与其它驾驶模拟器的比较,可以看到,PGDrive
最突出的特征是支持Procedural Generation
,可以生成无限多的驾驶场景。
A. Road Blocks
如下图所示,有7种基本道路块(road block):Straight,Ramp,Fork,Roundabout,Curve,T-Intersection,Intersection。
它们是基本的道路块,可以任意组合来形成道路网络。
B. Procedural Generation of Driving Scene (重点)
下面将介绍本文提出的Procedural Generation
算法(如下图所示)。
- 首先随机选择一个基本
road block
:GwG_wGw。 - 随机旋转所选择的
road block
,判断GwG_wGw和GnetG_{net}Gnet之间是否能连接起来,如果成功的话,则将新块GwG_wGw添加到GnetG_{net}Gnet中,这里至多进行TTT次尝试,每个GnetG_{net}Gnet包含nnn个blocks。 - 最后是对交通流进行初始化设置,包括汽车类型,运动学参数,目标速度等。
3. Experiments
Results on Generalization
论文比较了SAC
和PPO
两种强化学习算法的泛化能力,可以看到随着训练场景数量的增加,算法在测试集上的性能不断提高,其中SAC
算法性能优于PPO
。
最后,作者在项目网站上也给出了一个视频demo。
Reinforcement Learning 自动驾驶仿真