夏斐 何志扬作者

像训练Dota2一样训练真实机器人?Gibson Environment环境了解一下

本文是对斯坦福人工智能实验室 Silvio Savarese 教授团队开发的模拟环境——Gibson Environment 的介绍。原文作者是夏斐,何志扬。该模拟环境的优点在于它是基于真实环境渲染而获得的,因此在该环境中训练的智能体具备很好的真实环境迁移特性,这对于自动驾驶、机器人等技术的低风险、低成本研发都有很大的应用价值。该项目于 9 月初在 GitHub 完全开源,并同时公开了目前最大的 3D 室内数据集。项目网址 gibson.stanford.edu,相关论文曾发表在 CVPR 2018 上。

很高兴给大家介绍我们 CVPR 2018 的项目 Gibson Environment。这是一个主要适用于机器人导航任务的模拟平台。我们在传统的图形学渲染 pipeline 基础上进行了创新,使用神经网络作为渲染引擎 (neural network rendering engine),达到了近乎真实环境的渲染效果。通过和物理引擎的融合,我们可以做到在计算机里 1:1 地模拟真实环境:

效果图:我们动态地模拟了斯坦福计算机系 (Gates Building) 一楼的真实场景,让虚拟机器人可以在其中进行探索,学习真实世界。我们在 Gibson Environment 里可以同时「激活」大量类似的机器人。喜欢电影黑客帝国的读者可能对这个概念并不陌生。

通过 Gibson Environment,我们可以把真实的场景 (例如家庭住宅,学校,办公室) 虚拟化,以节约大量在真实环境训练机器人的资源。另一方面,我们可以把虚拟环境中训练出来的机器人部署到真实环境。这为实现真实的强化学习提供了有力的基础。

使用我们的开源平台来探索激活的和真实世界的感知。上图展示了 Gibson 中的两个智能体。这两个智能体是激活的、嵌入式的,并服从物理定律和空间(a,b)的约束。它们源源不断地接收视觉观察,就好像佩戴了摄像头,并以第一人称视角来观察环境(c)。除了(c)中的 RGB 通道模态,它们还能接收其它模态的观察,如(d)深度、(e)语义标签、(f)表面法线。该虚拟环境是通过扫描真实建筑得到的。

  • 项目网址:http://gibson.vision

  • 3D 数据集地址:http://gibson.vision/database

  • 论文地址:http://gibson.vision/Gibson_CVPR2018.pdf 

  • Github 地址:https://github.com/StanfordVL/GibsonEnv 

背景

2016 年起,伴随深度强化学习的兴起,计算机视觉领域的研究重心从静态图像处理开始转向动态视觉控制。大量的仿真模拟平台涌现而出 (例如虚拟驾驶平台 Carla, 虚拟无人机平台 Airsim)。

传统机器人领域倾向于将一个复杂的任务分成感知 (perception) 模块和决策 (planning) 模块,而强化学习让我们可以端到端地学习到更复杂的控制 (end to end control/sensorimotor control),即输入传感器信息,然后直接输出控制信号。

目前最前沿的强化学习算法已经在很多端到端任务上获得了的成功,例如在游戏中学会解迷宫,在不平的路面上学会行走。在自动驾驶中,从摄像头拍到的画面,我们可以直接预测方向盘的转角和油门刹车。

这样的任务无法在静态的数据集(例如 ImageNet)中学习。我们需要在一个可交互式的动态环境中训练智能体。

上图涵盖了目前主流的模拟环境,包括游戏类的毁灭战士(VIZdoom)、侠盗猎车(GTA)、驾驶类的 CARLA,物理类的 Roboschool 等。之前提到的解迷宫、行走智能体就出自这些环境。有了这些成果,我们能不能将智能体应用于实际生活中,解决驾驶、机器人行走的问题呢?

事实告诉我们,部署到实际中的智能体往往会因为观测到的像素不同而导致结果不理想,甚至失灵。例如在 GTA 中训练的自动驾驶汽车到了真实世界中,看到从没有见过的场景,会不幸成为马路杀手。

可迁移已训练智能体的学习环境需要具备三个主要特性:(1)来自真实世界并反映其语义复杂性;(2)具有确保在实际部署结果之前不需要进一步的域适应的机制;(3)智能体可在环境中具象化,并服从空间和物理定律的约束。

针对这个问题,我们设计了 Gibson Environment,以解决模拟平台的环境不够真实 (photorealisitic) 的问题。目前大部分的模拟平台都是基于计算机图形学的方法 (例如 THOR, House3D, Carla),而使用这种方法通常很难迁移到真实环境。在我们的工作中,我们使用基于图片的渲染 (IBR) 方法,结合神经网络,达到了高效和真实的渲染。

Gibson Environment 的名字来源于美国认知心理学之父 James J. Gibson。他提出认知 (perception) 和 行动 (action) 具有非常紧密的联系,婴儿需要通过主动玩耍才能学会识别各种物体。这对于人工智能也是一样的。Gibson Environment 的科研价值在于它正是这样一个环境,让智能体可以同时学习认知和行动。

方法

为了渲染出看起来更加真实的画面,计算机图形学领域主要有两条主要的技术线路,一种是通过更仔细的建模和更好的光线追踪算法来实现渲染。这种方法在电影制作中十分常见,通常需要消耗大量的计算资源和资金,不适合用于实时渲染的模拟环境。

另一种方法是直接从真实环境中采集图片,把渲染的问题定义为「视角合成」问题,即给定几个从已有的视角采集的图片,合成一个新的视角。我们采用了这种方法作为渲染方法,示意图如下:

该方法的输入是环境的 3D 模型(比较粗糙)和从一系列视角采集到的图片。对于要渲染的任意一个视点,我们选取周围的 k 个视点,将每个视点的每个像素投射到 3D 模型上,得到一个三维点云。之后,我们对 3D 点云进行简单的双线性插值,得到一个初步的渲染结果。

不同于常见 3D 模型材质渲染的方法,我们对于不同的视点选取材质的方法是自适应的(更近的视点采样更多)。受扫描位置稀疏性、设备、重建算法、伪像等因素的限制,植被和小物体等细节大多数时候都无法正确重建。反射表面,例如窗户和台面,将在重建的网格上留下孔。这些都导致了渲染输出的不完整。

为此,我们使用一个卷积神经网络对渲染进行后处理。我们采用两阶段方法,第一阶段是点云的纯几何渲染。我们的 CUDA 点云渲染器可以以 80fps 渲染 10M 个点的 1024x2048 视频流。

我们项目的另一个创新是把像素级域适应 (pixel level domain adaptation) 的机制嵌入到渲染引擎当中。对于渲染图像 I_s 和真实图像 I_t,我们的后处理网络 f 可以让渲染图像看起来像真实世界中的照片,即 f(I_s)≈I_t。与此同时,我们还训练了另外一个网络 u,让真实世界中的照片看上去像我们的渲染图像,即 u(I_t)≈f(I_s)(此处「≈」仅非严谨地代表「相似」)。

在深度估计任务上的 Gibson 到真实环境的迁移实验结果表明,f(I_s) 域和 u(I_t) 域能很好地对齐。

这样做简化了机器人在真实世界的部署:只需要在机器人的传感器上接入我们的网络,就能给机器人戴上了一副虚拟的「眼镜」(goggles),令其在真实环境中感知和 Gibson Environment 一样的环境。

特性

物理具象化

下图展示了火柴人从楼梯跌落时的场景,上行的火柴人动作轨迹看上去很符合物理定律,下行是对应的火柴人视角的观察。

为了使智能体受到物理和空间的约束,我们将 Gibson 环境与物理引擎相结合。这使我们能够将智能体暴露于物理现象,如碰撞、重力、摩擦等。我们的物理模拟器支持刚体和软体仿真,具有离散和连续的碰撞检测。使用 GPU 和 OpenGL 优化,我们的环境支持以 100 倍实时速度学习物理相互作用。由于扫描模型默认情况下不具备材料属性,因此我们的空间不提供真实的物理属性,例如材料摩擦。我们在物理引擎中默认使用库仑摩擦模型来模拟它。为了降低计算复杂度,除非用户激活,否则我们也不会在物理引擎中对气流进行建模。相对地,我们为刚体运动提供线性阻尼函数。

优化速度

渲染帧数对于强化学习很关键,我们希望能实现更快于实时的模拟帧数。为此,我们实现了 CUDA-优化的渲染 pipeline。在最消耗计算资源的后处理网络执行中,我们在 RGBD 数据上取得了几十到上百帧数的渲染性能。

强化学习任务

该视频展示了在 Gibson Environment 中训练的强化学习策略的一些结果。智能体执行的是视觉局部规划和避障的任务。

数据集

近年来随着实景扫描技术的进步,有大量的楼房、住宅、真实场所被扫描并保存成了虚拟档案。最初,这样的档案主要被应用于房地产网络销售。

斯坦福视觉实验室(Stanford Vision Lab)是最早将这样的数据应用于科研的实验室。在 Stanford 2D3DS 项目中,研究院将斯坦福大学 6 栋主要建筑进行了扫描,并取得了一系列突破。在此之后,被应用于科研的实景扫描数据量呈指数式增长。

Stanford 2D3DS:http://buildingparser.stanford.edu/dataset.html

Gibson Environment 可以模拟任何被扫描过的真实环境,这是它的一个巨大优点。你完全可以扫描自己的房子,然后用 Gibson Environment 为之生成一个虚拟的环境,训练你的扫地机器人。

在我们这次的 release 中,我们收集并开源了 572 个建筑物(1440 层)的扫描。作为现有最大的数据集,我们比同类数据集(例如 matterport3D)大一个数量级。

其中每个建筑物的虚拟环境数据包含了完整的 3D 网格,如下图所示:

当智能体在环境中探索时,可以随自身的探索观察到不同类型的动态视图:

从左到右依次是 RGB 视图、深度视图和表面法线视图。

下图是该环境的全景展示:

目前我们已经在 GitHub 项目中发布了一小部分数据集作为环境 Beta 测试的一部分,主要的数据集将会在近期发布。

讨论

在文中,我们对渲染方法做了各种测试,包括速度、和真实图像的差距、以及域适应能否成功实现等,有兴趣的读者可以参考我们的文章。不过由于时间的限制,在 CVPR 的文章里我们并没有在机器人上做实验,近期我们正在进行这些实验,包括语义导航、语义建图、目标驱动的三维重建等任务。

ROS Demo

由于面向的是机器人的应用,我们集成了 Gibson 模拟环境和机器人操作系统,ROS 的用户可以方便地使用 Gibson Env 作为模拟器,来模拟摄像头或者 kinect 输入。下图是用 Gibson 模拟器模拟机器人建图 (mapping) 的一个简单 demo:

理论模拟环境CVPR 2018斯坦福大学计算机视觉
2
相关数据
人工智能技术
Artificial Intelligence

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

自动驾驶汽车技术
Autonomous cars

自动驾驶汽车,又称为无人驾驶汽车、电脑驾驶汽车或轮式移动机器人,是自动化载具的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。

神经网络技术
Neural Network

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

计算机视觉技术
Computer Vision

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

无人机技术
Drones

无人机(Uncrewed vehicle、Unmanned vehicle、Drone)或称无人载具是一种无搭载人员的载具。通常使用遥控、导引或自动驾驶来控制。可在科学研究、军事、休闲娱乐用途上使用。

图网技术
ImageNet

ImageNet 是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库。

深度强化学习技术
Deep reinforcement learning

强化学习(Reinforcement Learning)是主体(agent)通过与周围环境的交互来进行学习。强化学习主体(RL agent)每采取一次动作(action)就会得到一个相应的数值奖励(numerical reward),这个奖励表示此次动作的好坏。通过与环境的交互,综合考虑过去的经验(exploitation)和未知的探索(exploration),强化学习主体通过试错的方式(trial and error)学会如何采取下一步的动作,而无需人类显性地告诉它该采取哪个动作。强化学习主体的目标是学习通过执行一系列的动作来最大化累积的奖励(accumulated reward)。 一般来说,真实世界中的强化学习问题包括巨大的状态空间(state spaces)和动作空间(action spaces),传统的强化学习方法会受限于维数灾难(curse of dimensionality)。借助于深度学习中的神经网络,强化学习主体可以直接从原始输入数据(如游戏图像)中提取和学习特征知识,然后根据提取出的特征信息再利用传统的强化学习算法(如TD Learning,SARSA,Q-Learnin)学习控制策略(如游戏策略),而无需人工提取或启发式学习特征。这种结合了深度学习的强化学习方法称为深度强化学习。

卷积神经网络技术
Convolutional neural network

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

图像处理技术
Image processing

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

规划技术
Planning

人工智能领域的「规划」通常是指智能体执行的任务/动作的自动规划和调度,其目的是进行资源的优化。常见的规划方法包括经典规划(Classical Planning)、分层任务网络(HTN)和 logistics 规划。

自动驾驶技术
self-driving

从 20 世纪 80 年代首次成功演示以来(Dickmanns & Mysliwetz (1992); Dickmanns & Graefe (1988); Thorpe et al. (1988)),自动驾驶汽车领域已经取得了巨大进展。尽管有了这些进展,但在任意复杂环境中实现完全自动驾驶导航仍被认为还需要数十年的发展。原因有两个:首先,在复杂的动态环境中运行的自动驾驶系统需要人工智能归纳不可预测的情境,从而进行实时推论。第二,信息性决策需要准确的感知,目前大部分已有的计算机视觉系统有一定的错误率,这是自动驾驶导航所无法接受的。

感知技术
perception

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

机器人操作系统技术
Robot operating system

ROS,是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统,提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。

强化学习技术
Reinforcement learning

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。