VAT-MART
需要解决的问题——架起视觉感知与执行器之间的桥梁
利用视觉系统感知到的信息来指导执行器(如机械臂等)完成相应的动作已经由来已久,但以往的方法只是估计出了kinematic structure 和 joint parameter等信息,并无法直接指导执行器完成相应的动作,即并非actionable。因此,论文提出了一种geometry-aware、interaction-aware、task-aware的视觉表征方法,并建立了得到该表征的系统VAT-MART。
如何解决该问题——object-centric actionable visual priors & VAT-MART
Actionable visual priors
个人感觉论文所提出的actionable visual priors重点在“actionable”,也就是说通过这样的视觉表征,下游的执行器可以直接采取相应的动作完成任务,与以前的“kinematic structure” 和 “joint parameter”相比是一种更加实际的指导。具体来讲,其由三部分组成:
1)an actionability map indicating where to act
就是说其对于物体表面的每个点量化了其在多大程度上适合作为交互点,最终以热力图的形式表达出来
2)an per-point distributions of visual action trajectory proposals indicating how to interact
第一部分是用来告诉执行应该在哪个地方进行交互,第二个部分则是给执行器提供一种具体的交互动作
3)success likelihood of interaction
第三个部分的信息是一种评估信息,用来衡量在每一个点的每一种可能动作的成功概率,相当于是告诉执行器如何选择一个最优的交互动作
VAT-MART
通过前面建立的视觉表征方法的确可以很好地指导机器人进行交互,但又该如何训练一个系统得到上述表征呢?作者建立了VAT-MART系统达到上述目的。
architecture
VAT-MART由两个主要的子模块构成:RL module 和 Perception Network.前者的作用在于为训练视觉网络提供数据,而视觉网络是输出actionable visual priors的直接结构,同时会通过好奇心反馈指导RL多去尝试一些之前没有尝试过的动作。
RL Policy
采用TD3作为基本的训练方法。状态空间包括:当前的位置(但并不是直接记录当前的位置,而是记录当前位置与上一时刻位置的差分)、抓手的位姿、关节轴的方向、关节轴的位置、接触点的位置。 动作空间则指的是下一个时刻需要到达的waypoint ( x i , R i ) (x_i,R_i) (xi,Ri),同样以差分的方式记录。
Perception Network
接受RL Policy产生的数据,包括接触点
p
p
p,有3D物体抽象出的点云图
S
O
S_O
SO,动作序列
τ
\tau
τ,任务目标
θ
\theta
θ。上述输入首先通过一个Input encoder进行编码,转换到特征空间之下,然后送入三个子模块:
1)Actionability Prediction Module(对每个可能的接触点评分)
2)Trajectory Proposal Module(产生交互动作)
3)Trajectory Scoring Module(对每个动作进行评分)
其中,Trajectory Proposal Module采用cVAE(条件变分自编码)实现,另外两个模块通过MLP实现
curiosity guidance
为了让RL探索到更多的动作,论文中引入了好奇心机制,一个非常直接的想法是给予当前在Perception Network中评分较低的动作以更高的好奇心回报,鼓励RL Policy去尝试这些被忽视的动作。
training details
通过随机初始化数据,先对RL 部分进行训练,然后利用RL得到的数据训练Perception Network,最后再将二者联合起来一起训练,RL不断地为perception network提供数据,而percetion network 不断基于RL 好奇心指导。
未来的工作和可能的改进
1)考虑除了pull 和 push 之外的其他动作
2)考率动作执行过程中的状态变化,将其作为反馈信息进行闭环控制。
AdaAfford
需要解决的问题——单一视觉表征能力有限
为了向下游的机械臂控制任务提供合适的视觉指导,我们首先需要判断出一个物体表面的哪一个点适合作为“交互点”,为了达到上述目的,以Where2Act为代表的object-centirc方法会生成一个affordance map,该map中的每一个点的值大小表征了该点适合作为抓取点的程度。然而,上述方法的一个明显不足在于其对于一些存在歧义的视觉场景无法识别,例如:
对于一个没有门把手且四条边外观完全相同的矩形门,我们无法通过2Dimage 或者 3D scan image判断出应该拉那一边才能打开这扇门。这时候Where2Act方法将无法给出正确的affordance map。由此出发,AdaAfford提出了一种“通过少量试探改善affordance map"的方式。
如何解决该问题——AAP module & AIP module
整体结构
AAP Module根据Where2Act模型生成一个初始的affordance map,然后由AIP module根据已知信息和当前的affordance map生成交互动作进行试探,改变物体当前状态,接着AAP module再根据当前的状态生成一个新的affordance map,如此不断循环迭代下去。
两个module的architecture
AAP
由三个部分组成:
1)特征编码模块
ξ
A
P
P
\xi_{APP}
ξAPP
其将输入的物体的3D点云信息
O
i
O_i
Oi、接触点
p
i
p_i
pi、交互方向
R
i
R_i
Ri、物体实际移动
m
i
m_i
mi进行特征编码得到
z
i
z_i
zi,对于动作集合
I
i
I_i
Ii中的每一个动作分别进行特征编码,然后加权求和得到整个集合的平均编码
Z
I
Z_I
ZI。
2)Affordance map 模块
D
A
P
P
D_{APP}
DAPP
这个部分便会生成我们想要的affordance map,其以
O
i
O_i
Oi、
p
i
p_i
pi、
Z
I
Z_I
ZI作为输入,由于结合了由AIP产生的试探信息,因此减少了环境当中的不确性,可以得到一个更加准确的affordance map。
3) 动作评分模块
C
A
A
P
C_{AAP}
CAAP
该模块以
O
i
O_i
Oi、
p
i
p_i
pi、
R
i
R_i
Ri、
Z
I
Z_I
ZI作为输入通过训练一个MLP得到在每一个接触点
p
i
p_i
pi下,每一个动作
u
i
(
R
i
,
p
i
)
u_i(R_i,p_i)
ui(Ri,pi)的相应评分。
AIP
由两个部分组成:
1)接触点评价模块
D
A
I
P
D_{AIP}
DAIP
这个模块的输出与
D
A
I
P
D_{AIP}
DAIP的输出形式是一样的,都是以热力图的方式表征不同点处某个物理量大小。只不过
D
A
I
P
D_{AIP}
DAIP所代表的是该点多大程度上适合作为试探动作的接触点。显然,如果一个点更能够挖掘出物体的隐藏信息(比如门的旋转轴附近),那么该点便更适合作为试探点,
D
A
I
P
D_{AIP}
DAIP输出的热力图在该点的值也会越大。
2)动作评价模块
C
A
I
P
C_{AIP}
CAIP
同样与
C
A
A
P
C_{AAP}
CAAP相对应,该模块的输出值用来表征在一个点上哪一种动作更适合用来作为试探动作。同样的道理,如果该动作能够揭示出物体的一些隐藏信息则更适合作为试探动作,输出值也会相应地越大。
训练细节
这是整篇文章给我冲击最大的地方,训练方式非常巧妙,总结起来可以概括为:逐级训练、反复迭代。
首先是训练动作评分模块
C
A
A
P
C_{AAP}
CAAP,采用如下的二进制交叉熵损失:
r
i
r_i
ri是一个二进制指示量,如果物体朝着目标的实际移动大于某个阈值则置为1,否则置为0。
接着是训练
D
A
P
P
D_{APP}
DAPP,论文采用Where2Act模型中预训练好的动作生成网络,在每一个点处随机生成100个动作,然后使用刚刚训练完成的动作评分模块
C
A
A
P
C_{AAP}
CAAP对这100个动作进行评分,选择前五个最大的动作评分的平均值作为affordance map在该点处的ground truth,接着便可以使用简单的L1 loss构建预测值与真实值之间的损失函数了。
然后是训练
C
A
I
P
C_{AIP}
CAIP。首先构建两个试探动作集合
Ω
i
−
1
=
I
1
,
I
2
,
I
3
.
.
.
I
i
−
1
\Omega_{i-1}={I_1,I_2,I_3...I_{i-1}}
Ωi−1=I1,I2,I3...Ii−1与
Ω
i
=
I
1
,
I
2
,
I
3
.
.
.
I
i
\Omega_{i}={I_1,I_2,I_3...I_i}
Ωi=I1,I2,I3...Ii,显然上述两个集合只相差我们目前需要进行评价的动作
I
i
I_i
Ii。因此,论文中,考虑将上述两个集合分别送到
C
A
A
P
C_{AAP}
CAAP中去计算损失函数
L
C
A
P
P
L_C^{APP}
LCAPP,以二者损失函数的差异作为该动作在AIP module中的评分。这是合理的,因为该差异值反映的是前后两个集合对于达成目标的帮助程度的差异,而两个集合的唯一区别就是
I
i
I_i
Ii。如果两个集合的差值越大,说明加上
I
i
I_i
Ii之后,更容易达成目标,则
I
i
I_i
Ii当然就应该是我们试探时需要重点考虑的动作。
再然后便是训练
D
A
I
P
D_{AIP}
DAIP。与通过
C
A
A
P
C_{AAP}
CAAP训练
D
A
P
P
D_{APP}
DAPP类似,我们可以采用类似的方法由
D
A
I
P
D_{AIP}
DAIP得到
C
A
I
P
C_{AIP}
CAIP。
目前,我们已经将AAP与AIP中的每一个子网络都进行了一遍训练,下面我们便可以开始进行迭代操作。由AIP模块生成试探动作,改变物体目前的状态,然后APP模块根据当前状态得到新的affordance map,AIP模块又根据新的affordance map再次训练,不断循环迭代,直到两个模块均收敛。
未来的工作和可能的改进
1.考虑除pull和push之外的其他动作
2. 考虑实际情况中机械臂等执行器的物理限制
3. encoder 模块的特征空间转换(Robust Scalar、Logarithmic Transformation、Box Cox)
4.
L
C
A
P
P
L_C^{APP}
LCAPP损失函数的修改
L
n
e
w
C
A
P
P
L_{newC}^{APP}
LnewCAPP=
L
C
A
P
P
L_C^{APP}
LCAPP+
λ
\lambda
λ*
∣
s
−
m
i
/
m
t
a
r
g
e
t
∣
|s-m_i/m_{target}|
∣s−mi/mtarget∣
5. 本质是增加信息,减少环境的不确定性,因此可以考虑其他增加信息的方式。
两篇文章的比较
VAT-MART搭建了一个完整的系统,产生的visual priors可以直接指导执行器运动,AdaAfford则聚焦于一点——生成更加准确的affordance map。