Learning Object Relation Graph and Tentative Policy for Visual Navigation
Abstract
视觉导航中最重要的是学习有用的视觉表示和鲁棒的导航策略。本文提出三个技术改善这两点:object relation graph (ORG)、trial-driven imitation learning (IL)、memory-augmented tentative policy network (TPN)。ORG通过将多个目标之间的关系聚合起来改善视觉表示,IL和TPN用来改善导航策略,让机器人能够从死锁中走出来。IL在策略网络训练时用到的监督方式,TPN在未知环境中模仿IL监督,在测试中使用。
Introduction
目标导航中,当目标物体的较小时,机器人可能无法在一定步骤内找到它,或者,由于环境复杂,机器人无法找到目标。因此需要学习有用的视觉表示以及感知故障的导航策略。
作者发现物体之间经常有非常高的相关性,例如鼠标经常和电脑在一起。这种相关性不仅显示了目标种类的关系,也为机器人提供了一种高效的寻找目标的方法(当目标太小,不可见时,可以先找与其相关的物体)。
手工设计覆盖不同情况的目标关系是很困难的,本文提出ORG来学习不同环境下目标类别的关系。传统的图卷积网络(GCN)中类别邻接矩阵是预先定义的或者从外部知识库中学到的。与他们不同,ORG不需要外部知识,而是从训练数据集的目标检测信息中同时学习类别接近度和空间相关性。目标检测也能够在目标类别和外观之间提供更强的联系,之前的方法只能使用单词嵌入建立这种联系。为了让机器人能够在移向目标时不被干扰,作者提出了一个图注意力层,它加强与目标相关的对象的特征,忽略那些不相关的。
由于环境很复杂,机器人可能陷入死锁(例如重复相同的动作),无法到达目标。强化学习不能解决死锁问题,因为奖励函数不能提供显示的指导让机器人脱离死锁状态。作者提出IL监督来指导有专家经验的机器人避免死锁。
在未见过的测试环境下,机器人无法获得IL监督,可能陷入死锁。作者使用一个TPN网络来避免这一问题。TPN首先使用一个外部记忆来记录视觉表示以检测死锁状态。当视觉表示重复时,机器人可能陷入死锁。此时,TPN网络利用一个内部记忆(存储了过去的状态和行为)来生成显示的指令让机器人脱离死锁。TPN只在只在失败的步骤提供显示指令,因此是一个故障检测的导航策略。
作者使用A3C框架来学习导航策略。
Method
Task Definition
被给一个目标物体的类别(如遥控器),视觉导航的任务是控制机器人走到该类别的一个实例旁边。导航过程中,机器人只能得到第一视角的RGB图像,并且基于现在的视角预测它的动作。另外,环境被分为多个网格节点,每一个网格代表环境中独一无二的状态。在所有环境中,机器人能够在节点(每个节点有6个不同状态:MoveAhead,RotateLeft, RotateRight, LookUp, LookDown, Done
)之间移动
一次成功的导航操作为:当机器人距离目标小于一个阈值(例如1.5m)并且目标在机器人的视野范围内,机器人选择了终止动作。在其他任何情况下,如果机器人选择终止动作,都代表导航失败。
每次导航的开始,机器人被给一个随机的目标类别
T
=
{
S
i
n
k
,
.
.
.
,
M
i
c
r
o
w
a
r
e
}
T=\{Sink,...,Microware\}
T={Sink,...,Microware},在一个随机房间里从一个随机状态
s
=
{
x
,
y
,
θ
r
,
θ
h
}
s=\{x, y, \theta_r, \theta_h \}
s={x,y,θr,θh}开始移动,为了保持每次导航都是独一无二的,这里
x
x
x和
y
y
y代表机器人的位置,
θ
r
\theta_r
θr和
θ
h
\theta_h
θh代表机器人的视角。在每一个时间步
t
t
t,机器人捕捉到以第一视角捕捉到现在观察到的场景
O
t
O_t
Ot。基于从
O
t
O_t
Ot和
t
t
t提取到的视觉表示,机器人产生一个策略
π
(
a
t
∣
O
t
,
T
)
\pi(a_t|O_t,T)
π(at∣Ot,T),这里
a
t
a_t
at表示动作的分布,有最高可能性的动作被选中。机器人继续移动直到动作Done
被执行。
Object Representation Graph
视觉导航中机器人以第一视角寻找目标,因此如何设计一个高效的搜索方法在导航中是十分重要的。本文收到人类搜寻物体的启发,作者充分探索各类物体间的关系以及他们的空间联系,引入一个ORG网络来探索各种物体之间同时出现的信息。
Detection and location-aware feature
-
为了学习类别和空间位置的联系,作者首先在一张图像中找到所有的物体对象。被给一张图片,可以先使用一个目标检测器(如Faster RCNN)来检测出所有感兴趣的目标的位置。
-
如果一个类别的物体有多个,只选择最高置信度的那一个。然后记录下每一个类别的bbox位置以及置信度,将他们拼接起来作为位置特征。
-
如果一些类别物体没有出现在当前视野中,将他们的bbox位置以及置信度都置为0.
-
另外,为了在导航时提供目标信息,作者将一个one-hot向量与位置特征拼接作为location-aware feature (LAF),如下图
-
最后,作者提取物体的外观特征,将bbox映射到检测器网络中的同一层(这里选择第二个ResBlock,可以保护局部区域的空间细节),然后提取出基于位置的外观特征
Learning object representation graph
使用GCN来学习目标表示图(ORG),首先定义一个图G=(N, A)
,N
和A
分别表示节点数和节点之间的边数。具体来说,每一个节点表示bbox,置信度和类标签的拼接向量。边表示不同类之间的关系。
- GCN网络把所有节点作为输入
X
∈
R
∣
N
∣
×
D
X \in \mathbb{R}^{|N| \times D}
X∈R∣N∣×D,然后使用矩阵
W
∈
R
D
×
N
W \in \mathbb{R}^{D \times N}
W∈RD×N映射输入,这里
D
是LAF中的维度。 - 编码每个节点后,GCN根据邻接关系$A \in \mathbb{R}^{|N| \in N} 映射所有的节点,得到输出 映射所有的节点,得到输出 映射所有的节点,得到输出Z \in \mathbb{R}^{|N| \in N}$。GCN层可以表示为:
Z
=
f
(
A
⋅
X
⋅
W
)
Z = f(A \cdot X \cdot W)
Z=f(A⋅X⋅W)
这里f
表示ReLU激活函数。和传统GCN预先定义A
不同,ORG中同时学习临界矩阵A
和节点映射W
。学习A的过程实际上可以被视为编码类别之间的空间相关性以及它们之间的关系,因为A编码不同类别之间的LAF。
- 输出
Z
(即ORG)编码对象之间的位置信息及其接近度。此外,由于ORG是根据环境学习的,不依靠外部数据库,因此能够适应不同的环境。
Graph attention layer
这里使用一个注意力机制来让机器人移向目标或者目标所在区域。具体来说,使用Z
作为注意力映射,
F
∈
R
∣
N
∣
∈
d
F \in \mathbb{R}^{|N| \in d}
F∈R∣N∣∈d为基于位置的外观特征,图注意力层表示为:
F
^
=
f
(
Z
⋅
F
)
\hat{F} = f(Z \cdot F)
F^=f(Z⋅F)
这里
F
^
∈
R
∣
N
∣
∈
d
\hat{F} \in \mathbb{R}^{|N| \in d}
F^∈R∣N∣∈d表示基于位置的外观特征,该层没有可学习参数,之后将
F
^
\hat{F}
F^与LAF拼接起来作为显示的目标位置信息。
Navigation Driven by Visual Features
除了 F ^ \hat{F} F^与LAF的拼接特征外,机器人还需要一个包含环境信息的全局特征,这里作者使用ResNet18提取当前视角的全局特征,并将该特征与拼接特征融合作为最终的视觉表示。
作者使用A3C框架预测每一步的动作,A3C模型的输入为视觉表示、之前的动作与状态编码的拼接。
Trial-driven Imitation Learning
由于虚拟环境很复杂,机器人可能陷入死锁状态。强化学习中的奖励并不能提供详细的行动指令打破死锁,这里提出了实验驱动的模仿学习(IL)通过显示的动作指令给机器人建议。
为了学到最优的动作指令,本文将专家经验看作机器人的策略指导,使用Dijksta的最短路径算法生成专家经验。在策略指导的监督下,机器人能够模仿最优的死锁打破方法。IL损失使用交叉熵得到
L
i
l
=
C
E
(
a
t
,
a
^
)
L_{il} = CE(a_t, \hat{a})
Lil=CE(at,a^),其中
a
t
a_t
at是导航策略预测得到的动作,
a
^
\hat{a}
a^是动作指令。导航中整体损失为:
L
=
L
n
a
v
+
L
i
l
L = L_{nav}+L_{il}
L=Lnav+Lil
这里
L
n
a
v
L_{nav}
Lnav表示强化学习中的导航损失。
另外为了避免过拟合,保持机器人的泛化能力,需要平衡模仿学习和强化学习。受到人类实验和实践行为的启发,作者仅仅在死锁时才使用指导策略,而不是每一步都用。
Memory-Augmented Tentative Policy Network
External Memory. 与训练时不同,在测试时无法获得来自环境的指令。作者提出了TPN网络来帮助机器人在测试时打破死锁。为了打破死锁状态,这里使用了一个外部记忆,它被设计为记录现成特征提取器的视觉特征。一旦发现至少一个视觉特征与之前记录的特征相同,就认为机器人陷入了死锁。
Internal Memory. 为了捕捉长期依赖,基于过去的状态生成指令,作者提出了内部状态记忆。它被设计用于存储状态和动作,每一个在时间t
存储的
m
t
m_t
mt包含两个部分:时间t
的状态表示
f
t
f_t
ft作为key,在时间t
的动作分布
a
t
a_t
at和t+1时的状态表示
f
t
+
1
f_{t+1}
ft+1作为value。在每一步后,新生成的存储会被插入Internal Memory中。
Tentative Policy Network(TPN)
被给过去的动作以及状态,TPN计算k和现在状态 f t f_t ft之间的概率分数p:
p
=
σ
(
f
t
T
⋅
k
)
,
σ
=
e
x
i
∑
j
e
x
j
p = \sigma (f_t^T \cdot k), \sigma = \frac {e^{x_i}}{\sum_{j}e^{x_j}}
p=σ(ftT⋅k),σ=∑jexjexi
为了得到有用的信息表示,作者将现在的状态和内存特征拼接起来,TPN使用拼接的特征生成动作指令用于导航策略网络(A3C)。这种方式里,TPN能够基于之前的动作与状态提出解决死锁的策略。
为了训练TPN,作者使用训练好的基础导航网络在环境中导航。当机器人死锁时,使用模仿学习来监督训练TPN网络。测试时,TPN被固定,机器人使用
L
t
p
n
=
C
E
(
a
t
,
a
^
)
L_{tpn} = CE(a_t, \hat{a})
Ltpn=CE(at,a^)更新基础导航策略。
Training Details
作者分两个阶段训练我们的模型:(1)用12个异步机器人训练总共600万次的导航策略;(2)使用12个异步机器人训练200万次TPN网络,选择成功率在验证集上表现最好的导航模型作为主干网络来训练TPN。
在学习导航策略时,使用0.001惩罚每一个动作步。当机器人到达目标并且进入终止状态时,使用5奖励机器人。使用Adem优化器来更新网络参数,学习率设为0.0001。
使用Faster RCNN作为目标检测器,并在训练集上重新训练它,使用训练集的一半数据并用数据增强来训练检测器。
Experiments
数据集和评估指标
Dataset. 作者选择AI2-Thor环境评估模型。AI2thor数据集包含四种场景类型:厨房、卧室、客厅以及浴室。每个场景有30个房间,每个房间在家具摆放和物品类型方面都是独一无二的。在每个场景中,有超过4个目标类别,机器人会在超过2000个状态中随机开始导航。
Evaluation. 作者使用success rate(SR)
和Success Weighted by Path Length(SPL)
评估模型。SR衡量轨迹的有效性
S
L
=
1
N
∑
n
=
0
N
S
n
SL = \frac{1}{N} \sum_{n=0}^{N}S_n
SL=N1∑n=0NSn,这里N代表总的导航次数,
S
n
S_n
Sn表示第i次导航是否成功。
S
P
L
=
1
N
∑
n
=
0
N
L
e
n
n
m
a
x
(
L
e
n
n
,
L
e
n
o
p
t
)
SPL = \frac{1}{N} \sum_{n=0}^{N} \frac{Len_n}{max(Len_n, Len_{opt})}
SPL=N1∑n=0Nmax(Lenn,Lenopt)Lenn,这里
L
e
n
n
Len_n
Lenn代表第n次导航的路径长度,
L
e
n
o
p
t
Len_{opt}
Lenopt代表第n次导航的最优路径长度。
Task Setup and Comparison Methods
为了确保训练的房间和测试的房间没有重叠,本文仅使用每个场景的25个房间用于训练,其余用于验证。测试期间,每个模型在验证集上进行250次不同场景的导航。有最高准确率的模型被用于测试。
Baseline. 将检测结果放入A3C中进行导航,在头部建立模型。
Random policy 机器人基于一样的动作概率导航,因此机器人会随机走动或者停止。
Scene Priors(SP). 前面的工作利用来自外部数据集FastText的的类别关系图,本文使用检测结果代替WE。
Word Embedding (WE). 机器人使用Glove embedding来关联目标概念和外表。
Result
表1展示了和baseline的比较结果,可以看出,作者提出的模型明显优于baseline,并且每一个模块都有改善效果。