meta data
- Institution: NVIDIA
- Website: https://robotic-view-transformer.github.io
论文通读
方法
-
输入输出:
-
输入:语言描述、RGB-D 视觉状态、抓夹状态
-
输出:下一个关键帧的 EE 位姿和状态
关键帧主要是抓夹状态发生变化的时刻;因为一系列动作可以分解成 EE 的移动和抓夹状态的改变,而 EE 的移动一般可以通过底层规划层进行处理规划,因此(可能)关键帧需要反应抓夹的状态改变。
-
-
数据集:有多个 demonstration 构成:D_i=(\{o_{1\cdots m_i}^i\},\{a_{1\cdots m_i}^i\},l_i),每个 demonstration 包括 观测、相应的行动和语言描述
-
主要步骤:渲染、Joint Transformer(特征提取)、动作预测
Rendering 重新渲染(可以当作一种预处理手段)
-
将 RGB-D(s) 重构为整个场景的点云(基于相机内参和外参)
-
将点云重新分割(投影)成多个固定视角的点云(以及 RGB-D),每个视角包括 7 个通道:RGB、深度、(该视角的?)点云。由于不同视角的 RGB 和深度都是基于相机坐标系的,因此在各个视角加入点云通道可以帮助建立起不同视角之间的关系
-
最佳的视角和投影方式:正视 + 正交相机(现实中并不存在?)
-
-
优点:
- 将视觉输入和 Transformer 的输入进行解耦,使得实际相机的位姿可以变化(可以不用和训练时候一样),提高了泛化性
- 可以自由定制最后输入的相机的视角(比如正交)
Joint Transformer 特征提取
-
特征嵌入
- 自然语言:CLIP 进行嵌入,得到 tokens
- 图像:分块后使用 MLP 进行嵌入,得到 tokens
- 夹爪状态:使用 MLP 进行嵌入,得到 tokens,最后和图像的 tokens 进行连接(不知到是不是每张图都连接还是只连接哪一张;更倾向于每张图都连接)
除此之外,对图像和语言都加入位置编码
-
特征提取
使用 8 层自注意力层
- 前四层只处理每个视角的图像内部信息,不将所有图像的 tokens 连接起来处理(输入的 tokens 长度是?)
- 后四层将所有 tokens,即所有视角的图像和自然语言的 tokens 连接起来进行处理
-
后处理
将提取完的特征恢复到原先的空间配置(比如图片的 C H W,只不过这时候的 C 可能就不是输入时候的 7 通道了,而是更多的通道)
Action Prediction 动作预测
-
输出:3-DoF 的 EE 平动 + 3-DoF 的 EE 转动 + 1-DoF 的夹爪的状态 + 1 是否允许碰撞的标志位
-
平动的预测
将提取到的特征图经过 MLP 得到多个视角的热力图,将热力图投影到空间的 3D 体素上,得到每个体素的分数,最高的得分即目标位置
-
其他输出的预测
基于全局特征 G 进行预测,其包括两个部分相连接
- 各个特征图在空间位置上的加权求和,权重为上一步得到的热力图,将得到的加权特征进行连接
- 各个特征图在空间维度上进行最大池化,并连接得到的特征
具体怎么预测的呢??MLP??
损失函数
混合损失函数
- 对于热力图部分,采用交叉熵损失,GT 热力图为 GT 空间点投影到各个平面上的的高斯分布热力图
- 对于转动部分,对每个欧拉角采用交叉熵损失
- 对于夹爪状态和碰撞标志使用二分类损失(这是个什么损失?)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于