AdaAffoord论文笔记

论文链接:https://arxiv.org/pdf/2112.00246.pdf

应用背景:

通过增加少量的机器臂和物体的快速交换,使得家庭辅助机器人知道如何正确打开关闭抽屉、柜子、开关等。

现有问题:

现有的方法没有发掘隐藏的运动学细节,如下图所示,当没有明确的门把手信息时,现有的方法会将可能的开启位置均匀化(图中(b)列的第一行所示,柜子的边缘的一周都标上差不多颜色,表示都有可能是开启的位置),但这个样子无法满足家庭辅助机器人的要求。
在这里插入图片描述

主要方法和创新点:

通过在测试时加入少量机械臂和物体的交互,使得机器人可以准确地感知正确的抓取位置和施力方向。
记物体为 O ∈ R N × 3 O\in \mathbb{R}^{N×3} ORN×3,输出的热图为 A ∈ [ 0 , 1 ] N A\in [0,1]^N A[0,1]N,热图上某位置的数字对应于该位置是有效抓取点的可能性大小,机械臂夹子的朝向使用 R i p ∈ S O ( 3 ) R_i^p\in SO(3) RipSO(3)表示,其中 p p p为物体 O O O上的一点。 s i p ∈ [ 0 , 1 ] s_i^p\in[0,1] sip[0,1]表示对应的 R i p R_i^p Rip可以实现成功交互的可能性(具体说来,就是用机械臂的夹子夹住 p p p点,并且夹子朝向 R R R施力时可以正确完成,比如说打开柜子等任务的可能性大小)。记每一次的尝试为 I 1 = ( O i , p i , R i , m i ) I_1=(O_i, p_i, R_i, m_i) I1=(Oi,pi,Ri,mi),这里 m i m_i mi表示在用机械臂的夹子夹住物体 O I O_I OI p i p_i pi点,并且夹子朝向 R i R_i Ri施力时,物体的状态该变量,比如说抽屉被拉出来多少距离,柜子打开多少角度等。从而构成交互(这里的交互就是指每一次尝试,包括选择抓取点和施力方向)序列 I = { I 1 , I 2 , ⋯   } \mathcal{I}=\{I_1, I_2, \cdots\} I={I1,I2,}。一开始的初始化热图 A A A是由Where2Act网络(现有的工作)预测得到的,在经过 I \mathcal{I} I中的交互后的,得到的热图记为 A I ∈ [ 0 , 1 ] N A_{\mathcal{I}}\in [0,1]^N AI[0,1]N。同样, s i p s_i^p sip更新为 s i , I p s_{i,\mathcal{I}}^p si,Ip

架构

主要由AIP(Adaptive Interaction Proposal)和APP(Adaptive Affordance Prediction)两部分构成。AIP的主要目的是生成少量有效的交互方式,即生成 I {\mathcal{I}} I,AAP的主要作用的预测 A I A_{\mathcal{I}} AI

测试阶段

如下图所示,首先根据Where2Act网络预测的热图 A A A,AIP生成第一次的交互 I 1 I_1 I1,送入到AAP中,以此类推,在第t次过程中,生成的交互为 I t I_t It,到目前为止一共进行了 I t = { I 1 , ⋯   , I t } \mathcal{I}_t=\{I_1,\cdots,I_t\} It={I1,,It}次交互,将 I t \mathcal{I}_t It作为输入,送入到APP中,可以得到隐藏信息 z I t ∈ R 128 z_{\mathcal{I}_t}\in \mathbb{R^{128}} zItR128。AIP以 z I t z_{\mathcal{I}_t} zIt为输入,得到了 t + 1 t+1 t+1时刻的行动 u t + 1 = ( p t + 1 , R t + 1 ) u_{t+1}=(p_{t+1},R_{t+1}) ut+1=(pt+1,Rt+1)。执行完 u t + 1 u_{t+1} ut+1后,即可得到 t + 1 t+1 t+1时刻的交互信息 I t + 1 ← I t + 1 ∪ { I t + 1 } \mathcal{I}_{t+1}\gets \mathcal{I}_{t+1}\cup\{I_{t+1}\} It+1It+1{It+1}。这个过程迭代执行,直到交互时间结束或者AIP模块觉得交互可以结束,迭代结束。假设迭代结束在 T T T时刻,则最终的热图 A I = A I t A_{\mathcal{I}}=A_{\mathcal{I}_t} AI=AIt
在这里插入图片描述

输入解码器

如下图所示,清晰地展示了每个模块的输入是什么。本文中,使用了PointNet++分割网络将输入的点云 O ∈ R N × 3 O\in\mathbb{R}^{N×3} ORN×3编码成特征图 f O ∈ R N × 128 f_O\in\mathbb{R}^{N×128} fORN×128,记 p ∈ O p\in O pO点的特征为 f p ∣ O ∈ R N × 128 f_{p|O}\in\mathbb{R}^{N×128} fpORN×128。使用MLP将其他输入向量均编译为128维,记为 f a ∈ R 128 f_a\in\mathbb{R}^{128} faR128。然后将 f p ∣ O f_{p|O} fpO f a f_a fa结合起来构成 f I ∈ R 256 f_I\in\mathbb{R}^{256} fIR256。不同的编码器之间不共享权重。
在这里插入图片描述

AAP

AAP的主要作用是以 I \mathcal{I} I为输入,得到 A I A_{\mathcal{I}} AI。如上图所示,AAP主要由 E A A P \mathcal{E}_{AAP} EAAP C A A P \mathcal{C}_{AAP} CAAP D A A P \mathcal{D}_{AAP} DAAP构成。
E A A P \mathcal{E}_{AAP} EAAP主要通过输入 I \mathcal{I} I,使用之前提到的编码器(MLP),将其转化为128维的向量,再使用一个MLP得到隐藏信息 z I z_{\mathcal{I}} zI(简记为 z z z)。由于 I \mathcal{I} I由多个 I I I构成,所以额外使用一个MLP来预测不同 I I I的权重,最终的 z I z_{\mathcal{I}} zI可以表示为 z I ← ( ∑ i z I i × w I i ) / ( ∑ i w I i ) z_{\mathcal{I}}\gets (\sum_iz_{I_i}×w_{I_i})/(\sum_i w_{I_i}) zI(izIi×wIi)/(iwIi)
C A A P \mathcal{C}_{AAP} CAAP的输入为 u = ( p , R ) u=(p,R) u=(p,R) z z z,得到 s u ∣ z A A P ∈ [ 0 , 1 ] s_{u|z}^{AAP\in [0,1]} suzAAP[0,1],即该操作完成任务的可能性。
D A A P \mathcal{D}_{AAP} DAAP的输入为 O O O p p p,得到 a p ∣ z A A P ∈ [ 0 , 1 ] a_{p|z}^{AAP\in [0,1]} apzAAP[0,1],即 p p p点是有效的可交互点的可能性。
这边有个疑问:既然 C A A P \mathcal{C}_{AAP} CAAP处理的的 u u u中包含了 p p p,为什么还需要一个 D A A P \mathcal{D}_{AAP} DAAP

AIP

AIP主要由 C A I P \mathcal{C}_{AIP} CAIP D A I P \mathcal{D}_{AIP} DAIP构成。
C A I P \mathcal{C}_{AIP} CAIP的输入为 { O , p , R , s u ∣ z A A P , z } \{O,p,R,s_{u|z}^{AAP},z\} {O,p,R,suzAAP,z},得到 s u ∣ z A I P s_{u|z}^{AIP} suzAIP,即 u u u操作能发掘多少有效的未知信息。
D A I P \mathcal{D}_{AIP} DAIP的输入为 { O , p , R , a p ∣ z A A P , z } \{O,p,R,a_{p|z}^{AAP},z\} {O,p,R,apzAAP,z},得到 a p ∣ z A I P a_{p|z}^{AIP} apzAIP,即 p p p点能发掘多少有效的未知信息。
AIP的运行流程是:首先由APP得到 z z z,然后通过 D A I P \mathcal{D}_{AIP} DAIP得到最具潜力的探索点 p p p( a p ∣ z A I P a_{p|z}^{AIP} apzAIP得分最高的点),然后就该点随机采样100种操作 { u 1 , u 2 , ⋯   , u 100 } \{u_1, u_2,\cdots,u_{100}\} {u1,u2,,u100},然后选择 s u ∣ z A A P s_{u|z}^{AAP} suzAAP分数最高的 u u u,执行该操作。
当时间到了,或者AIP认为没有什么有潜力的探索时,结束交互。

训练及损失

C A A P \mathcal{C}_{AAP} CAAP的训练使用交叉熵函数:
L C A A P = − 1 B ∑ i r i log ⁡ ( s u i ∣ z A A P ) + ( 1 − r i ) log ⁡ ( 1 − s u i ∣ z A A P ) \mathcal{L}_{\mathcal{C}}^{AAP}=-\frac{1}{B}\sum_i ri\log(s_{u_i|z}^{AAP})+(1-r_i)\log(1-s_{u_i|z}^{AAP}) LCAAP=B1irilog(suizAAP)+(1ri)log(1suizAAP)
其中,如果 m i > τ m_i>\tau mi>τ,则 r i = 1 r_i=1 ri=1,否则 r i = 0 r_i=0 ri=0。简单说来,就是当 m i m_i mi比较大的时候,也就是说操作 u i u_i ui带来了比较好的结果,比如说把抽屉拉了比较远,或者柜子开的比较大,那么 u i u_i ui对应的 s u i ∣ z A A P s_{u_i|z}^{AAP} suizAAP的值也应该越大,表示该操作更有可能完成预设的任务。

D A A P \mathcal{D}_{AAP} DAAP的训练采用 L 1 \mathcal{L_1} L1损失, a p ∣ z A A P a_{p|z}^{AAP} apzAAP真值通过下面的方式获得:首先针对 p p p点,使用Where2Act随机产生100个操作 u u u,然后使用 C A A P \mathcal{C}_{AAP} CAAP(应该是已经训练好的)来产生 s u ∣ z A A P s_{u|z}^{AAP} suzAAP,然后使用五个最高得分的 s u ∣ z A A P s_{u|z}^{AAP} suzAAP的均值作为 a p ∣ z A A P a_{p|z}^{AAP} apzAAP的真值。

C A I P \mathcal{C}_{AIP} CAIP的训练采用 L 1 \mathcal{L_1} L1损失, s u ∣ z A I P s_{u|z}^{AIP} suzAIP真值通过下面的方式获得:给定一些列的交互 I T = { I 1 , I 2 , ⋯   } \mathcal{I}_{\mathcal{T}}=\{I_1, I_2, \cdots\} IT={I1,I2,},选取其的两个子集 I i − 1 = { I 1 , I 2 , ⋯   , I i − 1 } \mathcal{I}_{i-1}=\{I_1,I_2,\cdots,I_{i-1}\} Ii1={I1,I2,,Ii1} I i = { I 1 , I 2 , ⋯   , I i } \mathcal{I}_{i}=\{I_1,I_2,\cdots,I_{i}\} Ii={I1,I2,,Ii},通过 E A A P \mathcal{E}_{AAP} EAAP得到其对应的特征 z I i z_{\mathcal{I}_{i}} zIi z I i − 1 z_{\mathcal{I}_{i-1}} zIi1。然后将 z I i z_{\mathcal{I}_{i}} zIi z I i − 1 z_{\mathcal{I}_{i-1}} zIi1分别输入到 C A A P \mathcal{C}_{AAP} CAAP中,并且计算两者的差,作为 s u 1 ∣ z I i − 1 A I P s_{u_1|z_{\mathcal{I}_{i-1}}}^{AIP} su1zIi1AIP的真值 g t u i ∣ z I i − 1 A I P gt_{u_i|z_{\mathcal{I}_{i-1}}}^{AIP} gtuizIi1AIP,也就说多进行了一步 u i u_i ui,可以给 C A A P \mathcal{C}_{AAP} CAAP带来多大的变化。也就是鼓励发掘给 C A A P \mathcal{C}_{AAP} CAAP带来更多变化的操作 u i u_i ui

D A I P \mathcal{D}_{AIP} DAIP的训练采用另一种 L 1 \mathcal{L_1} L1损失,和 D A A P \mathcal{D}_{AAP} DAAP的训练类似, a p ∣ z A I P a_{p|z}^{AIP} apzAIP真值通过下面的方式获得:首先针对 p p p点,使用Where2Act随机产生100个操作 u u u,然后使用 C A I P \mathcal{C}_{AIP} CAIP(应该是已经训练好的)来产生 s u ∣ z A I P s_{u|z}^{AIP} suzAIP,然后使用五个最高得分的 s u ∣ z A I P s_{u|z}^{AIP} suzAIP的均值作为 a p ∣ z A I P a_{p|z}^{AIP} apzAIP的真值。

训练过程采取迭代训练的方式,首先用随机生成的交互训练AAP,然后训练AIP生成更加有效和高效的操作 u u u。然后使用训练好的AIP来微调AAP。训练交换训练过程直到两个模块趋同。

实验结果展示

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值