- 论文链接:https://arxiv.org/pdf/1811.06964.pdf
- 论文题目:Grasp2Vec: Learning Object Representations from Self-Supervised Grasping
Grasp2Vec
Abstract
好的结构化的视觉表示能够帮助机器人快速的学习并且同时提高泛化能力。本文,我们研究对于机器人操作任务,如何在没有人工标注的情况下通过使用机器人自动与环境进行交互来有效地获取以物体为中心的表示。这样的表示学习的方法能够受益于表示的不断优化(随着机器人不断的与环境交互,收集经验)。我们的表示学习的方法是基于对象的持续存在性:当机器人从场景中移除了一个物体,那么场景的表示也应该改变来对应物体被移除的特征。我们在观测中得到的特征向量之间建立了一种算术关系,然后使用它来学习一个场景和物体的表示,随后可以通过它来识别物体实例,定位场景中的实例,以及施行带有目的的抓取任务(机器人必须从箱子中取回命令的物体)。同样的抓取步骤可以用来自动的收集训练数据,通过记录场景的图像,抓取和移除的物体,以及输出。
1. Introduction
如果我们的目标是学习具有泛化性的机器人技能,并且赋予机器人比较广泛的行为库的话,我们可能更喜欢更加结构化的感知表示,能够有效的对构成现实世界场景的因素(比如物体的持续存在性和它们的特性)进行解耦。这种表示学习方法的一个主要挑战是保持自我监督的好处,它允许利用自主收集的大量经验,同时仍然获得能够为下游任务提供卓越泛化和可解释性的结构。
本文我们学习这个问题的一个具体实例:通过自动的机器人与环境的交互来获得以物体为中心的表示。通过与现实世界的交互,agent可以学习到关于感知和动作的相互作用。例如,看到并且拿起一个物体会使机器人了解到实体与周围环境的关系。如果机器人在环境中抓起了某个东西,并把它提到一边,那么可以得出任意可见的部分不是它抓取的部分。它也可以观察夹子,从一个新的角度来观察物体。通过频繁的交互,机器人会学习到图像中哪些像素是可抓取的物体,以及通过不同的姿态来识别特殊的物体,不需要人工监督。
虽然以物体为中心的表示可以通过语义注释数据来学习,但是这将导致无法进行连续的自我提升:机器人收集的额外的经验数据,缺乏人工标注,不能直接用来提高表示的质量和鲁棒性。在这种情况下,机器人与世界进行的每一次交互都会提高其表示能力。
我们的表示学习方式是基于物体持续存在性的。我们可以使用这个观察来构建一个以物体为中心的表示的一个简单需要满足的条件:场景对应的特征减去一个物体的特征应该要大约等于在该场景下移除该物体后的特征(如图1)。我们基于这个条件来训练一个卷积神经网络提取器,并且展示它可以有效的识别单独物体,以及在没有人工监督的情况下对场景中的物体进行编码。
利用这个表示,我们提出一种基于物体特征向量或图片的自监督抓取策略。抓取物体的成功与否需要人工监督,但是我们通过物体嵌入的相似性来提供一个等价的回报信号。
我们的主要贡献是grasp2vec,一个通过自监督学习的以物体为中心的视觉嵌入。
图1:实例抓取和表示学习过程以完全自监督的方式生成互相的label。来自抓取的表示学习:机械臂从场景中移除一个物体,然后观察结果场景和夹子上的物体。我们强制场景嵌入的差异要匹配物体嵌入。通过学习到的表示进行监督抓取:我们使用物体嵌入间的相似度量作为实例抓取的reward,不再需要手动地对抓取结果进行标注。
3. Grasp2Vec: Representation Learning from Grasping
我们的目标是学习一个以物体为中心的图像嵌入。嵌入应该通过特征向量来表示物体,这样同样物体的图像就靠的近,反之就离的远。由于标签不存在,所以我们依靠自监督目标。具体来说,我们充分利用机器人与场景的交互(抓取物体),这个交互被量化:抓一个,抓多个或者什么都没抓到。当一个物体被抓起,我们学习到初始场景一定包含该物体,抓取之后的场景一定少了一个物体。我们就使用这个概念来构建图嵌入。
我们记录抓取的情景为一个图像triple ( s pre , s post , o ) (s_{\text{pre}},s_{\text{post}},\mathbf o) (spre,spost,o),pre表示抓之前的场景图像,post表示之后的图像, o \mathbf o o表示被抓取的物体的图像。我们定义 ϕ s ( s pre ) \phi_s(s_{\text{pre}}) ϕs(spre), ϕ s ( s post ) \phi_s(s_{\text{post}}) ϕs(spost), ϕ o ( o ) \phi_o(\mathbf o) ϕo(o)分别为对应图像的嵌入。那么根据我们之前的算术关系:我们就有 ( ϕ s ( s pre ) − ϕ s ( s post ) ) = ϕ o ( o ) (\phi_s(s_{\text{pre}})-\phi_s(s_{\text{post}}))=\phi_o(\mathbf o) (ϕs(spre)−ϕs(spost))=ϕo(o) ,同时跟别的没有抓取的物体的嵌入的距离要大。
Architecture. 为了嵌入场景和输出的图像,我们构建了一个CNN来表示 ϕ s \phi_s ϕs和 ϕ o \phi_o ϕo。这两个网络都是基于ResNet-50然后跟一个ReLU(如图3),生成三维的卷积特征图( H × W × 1024 H\times W\times 1024 H×W×1024), ϕ s , s p a t i a l \phi_{s,spatial} ϕs,spatial和 ϕ g , s p a t i a l \phi_{g,spatial} ϕg,spatial。因为我们的目标是获取物体的向量表示,所以我们使用全局平均池化将特征图转换成为特征向量: ϕ s = Σ i < H Σ j < W ϕ s , s p a t i a l ( X ) [ i ] [ j ] / ( H ∗ W ) \phi_s=\Sigma_{i<H}\Sigma_{j<W}\phi_{s,spatial}(X)[i][j]/(H*W) ϕs=Σi<HΣj<Wϕs,spatial(X)[i][j]/(H∗W), ϕ o \phi_o ϕo同理。这个结构的动机是允许 ϕ s , s p a t i a l \phi_{s,spatial} ϕs,spatial编码物体位置。然后经过ReLU非线性,来限制物体表示为非负。这就确保了只有当添加对象的时候,对象数量才会增长;一个对象不能和另一个对象抵消。
图3:(a)Grasp2Vec结构。我们先使用3个随机初始化的ResNet-50 V2的模块来得到
ϕ
s
\phi_s
ϕs和
ϕ
o
\phi_o
ϕo。
ϕ
s
(
s
p
r
e
)
\phi_s(s_{pre})
ϕs(spre)和
ϕ
s
(
s
p
o
s
t
)
\phi_s(s_{post})
ϕs(spost)共享权重。第三个resnet模块的输出经过一个ReLU生成一个空间特征图,
ϕ
s
p
a
t
i
a
l
\phi_{spatial}
ϕspatial。然后经过全局平均池化输出向量嵌入
ϕ
s
\phi_s
ϕs和
ϕ
o
\phi_o
ϕo,然后经过n-pairs loss。(b)实例抓取结构,使用Q-learning训练。
Objective. 这个问题被定性为度量学习,理想的度量指标会让
(
ϕ
s
(
s
pre
)
−
ϕ
s
(
s
post
)
)
(\phi_s(s_{\text{pre}})-\phi_s(s_{\text{post}}))
(ϕs(spre)−ϕs(spost))和
ϕ
o
(
o
)
\phi_o(\mathbf o)
ϕo(o)靠近,同时远离别的嵌入。许多度量学习losses使用一个“anchor”嵌入和一个“positive”嵌入的概念,这里positive会被拉近与anchor的距离,同时远离“negative”嵌入。一种优化的目标函数是使用n-pairs loss来训练编码器。并不处理出显式的(anchor,positive,negative)triplets,对于一组(anchor,positive)对来说,n-pairs loss将minibatch里面所有的其他positives全部视作negatives。使用下标
i
i
i来索引minibatch的anchor
a
a
a,使用
j
j
j来索引positives
p
p
p。目标函数是最大化
a
i
⊤
p
i
a_i\top p_i
ai⊤pi,最小化
a
i
⊤
p
j
≠
i
a_i\top p_{j \neq i}
ai⊤pj̸=i。loss就是对于每个anchor
i
i
i 对于所有positives
p
p
p 的softmax交叉熵的和。
NPairs
(
a
,
p
)
=
∑
i
<
B
−
log
(
e
a
i
⊤
p
i
∑
i
<
B
e
a
i
,
p
j
)
+
λ
(
∣
∣
a
i
∣
∣
2
2
+
∣
∣
p
i
∣
∣
2
2
)
\text{NPairs}(a,p)=\sum_{i<B}-\log \bigg( \frac{e^{a_i\top p_i}}{\sum_{i<B} e^{a_i, p_j}} \bigg)+ \lambda(||a_i||^2_2+||p_i||^2_2)
NPairs(a,p)=i<B∑−log(∑i<Beai,pjeai⊤pi)+λ(∣∣ai∣∣22+∣∣pi∣∣22)
超参数
λ
\lambda
λ对嵌入的量级进行正则化,
B
B
B是batch大小。在我们的实验里。
λ
=
0.0005
,
B
=
16
\lambda=0.0005,B=16
λ=0.0005,B=16。loss对于anchors和positives对非对称的,所以需要都进行评估,所以最终的训练目标函数是:
L
Grasp2Vec
=
NPairs
(
(
ϕ
s
(
s
p
r
e
)
−
ϕ
s
(
s
p
o
s
t
)
)
,
ϕ
o
(
o
)
)
+
NPairs
(
ϕ
o
(
o
)
,
(
ϕ
s
(
s
p
r
e
)
−
ϕ
s
(
s
p
o
s
t
)
)
)
\mathscr L_{\text{Grasp2Vec}}=\text{NPairs}((\phi_s(s_{pre})-\phi_s(s_{post})),\phi_o(\mathbf o))+\text{NPairs}(\phi_o(\mathbf o), (\phi_s(s_{pre})-\phi_s(s_{post})))
LGrasp2Vec=NPairs((ϕs(spre)−ϕs(spost)),ϕo(o))+NPairs(ϕo(o),(ϕs(spre)−ϕs(spost)))
4. Self-Supervised Goal-Conditioned Grasping
Grasp2Vec表示能够保证有效目标条件抓取(机器人必须抓取一个与用户需求匹配的对象)。在这一步,同一个抓取系统可以同时收集数据训练表示和利用表示来完成特定目标。抓取任务被定义为一个马尔科夫决策过程(MDP)。动作 a \mathbf a a 对应于笛卡尔坐标系下的夹子运动以及夹子的开合命令,state s \mathbf s s 包含当前的图像和一个goal g \mathbf g g 的表示。我们旨在给定的reward函数下学习函数 Q π ( s , a , g ) Q_{\pi}(\mathbf s,\mathbf a,\mathbf g) Qπ(s,a,g):抓取到被 g \mathbf g g定义的物体产生reward r = 1 \mathbf r=1 r=1,否则 r = 0 \mathbf r=0 r=0。 Q π Q_{\pi} Qπ的结构如图3。
学习这个Q函数有两个对于自监督目标条件抓取的挑战:我们必须找到一个方式(在学习早期)当不太可能抓取到正确物体时来训练策略,还有我们必须在没有gt的情况下从情景中提取reward。
我们假设抓取系统可以自动判定是否成功抓取了一个物体,但并不知道抓取的哪一个。例如,机器人可以通过检查夹子是否完全闭合来判定是否抓住了某个东西。我们使用 r any \mathbf r_{\text{any}} rany来标识无区分reward函数,在最后的时间步如果一个物体被抓住那就是1,否则是0。Q-learning可以从任一有效的 ( s , a , r , g ) (\mathbf s,\mathbf a,\mathbf r,\mathbf g) (s,a,r,g)元组中进行学习,所以我们使用 r any \mathbf r_{\text{any}} rany来在没有物体标签的情况下生成这些元组。我们利用三个不同的技巧来自动的对Q-learning的训练数据进行增广,使得学习目标条件抓取是可行的。
Embedding Similarity (ES) 一个通用的目标标注系统可以基于一个关于我们要求的 g \mathbf g g和我们实际得到的 o \mathbf o o的相似性来标注reward以近似真实的on-policy reward函数。如果Grasp2Vec表示能够抓住物体间的相似性,那么让 r = ϕ ^ o ( g ) ⋅ ϕ ^ o ( o ) \mathbf r=\hat\phi_o(\mathbf g) \cdot \hat\phi_o(\mathbf o) r=ϕ^o(g)⋅ϕ^o(o)能够完成实例抓取任务的策略学习。(这就是图1和之前一直提到的用相似性来定义reward。)
Posthoc Labeling (PL) 嵌入相似性能够给Q函数一个近似正确的reward,但是如果policy一直抓不到正确的物体的话,这将导致没有东西可以学习。我们使用一个类似于hindsight 经验回放的数据增广方法。如果一个情节里抓取到了任意物体,我们可以将 o \mathbf o o视作为该情节的states和actions的一个正确目标,将transition ( s , a , o , r = 1 ) (\mathbf s,\mathbf a,\mathbf o,\mathbf r=1) (s,a,o,r=1)加入到buffer中。我们将这个视作一个posthoc label。(这里很巧妙,将抓取到的物体作为 g \mathbf g g,然后reward就一定是1,自己和自己肯定是同一个类别)
Auxiliary Goal Augmentation (Aux) 我们甚至通过对没有完成目标的transitions进行relabel来增广replay buffer。并不是采样单个目标,我们从目标集中不放回的采样一对目标 ( g , g ′ ) (\mathbf g,\mathbf g') (g,g′),如果在对 g \mathbf g g实施策略后, r any = 1 \mathbf r_{\text{any}}=1 rany=1,那么我们将transition ( s , a , g ′ , r = ϕ ^ o ( g ′ ) ⋅ ϕ ^ o ( o ) ) (\mathbf s,\mathbf a,\mathbf g',\mathbf r=\hat\phi_o(\mathbf g') \cdot \hat\phi_o(\mathbf o)) (s,a,g′,r=ϕ^o(g′)⋅ϕ^o(o))加入到Replay buffer中。在不使用嵌入的基线中,在 g ′ \mathbf g' g′不可能是被抓取物体的假设下,用0来代替reward。
目标奖励重label方案以及自我监督实例抓取程序的伪代码总结在算法1中。