VLN阅读报告3:(R2R)Interpreting visually-grounded navigation instructions in real environments

这是第一篇提出VLN任务的论文,提出了VLN任务虽然简单,但是为后面复杂VLN任务奠定了基础。
具体地,本文提出了matter3d模拟器,提出了房间到房间的视觉语言导航任务,并提出了简单方法衡量该任务的难度。除此之外还分析了VLN面临的泛化性差等问题。
链接: https://bringmeaspoon.org

一. 引言

本文任务:
如下图,本文提出的VLN任务专注于在以前没见过的真实世界建筑中执行自然语言导航指令。agent的相机可以自由旋转,蓝色的圆盘是离散的导航的位置。

在这里插入图片描述

与之前相似任务的区别:

  • 如上图,VLN和VQA的区别是VQA根据一张图片和问题得到相关的答案,VLN是根据更长的指令和更加复杂的视觉场景图片得到一系列的导航动作(action)。
  • 之前的语言导航忽略了视觉内容,而且使用的是渲染的环境而不是真实的。

在这里插入图片描述

本文贡献:

  • Matterport3D: 为了实现VLN方法的可重复评估,我们提出了Matterport3D模拟器。模拟器是由Matterport3D数据集构建的大规模交互式强化学习(RL)环境,该数据集包含90个真实建筑规模室内环境的10800个密集采样的全景RGB-D图像。(VLN任务不能像VQA那样直接使用数据集的特征然后建模视觉与语言的关系得到答案,需要先根据3d数据集的图像构建一个模拟器模拟真实环境(而不是图片))

  • R2R任务: Room to Room(R2R)数据集,其中包含21567个导航指令,平均长度为29个单词。每条指令都描述了一条通常穿过多个房间的轨迹。任务要求代理按照自然语言指令导航到以前未看到的建筑物中的目标位置(图一蓝色圆盘)

  • 方法: 将序列对序列神经网络应用于R2R数据集,建立了几个基线。

二. Matterport3D 模拟器

2.1 Matterport3D数据集

这也是目前最大的RGB-D研究数据集,具体而言,Matterport3D数据集由10800个全景视图组成,这些全景视图由90个建筑规模场景的194400个RGB-D图像构成。平均而言,全景视点分布在每个场景的整个可步行平面图中,平均间距为2.25米。每个全景视图由18个RGB-D图像组成,这些图像是在站立的人的大致高度处从单个3D位置捕获的。每个图像都用精确的6自由度相机姿态进行了注释,这些图像共同捕获了除极点之外的整个球体。该数据集还包括全局对齐的纹理3D网格,该网格用区域(房间)和对象的类和实例分段进行注释。Matterport场景涵盖了一系列建筑,包括不同大小和复杂程度的房屋、公寓、酒店、办公室和教堂.

2.2 模拟器

观察

为了构建模拟器,我们通过采用与全景视点一致的姿势,允许一个具体的代理在整个场景中虚拟地“移动”。根据3D位置v定义代理姿势 v ∈ V v∈ V vV,航向 ψ ∈ [ 0 , 2 π ) ψ∈ [0,2π) ψ[02π和摄像机仰角 θ ∈ [ − π / 2 , π / 2 ] θ∈ [− π/2,π/2] θ[π/2π/2],其中V是与场景中与全景视点相关的3D点集。
在每个步骤t,模拟器输出对应于代理的第一人称摄像机视图的RGB图像观察 o t o_t ot。图像是从每个视点处预计算的立方体映射图像的透视投影生成的。

动作

实现模拟器的主要挑战是确定依赖于状态的动作空间。当然,我们希望防止agent通过墙壁和地板进行远程传送,或穿越其他不可航行的空间区域。
在每个步骤t,模拟器输出一组下一步可到达的viewpoints W ( t + 1 ) W_(t+1) W(t+1) ⊆ \subseteq V V V, agent通过选择新的viewpoint,指定摄像头航向和仰角的调整来与模拟器交互。动作是确定的.

为了确定下一步的位置,模拟器为每个场景包含一个加权无向图 G = ( V , E ) G = (V, E) G=(V,E),使得边缘的存在表示两个视点之间的机器人可导航过渡,边缘的重量反映了它们之间的直线距离, 为了构建graph,我们在Matterport3D场景网格中的视点之间进行光线跟踪,以检测中间的障碍物。为了确保运动保持局部化,我们移除了长度超过5米的边。最后,我们手动验证每个导航图,以纠正网格中未捕捉到的缺失障碍物(例如窗户和镜子)

给定导航图G,下一步可到达视点的集合由下式给出:
在这里插入图片描述
其中,vt是当前视点, P t P_t Pt 是在步骤 t 中由相机视视图的左右两边包围的空间区域。实际上,只要目的地在当前视野内,或通过向上或向下扫视可见,则允许代理跟踪导航图中的任何边,代理始终可以选择保持在同一个视点,只需移动相机。

图3展示了典型导航图的部分示例。平均每个图包含117个视点,平均顶点度数为4.1。这与网格世界导航图相比是有利的,因为墙和障碍物,网格世界导航图形的平均度数必须小于4。因此,尽管代理运动是离散化的,但在大多数高级任务的上下文中,这并不构成明显的限制。即使是一个真正的机器人,在每个新的RGB-D摄像机视图中连续重新规划更高级别的目标可能是不实际或不必要的。事实上,即使在概念上支持连续运动的3D模拟器中运行的代理在实践中也通常使用离散化的动作空间

模拟器不会定义或限制代理的目标、奖励功能或任何其他上下文(如自然语言导航指令)。RL环境的这些方面取决于任务和数据集,如第4节所述

在这里插入图片描述

实现细节
Matterport3D模拟器是使用OpenGL用C++编写的。除了C++API之外,还提供了Python绑定,使模拟器可以轻松地与Caffe[25]和TensorFlow[1]等深度学习框架一起使用,或在ParlAI[39]和OpenAI Gym[9]等RL平台中使用。为图像分辨率和视野等参数提供了多种配置选项。

除了模拟器之外,本文还开发了一个基于WebGL浏览器的可视化库,用于使用Amazon Mechanical Turk收集导航轨迹的文本注释,将提供给其他研究人员。

偏差
我们不愿意引入一个新的数据集(或模拟器,在这种情况下),除非至少尝试解决其局限性和偏差[54]。在Matterport3D数据集中,我们观察到了几种选择偏差:
首先,大部分被占领的生活空间都非常干净整洁,而且往往很豪华。
第二,数据集包含很少的人和动物,这是许多其他视觉和语言数据集的支柱。
最后,我们观察到一些捕捉偏差,因为选定的视点通常提供环境的命令视图(因此不一定处于机器人可能会发现自己的位置)。在一定程度上减轻了这些限制,可以通过收集额外的建筑物扫描来扩展模拟器。参考斯坦福2D-3D-S[5],了解使用Matterport相机收集的学术数据集的最新示例.

三. Room-to-Room (R2R) Navigation 任务

3.1 任务

R2R任务要求具体化的代理遵循自然语言指令,在Matterport3D模拟器中从起始姿势导航到目标位置。
从形式上讲,在每一集开始时,给代理人一个自然语言指令 x ^ = { x 1 , x 2 , , , x L } \hat{x}=\{x_1,x_2,,,x_L \} x^={x1,x2,,,xL} 作为输入.L是指令长度, x i x_i xi是单个单词标记。
代理发现一个初始RGB图像 o 0 o_0 o0,由代理的初始姿势确定,该姿势包括3D位置、航向和仰角的三元组 s 0 = { v 0 , θ , φ } s_0 = \{v_0, \theta , \varphi \} s0={v0,θ,φ}, 代理必须执行一系列操作 { s 0 , a 0 , s 1 , , , , s T , a T } \{s_0, a_0,s_1,,,,s_T,a_T \} {s0,a0,s1,,,,sT,aT},每个action带来一个新的姿势 s t + 1 = { v t + 1 , θ t + 1 , φ t + 1 } s_{t+1}=\{v_{t+1}, \theta_{t+1} , \varphi_{t+1} \} st+1={vt+1,θt+1,φt+1},并产生一个新的图像观察 o t + 1 o_{t+1} ot+1

当agent选择特殊停止动作时,剧集结束,该动作被扩展到第3.2.2节中定义的模拟器动作空间。如果动作序列将agent交付到接近预期目标位置的地方,则任务成功完成∗

3.2 数据收集

为了生成导航数据,我们使用Matterport3D区域注释来采样起始姿势 s 0 s_0 s0 和目标位置 v ∗ v^* v(主要)在不同房间的两对。对于每一对,我们找到最短路径 v 0 : v ∗ v_0:v∗ v0:v . 在相关的加权无向导航图G中,丢弃短于5m的路径以及包含少于四条或多于六条边的路径。我们总共对7189条路径进行了采样,这些路径捕获了数据集中的大部分视觉多样性。平均路径长度为10m。

对于每条路径,我们使用Amazon Mechanical Turk(AMT)收集三条相关的导航指令。我们为工人提供交互式3D WebGL环境,使用彩色标记描绘从开始位置到目标位置的路径。工作人员可以以“飞越”的方式与轨迹交互,或者在路径上的任何视点平移和倾斜相机,以获得更多的背景。
然后,我们要求工人“写下方向,以便智能机器人在从同一个起始位置出发后找到目标位置”。工人们被进一步指示,仅仅为了达到目标,不必严格遵循指示的路径。还提供了视频演示。
完整的收集界面(包括作为补充材料)是几轮实验的结果。我们只使用美国的AMT员工,根据他们在以前任务中的表现进行筛选。
超过400名工人参与了数据收集,贡献了大约1600小时的注释时间

3.3 R2R数据集分析

我们总共收集了21567条导航指令,平均长度为29个单词。这比视觉问答数据集要长得多,其中大多数问题的范围从4到10个单词。然而,考虑到任务的重点性质,教学词汇表相对有限,由大约3100个单词组成(大约1.2k个单词被提及5次或更多)。如图4中的示例所示,指令中的抽象级别差异很大。这可能反映了人们对“智能机器人”工作方式的心理模型的差异,这使得处理这些差异成为任务的一个重要方面。基于第一个单词的导航指令的分布如图6所示。

3.4 评估协议

R2R 任务的优势之一是,与许多其他视觉和语言任务(如图像字幕和视觉对话)相比,成功是可以明显衡量的。我们将导航误差定义为代理的最终位置 v T v_T vT 之间的导航图 G 中的最短路径距离。(即不考虑航向和高度)和目标位置 v ∗ v^∗ v. 如果导航误差小于3米,我们认为这一集是成功的。 该阈值允许大约一个视点的误差裕度,但它是低于5米的最小起始误差。我们不会评估代理的整个轨迹,因为许多指令没有指定应该采取的路径。

我们评估的核心是要求代理人在确定目标位置后选择结束本集。我们认为,停下来是完成任务的一个基本方面,表现出理解力,但也释放了代理人,使其有可能在目标中承担更多任务。然而,我们承认,这一要求与最近仅视觉导航方面的工作形成了对比,这些工作没有训练代理停止。为了解决识别目标位置的问题,如果代理在其轨迹上距离目标最近的点停止,也报告为agent成功。

数据集分割

我们遵循与Matterport3D数据集大致相同的train/val/test分割策略[11]。
测试集由18个场景和4173条指令组成。
我们保留了额外的11个场景和 2349 条指令,用于在看不见的环境中进行验证(val unseen)。
剩下的61个场景汇集在一起,指令拆分为14025train/1020个val seen。
按照最佳实践,将不会发布测试集的目标位置。相反,我们将提供一个评估服务器,在该服务器上可以上传代理轨迹进行评分。

在这里插入图片描述

四. VLN agent

在本节中,我们将描述一个序列到序列的神经网络代理和其他一些基线,我们将这些基线用于探索R2R导航任务的难度。

4.1 Sequence-to-Sequence模型

我们使用基于LSTM的 seqtoseq 结构和注意机制,使用递归神经网络策略对代理进行建模。回想一下,代理以自然语言指令 x ^ = { x 1 , x 2 , … x L } \hat{x}=\{x_1,x_2,…x_L\} x^{x1x2xL} 和初始图像观察 o 0 o_0 o0 开始。编码器计算 x ^ \hat{x} x^ 的表示。在每个步骤t,解码器在 a t − 1 a_{t-1} at1 作为输入,将注意力机制应用于语言编码器的隐藏状态,并预测下一个动作 a t a_t at 的分布。使用这种方法,解码器维护agent的整个先前历史的内部memory,这对于在部分可观察的环境中导航至关重要。

语言指令编码
语言指令中的每个单词xi都作为嵌入向量依次呈现给编码器LSTM。我们将第 i 步编码器的输出表示为 h i h_i hi,这样hi=LSTMenc(xi,hi−1).
我们将 h ^ = { h 1 , h 2 , … , h L } \hat{h}= \{h_1,h_2,…,h_L\} h^={h1h2hL} 表示为encoder context,它将用于注意机制。与Sutskever等人[49]一样,我们发现在输入语言教学中颠倒单词顺序是很有价值的。

模型动作空间
模拟器动作空间与状态相关,允许agent在呈现的不同正向轨迹之间进行细粒度选择。然而,在最初的工作中,我们将模型动作空间简化为6个动作,分别对应于 l e f t , r i g h t , u p , d o w n , f o r w a r d a n d s t o p left, right, up, down, forward and stop left,right,up,down,forwardandstop
forward 动作被定义为总是移动到最接近agent视野中心的可达视点。左、右、上和下动作被定义为将相机移动30度.

图像和动作embeding
对于每个图像观察 o t o_t ot,我们使用在ImageNet上预训练的ResNet-152 CNN 来提取平均池化特征向量。类似于指令字的嵌入,每个动作都要学习嵌入。然后将编码图像和先前的动作特征连接在一起以形成单个向量 q t q_t qt。解码器LSTM操作为 h t ′ = L S T M d e c ( q t , h t − 1 ′ ) h^{'}_t=LSTM_{dec}(q_t, h^{'}_{t-1}) ht=LSTMdec(qt,ht1)

基于注意力的动作预测
为了在步骤 t 预测动作的分布,我们首先使用注意机制来识别导航指令中最相关的部分。这是通过使用全局通用对齐功能实现的来计算instruction context c t = f ( h t ′ , h ^ ) c_t= f(h^{'}_t, \hat{h}) ct=f(ht,h^),

然后计算注意力隐藏状态 h ^ t = t a n h ( W c [ c t ; h t ′ ] ) \hat{h}_t= tanh(W_c[c_t; h^{'}_t]) h^t=tanh(Wc[ct;ht]),并计算下一个动作的预测分布为 a t = s o f t m a x ( h ^ t ) a_t = softmax(\hat{h}_t) at=softmax(h^t)。尽管视觉注意力在视觉和语言问题上也被证明是非常有益的,但我们将视觉和语言导航中的视觉注意力的研究留给未来的工作。

4.2 训练

本节参考论文Professor forcing: A new algorithm for training recurrent network

我们调查了两种训练模式,“teacher-forcing”和“student-forcing”。在这两种情况下,我们在每一步使用交叉熵损失来最大化似然ground-truth target action a t ∗ a^{*}_t at a t ∗ a^{*}_t at给定先前状态动作序列 ( s 0 , a 0 , s 1 , a 1 , … , s t ) (s_0,a_0,s_1,a_1,…,s_t) (s0a0s1a1st)。目标输出动作 a t ∗ a^{*}_t at 始终被定义为从代理当前姿态 s t = ( v t , ψ t , θ t ) st=(v_t,ψ_t,θ_t) st=(vtψtθt)到目标位置v*的地面真相最短路径轨迹中的下一个动作.

在“教师强制”[32]方法下,在训练过程中的每一步,ground-truth target action a t ∗ a^{*}_t at 被选择,以便对以后的输出进行预测
然而,这将探索局限于地面实况最短路径轨迹中的状态,导致训练和测试之间的输入分布发生变化。
为了解决这一局限性,我们还调查了“student-forcing”。在这种方法中,在每个步骤中,从代理的输出概率分布中对下一个动作进行采样。

学生强制相当于在线版的DAGGER,或计划抽样中的“始终抽样”方法。

实现细节我们只执行最小的文本预处理,将所有句子转换为小写,对空白进行标记,并过滤至少出现五次的单词。我们将模拟器图像分辨率设置为640×480,垂直视场为60度。我们将每个LSTM中的隐藏单元数设置为512,输入字嵌入的大小设置为256,输入动作嵌入的大小为32。嵌入是从随机初始化中学习的。我们在嵌入、CNN功能和注意力模型中使用0.5的丢弃率。

当我们以30度的增量离散化代理的航向和高度变化时,为了快速训练,我们提取并预缓存所有CNN特征向量。我们在PyTorch中使用Adam优化器[28]进行训练,权重衰减和批大小为100。在所有情况下,我们都会训练固定次数的迭代。由于评估是单镜头的,在测试时我们使用贪婪解码[44]。我们提交的测试集经过了所有培训和验证数据的培训

4.3 额外的baselines
  • learning free 我们报告了两个无学习基线,我们称之为随机和最短基线。RANDOM代理通过转向随机选择的标题来利用数据集的特征,然后完成总共5个成功的转发动作(当没有转发动作可用时,代理选择正确的)。最短的代理总是沿着最短的路径到达目标。

  • human 我们通过使用AMT收集三分之一测试集(1390条指令)的人类生成轨迹来量化人类表现。收集程序与第4.2节中描述的数据集收集程序相似,但有两个主要区别。首先,向工人提供导航指示。第二,通过单击附近的视点,整个场景环境可以以第一人称自由导航。实际上,模拟机中的代理向工人提供了相同的信息。为了确保高标准,我们向员工发放奖金,奖励他们在距离真实目标位置3米以内停车。

五. 实验结果

如表1所示,我们的开发性RANDOM代理在测试集上的平均成功率为13.2%(这似乎比验证集更具挑战性)。相比之下,AMT工作人员在测试集上取得了86.4%的成功,这说明了数据集指令的高质量。尽管如此,人们在导航方面并非十全十美。例如,在数据集中,我们偶尔会发现左和右之间存在一些混淆。
(尽管如果指令包含足够多的可视参考,则可以恢复)。在实践中,人们还使用两种额外的机制来减少此处不可用的歧义,即手势和对话。

就seq-to-seq模型而言,学生强迫是比教师强迫更有效的训练机制,尽管训练需要更长的时间,因为它探索了更多的环境。如图8所示,这两种方法在随机基线上都有显著改善

结果中最令人惊讶的一点是,在seen和unseen的验证环境中的表现存在显著差异(学生强迫的成功率为38.6%,21.8%)。为了更好地解释这些结果,在图7中,我们绘制了培训期间的验证性能。即使使用强正则化(辍学和权重衰减),在看不见的环境中的表现也会很快稳定下来,但进一步的训练会继续提高训练环境中的性能。这表明,所学的视觉基础知识可能非常特定于训练环境泛化性差

总的来说,这些结果说明了培训代理所面临的重大挑战,这些代理可以概括为在以前看不到的环境中表现出色。用于优化现有视觉和语言数据集性能的技术和实践不太可能满足预期在新环境中运行的模型。

六. 结果与未来工作

视觉和语言导航(VLN)非常重要,因为它代表着向实用机器人关键功能迈出的重要一步。为了进一步研究VLN,本文介绍了Matterport3D模拟器。该模拟器在再现性、交互性和视觉真实性之间实现了独特和理想的折衷。利用这些优势,我们收集了Roomto-Room(R2R)数据集。R2R数据集是第一个评估在建筑尺度上之前未见过的真实图像中遵循自然语言导航指令的能力的数据集。为了探索这项任务,我们研究了几个基线和一个序列对序列神经网络代理。

通过这项工作,我们得出了三个主要结论。
首先,VLN很有趣,因为现有的视觉和语言方法可以成功应用。
第二,推广到以前unseen的环境的挑战是巨大的。
第三,真实地点的众包重建是一种高度可扩展且未充分利用的资源。
用于生成R2R的过程适用于许多相关的视觉和语言问题,尤其是机器人技术。

我们希望这个模拟器能够为社区提供一个视觉逼真的框架,以研究VLN和相关问题,如导航指令生成、虚拟问答、人机对话和域转移到真实环境,从而使社区受益



matter3d模拟器的一些setting

与模拟器的交互是通过’ makeAction ‘函数进行的,该函数将可导航位置索引列表、标题变化列表(以弧度为单位)和海拔变化列表(以弧度为单位)作为参数。可导航位置指标选择代理应该移动到附近的哪个摄像机视点。默认情况下,只有在代理当前视域内的摄像机视点才被认为是可导航的,除非关闭了受限导航*(例如,代理不能向后移动)。对于代理’ n ‘,可导航位置由’ getState()[n]. navigablelocations '给出。索引0总是包含当前的视点(也就是说,代理总是可以选择停留在相同的位置)。由于导航图是不规则的,其余的视点是根据它们到图像中心的角度距离排序的,因此索引1(如果可用)将近似于直接向前移动。例如,不移动(保持相机仰角不变)左转30度:

sim.makeAction([0], [-0.523599], [0])


任何时候都可以通过调用’ getState '返回模拟器状态。返回的状态包含一个对象列表(批处理中的每个代理都有一个对象),其属性如下例所示:

[
  {
    "scanId" : "2t7WUuJeko7"  // Which building the agent is in
    "step" : 5,               // Number of frames since the last newEpisode() call
    "rgb" : <image>,          // 8 bit image (in BGR channel order), access with np.array(rgb, copy=False)
    "depth" : <image>,        // 16 bit single-channel image containing the pixel's distance in the z-direction from the camera center 
                              // (not the euclidean distance from the camera center), 0.25 mm per value (divide by 4000 to get meters). 
                              // A zero value denotes 'no reading'. Access with np.array(depth, copy=False)
    "location" : {            // The agent's current 3D location
        "viewpointId" : "1e6b606b44df4a6086c0f97e826d4d15",  // Viewpoint identifier
        "ix" : 5,                                            // Viewpoint index, used by simulator
        "x" : 3.59775996208,                                 // 3D position in world coordinates
        "y" : -0.837355971336,
        "z" : 1.68884003162,
        "rel_heading" : 0,                                   // Robot relative coords to this location
        "rel_elevation" : 0,
        "rel_distance" : 0
    }
    "heading" : 3.141592,     // 航角 Agent's current camera heading in radians 
    "elevation" : 0,          // 仰角Agent's current camera elevation in radians
    "viewIndex" : 0,          // 小图片(1/36) Index of the agent's current viewing angle [0-35] (only valid with discretized viewing angles)   // [0-11] is looking down, [12-23] is looking at horizon, is [24-35] looking up
    "navigableLocations": [   // 可以导航到的位置点(个数不唯一) List of viewpoints you can move to. Index 0 is always the current viewpoint, i.e. don't move.
        {                     // The remaining valid viewpoints are sorted by their angular distance from the image centre.
            "viewpointId" : "1e6b606b44df4a6086c0f97e826d4d15",  // Viewpoint identifier
            "ix" : 5,                                            // Viewpoint index, used by simulator
            "x" : 3.59775996208,                                 // 3D position in world coordinates
            "y" : -0.837355971336,
            "z" : 1.68884003162,
            "rel_heading" : 0,                                   // Robot relative coords to this location
            "rel_elevation" : 0,
            "rel_distance" : 0
        },
        {
            "viewpointId" : "1e3a672fa1d24d668866455162e5b58a",  // Viewpoint identifier
            "ix" : 14,                                           // Viewpoint index, used by simulator
            "x" : 4.03619003296,                                 // 3D position in world coordinates
            "y" : 1.11550998688,
            "z" : 1.65892004967,
            "rel_heading" : 0.220844170027,                      // Robot relative coords to this location
            "rel_elevation" : -0.0149478448723,
            "rel_distance" : 2.00169944763
        },
        {...}
    ]
  }
]

图像特征放到state里面
getstate(): return: [ ((36, 2048), sim_state) ] * batch_size,
其中,[0-11] looking down, [12-23] looking at horizon, [24-35] looking up

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值