
自动驾驶“环境和数据集” (上)
导航是一个内容丰富、基础扎实的问题领域,它推动了许多不同领域的研究进展:尤其是感知、计划、记忆、探索和优化。从历史上看,这些挑战都是单独考虑的,并且建立的解决方案依赖于固定的数据集——例如,通过环境的记录轨迹。然而,这些数据集不能用于决策和强化学习,总的来说,导航作为一项交互式的学习任务,其中学习agent的行动和行为是与感知和规划同时学习的,这一观点相对来说没有得到支持。因此,现有的导航基准测试通常依赖于静态数据集(Geiger等人,2013;Kendall等人,2015)或模拟器(Beattie等人,2016;Shah等人,2018年)。为了支持和验证端到端导航的研究,我们提出了StreetLearn:一个交互式的、第一人称的、部分观察的视觉环境,使用谷歌街景的照片内容和广泛的覆盖范围,并给出了一个具有挑战性的目标驱动的导航任务的性能基线。环境代码、基线agent代码和数据集可从http://streetlearn.cc获得。
I.简介
图1 l 我们的环境是由来自StreetView的真实世界的地方建立的。图中显示了纽约市(时代广场、中央公园)和伦敦(圣保罗大教堂)的不同景观和相应的本地地图。绿色的圆锥体代表agent的位置和方向。
导航这一课题对各种研究学科和技术领域都具有吸引力,是希望破解网格和位置细胞密码的神经科学家的研究课题(Banino等人,2018;Cueva和Wei, 2018),
同时也是机器人研究的一个基本方面,希望建造可以到达给定目的地的移动机器人。大多数导航算法涉及在探索阶段建立一个明确的地图,然后通过该表征进行规划和行动。
最近,研究人员试图通过探索和与环境的互动来直接学习导航策略,例如使用端到端的深度强化学习(Lample和Chaplot,2017;Mirowski等人,2017;Wu等人,2018;Zhu等人,2017)。
为了支持这项研究,我们设计了一个名为StreetLearn的互动环境,使用谷歌街景的图像和基础连接信息(见图1),包括匹兹堡和纽约市的两个大区域。该环境以高分辨率的摄影图片为特色,展示了多样化的城市环境,并以真实的街道连接图跨越了城市规模的区域。
在这个环境中,我们开发了几个穿越任务,要求agent从一个目标到另一个目标进行长距离的导航。
图2 l 带边框的地图,显示了数据集在纽约市(顶部)和匹兹堡(底部)的覆盖情况。
其中一项任务在现实世界中类似于一个在特定城市工作的速递员,他从一个被称为 "A "的任意地点开始,然后被指示去一个用绝对坐标定义的特定地点"B",但他从来没有被告知这些地点的地图或从A到B的路径,或被告知自己的位置。
另一项任务是模仿谷歌地图,遵循由自然语言导航指示和图像缩略图组成的一步一步的指示。额外的导航任务可以在StreetLearn环境中开发。
我们在第2节中描述了数据集、环境和任务,在第3节中解释了环境代码,在第4节中描述了已实施的方法和基线方法,在第5节中描述了结果,在第6节中详细介绍了相关工作。
II.环境
本节介绍了StreetLearn,一个利用谷歌街景构建的互动环境。由于街景数据是在全球范围内收集的,并且包括高分辨率图像和图表连接,因此它是研究导航的宝贵资源(图1)。
街景提供了一组地理定位的360°全景图像,这些图像构成了一个无向图的节点(我们交替使用节点和全景这一术语)。我们选择了纽约市和匹兹堡的一些地区(见图2)。纽约市可供下载的地区是曼哈顿第81街以南的地区。
这包括在一个由(40.695,-74.028)和(40.788,-73.940)定义的长/宽边界框内的近似56K全景图像。请注意,布鲁克林、皇后区、罗斯福岛以及曼哈顿的桥梁和隧道都不包括在内,我们只包括曼哈顿海滨和第79/81街的多边形内的全景图,覆盖面积为31.6平方公里。匹兹堡数据集包括58K张图像,由(40.425, -80.035)和(40.460, -79.930)之间的经度/纬度边界框来定义,覆盖8.9公里乘3.9公里的区域。
此外,我们在每个城市确定了三个区域,可以单独用于训练或转移学习实验。表1给出了每个地区的统计数据。
无向图的边描述了节点与其他节点的接近性和可及性。我们不减少或简化基础的连接性,而是使用完整的图;因此,有许多节点的拥挤地区,复杂的闭塞交叉口,隧道和人行道,以及其他偶发事件。
平均节点间距为10米,在交叉口的密度更高。虽然图形被用来构建环境,但agent从未观察到底层图形--只观察到RGB图像(公共街景产品中可见的叠加信息,如箭头,也不被agent看到)。
图3 l 纽约市的华尔街(1)、联合广场(2)和哈德逊(3)地区(顶部)和匹兹堡的CMU(4)、阿勒格尼(5)和南岸(6)地区(底部)的多边形划界图。
图1中显示了RGB图像和图表的例子。
在我们的数据集中,每个全景图都被存储为一个协议缓冲区(Google,2008)对象,包含一个高质量的压缩JPEG格式的字符串,对等角图像进行编码,并以下列属性加以装饰:一个独特的字符串标识符,全景相机的位置(经度/纬度坐标和高度,以米为单位)和方向(俯仰、滚动和偏航角度),图像的采集日期,以及直接连接的相邻对象列表。
2.1.界定数据集内的区域
在StreetLearn数据集中,整个曼哈顿和匹兹堡的环境包含了大的城市区域,每个区域代表了超过56000张街景全景图,从一个极端到另一个极端,穿越这些区域可能需要经过街景图中接近1千的节点。
为了使学习具有可操作性,也为了确定训练和转移的不同区域,我们可以将环境切割成更小的区域。例如,图3显示了将曼哈顿和匹兹堡切割成6个区域("华尔街"、"联合广场"、"哈德逊"、"CMU"、"阿勒格尼 "和"南岸")的情况,这在我们第5节的实验中使用。
在街道图上划分区域有许多可能性:最明显的是用经纬度边界框来切割图形,其缺点是会产生不相连的部分。第二种是用多边形来切割图形,但必须指定该多边形的所有顶点,依靠凸面体来选择包含在多边形内的节点,这很不方便。
我们选择了第三种方法来确定我们的区域,通过广度优先搜索(BFS)(Moore, 1959; Zuse, 1972)从一个给定的节点开始增长图形区域,这只需要选择一个中心全景图和一个图形深度,并确保产生的图形是连接的。我们在表1中列出了这些区域的大小(以节点、边和区域覆盖率计)、高度变化和描述,包括中央全景图的ID和BFS图的深度。
2.2.agent界面和速递任务
RL环境需要指定agent的观察和行动空间,并定义任务。StreetLearn环境在每个时间点提供可视化观察xt。视觉输入是为了模拟第一人称,部分观察到的环境,因此xt是一个裁剪过的、60°正方形的RGB图像,被缩放为84×84像素(即不是整个全景图)。
动作空间由五种离散的动作组成。"缓慢 "向左或向右旋转(±22.5°),"快速"向左或向右旋转(±67.5°),或向前移动(如果从当前agent的姿势来看,没有一个边缘,这个动作就会成为一个noop)。
如果在agent的视锥中有多个边,那么就选择最中心的一个。
StreetLearn提供了一个额外的观察,即目标描述符gt,它向agent传达了任务目标--去哪里领取下一个收获。
如何指定目标有很多选择:例如,图像是一个自然的选择(如(Zhu等人,2017)),但在城市范围内很快就变得模糊不清;可以使用基于语言的指示或街道地址(如(Chen等人,2018)),尽管这将把重点放在语言基础而不是导航上;和地标可用于以可扩展的、无坐标的方式对目标位置进行编码(Mirowski等人,2018)。
对于这项快递任务,我们采取最简单的路线,并将目标地点直接定为连续值坐标 (Lattg, Longtg)。注意目标描述是绝对的;它与agent的位置无关,只在绘制新目标时发生变化(无论是在成功获得目标时还是在任务事件开始时)。
在快递任务中,可以概括为导航到城市中一系列随机地点的问题,agent从StreetLearn图中随机抽样的位置和方向开始每一个任务。从图中随机抽出一个目标位置,计算出目标描述符g0并输入给agent。如果agent到达一个接近目标的节点(100米,或大约一个城市街区),agent就会得到奖励,并随机选择下一个目标并输入给agent。
每一个任务在1000个agent步骤后结束。agent在到达目标时获得的奖励与目标和agent首次分配目标时的位置之间的最短路径成正比;很像速递服务,agent在较长的旅程中获得较高的奖励。
直观地说,为了解决速递任务,agent需要学会将目标编码与在目标位置观察到的图像相关联,以及将在当前位置观察到的图像与到达不同目标位置的策略相关联。
2.3.课程
课程学习通过选择更多更难的例子来呈现给学习算法,逐渐增加学习任务的复杂性(Bengio等人,2009;Graves等人,2017;Zaremba和Sutskever,2014)。我们发现,对于目的地较远的速递任务,课程可能很重要。与其他RL问题(如Montezuma’s Revenge)类似,速递员任务的奖励非常稀少;与该游戏不同,我们能够制定一个自然的课程计划。我们首先对agent位置500米范围内的新目标进行采样(第1阶段)。在第二阶段,我们逐步扩大允许目标的最大范围,以覆盖整个图形。
注意,虽然本文主要关注速递任务,但正如下面第3节所述,该环境已经丰富了,通过一步步的(图像、自然语言指令)和目标图像指定方向的可能性。
III.编码
3.1.编码结构
我们在https://github.com/deepmind/streetlearn提供了环境和agent的编码。该编码库包含以下组件:
• 我们的C++ StreetLearn引擎用于加载、缓存和提供谷歌街景全景图,并根据城市街道图和agent的当前位置和方向处理导航(从一个全景图移动到另一个)。每个全景图都从其等矩形(Wikipedia, 2005)表示投影到第一人称视图,可以指定偏航、俯仰和视场角度。
• 用于存储全景图和街道图的消息协议缓冲区(Google, 2008)。
表1 l 纽约的三个地区(华尔街、联合广场和哈德逊河)和匹兹堡的三个地区(CMU、阿勒格尼和南岸)的相关信息。
• 一个基于Python的接口,用于调用具有自定义动作空间的StreetLearn环境。
• 在Python StreetLearn界面中,几个游戏被定义在单独的文件中,文件名以game.py结尾。
• 一个简单的人类agent,使用Pygame在Python中实现,在所要求的地图上实例化StreetLearn环境,并使用户能够玩速递或跟随指令的游戏
• Oracleagent,类似于人类agent,自动导航到指定的目标,并报告Oracle在速递或指令遵循游戏中的表现。
•agent的TensorFlow实施。
3.2.编码界面
我们的Python StreetLearn环境遵循OpenAI Gym2(Brockman等人,2016)的规范。
在实例化了一个特定的游戏和环境后,可以通过调用函数reset()来初始化环境。注意,如果在构建时将auto_reset的flag设置为True,那么每当一个情节结束时,reset()将被自动调用。
如清单4所示,agent在环境中通过迭代生成一个动作,将其发送到(逐步通过)环境,并处理环境返回的观察结果和奖励。对函数step(动作)的调用返回:
• 观察(构造时要求的观察数组和标量的元组),
• 奖励(一个带有agent当前奖励的浮动标度数),
• done(布尔值,表示一个游戏情节是否已经结束并被重置),
• 以及info(环境状态变量字典,用于调试agent行为或访问特权环境信息以进行可视化和分析)。
3.3.行动和观察
我们向agent提供了四个行动:
• 在全景图中向左或向右旋转一个指定的角度(改变agent的偏航)。
• 在全景图中按指定的角度向上或向下旋转(改变agent的间距)。
• 如果agent从A到B的当前方位在30度的公差角度内,则从当前全景图A向前移动到另一个全景图B。
• 在全景图中放大和缩小。
因此,agent行动通过step(action)作为4个标量数字的图组被发送到环境中。
然而,对于通过强化学习训练离散策略agent,行动空间被离散为整数。例如,我们在(Mirowski等人,2018)中使用了5个动作:(向前移动,左转22.5度,左转67.5度,右转22.5度,右转67.5度)。
目前可以要求从环境中获得以下观察结果:
• view_image:从环境中返回并由agent看到的第一人称视角图像的RGB图像;
• graph_image: 自上而下的街道图图像的RGB图像,通常不被agent看到;
• pitch: agent的俯仰角的标量值,单位是度(零对应于水平);
• yaw: agent的偏航角度的标量值,单位是度(零对应于北);
• yaw_label: agent偏航的整数离散值,使用16个bin;
• metadata: 具有当前全景图元数据的Pano类型的消息协议缓冲区;
• target_metadata: 具有目的/目标全景图元数据的Pano类型的消息协议缓冲区;
• latlng: agent当前位置的纬度/经度标量值的元组;
• latlng: 当前agent位置的整数离散值,使用1024个bins(32个bins为纬度,32个bins为经度);
• target_latlng: 目的/目标位置的纬度/经度度标量值的元组;
• target_latlng: 目标位置的整数离散值,使用1024个bins (32个bins 为纬度,32个bins 为经度);
• thumbnails: 从环境中返回的第一人称视角图像的n+1个RGB图像集,当用n个指令进行指令追踪游戏时,agent应该在特定的航点和目标位置看到这些图像;
• instructions: 当用n个指令进行指令追踪游戏时,在特定的航点和目标地点为agent提供n个指令集;
• neighbors: agent周围的近邻以自我为中心的可穿越性网格的矢量,agent周围的方向有16个bin,bin 0对应于agent正前方的可穿越性;
• ground_truth_direction: 为了遵循最短路径到达下一个目标或航点,agent要采取的相对地面真实方向的标量值。这种观察应该只对使用模仿学习训练的agent提出要求。
3.4.游戏
以下游戏可在StreetLearn环境中使用:
3.4.1. 硬币_游戏
在硬币游戏中,奖励包括散落在地图上的无形硬币,每个硬币的奖励为1。一旦被捡到,这些奖励在剧情结束前不会再出现。
3.4.2. 速递_游戏
在速递游戏中,agent被赋予了一个目标目的地,以经/纬度对的形式加以说明。一旦达到目标(有100米的容许偏差),就会对新的目标进行采样,直到情节结束。
在一个目标上的奖励与agent得到新的目标分配时从其位置到该目标位置的最短路径上的全景图数量成正比。额外的奖励形成包括当agent到达距离目标200米范围内时的早期奖励。
额外的硬币也可以分散在整个环境中。硬币的比例、目标半径和早期奖励半径是可参数化的。课程_速递游戏与速递游戏类似,但在任务的难度上有一个课程(分配任务时,从agent的位置到目标的最大直线距离)。
3.4.3. 指令游戏
目标指令游戏及其变体--递增指令游戏和逐步指令游戏使用导航指令来引导agent到达目标。agent被提供了一个指令清单以及缩略图,引导agent从其起始位置到目标位置。
在逐步游戏中,agent每次提供一个指令和两个缩略图,在其他游戏变体中,整个列表在整个游戏中都可以使用。到达目标地点(所有变体),以及击中单个航点(仅增量和逐步)时,均可获得奖励。
在训练过程中,有各种课程策略可供agent使用,并且可以采用奖励塑造法,当agent进入到距离一个航点或目标50米的范围内时,提供零星的奖励。
文章转载自公众号:智能汽车开发者平台
