23年6月 Nvidia 的论文“RVT: Robotic View Transformer for 3D Object Manipulation”。
对于 3D 目标操作,构建显式 3D 表征的方法比仅依赖相机图像的方法表现更好。但使用像体素这样的显式 3D 表征需要大量的计算成本,从而对可扩展性产生不利影响。
RVT
,是一种用于 3D 操作的多视图 Transformer,既可扩展又准确。RVT 的一些主要特性包括注意机制,用于跨视图聚合信息,以及重渲染来自机器人工作空间周围虚拟视图的相机输入。在模拟中,单个 RVT 模型在 18 个 RLBench 任务(249 个任务变化)中运行良好,比现有的最先进方法(
PerAct
)成功率高 26%。比 PerAct 快 36 倍的速度训练,实现相同的性能,并实现 PerAct 的 2.3 倍的推理速度。此外,RVT 可以在现实世界中执行各种操作任务,每个任务只需几次(∼10)次演示。
传统上,机器人控制策略的学习是通过低维状态观测来研究的 [9、10、11、12、13]。最近,基于视觉的策略 [14、15、16、17、18、19、20、21] 受到越来越多的关注,因为高维视觉感官输入提供了跨任务更具泛化的观察表征,并且在现实世界的感知系统中更容易获得。人们探索了各种形式的视觉输入。先前的工作直接将 RGB 图像编码到低维潜空间中,并依靠基于模型的 [22、23] 或无模型的 [24、25]
强化学习 (RL)
来训练策略以在此空间中运行。最近,RT-1 [26] 利用
Transformer
架构 [27] 从图像历史中推断机器人的动作。
RVT 也使用Transformer来预测动作,但与 RT-1 不同的是,还利用深度来构建多视图场景表示。深度输入的使用也得到了广泛的研究。
CLIPort
[3] 和
IFOR
[1] 等方法直接处理 RGB-D 图像以进行目标操作,因此仅限于在 2D 自上而下的设置中执行简单的拾取和放置任务。为了解决这个问题,人们使用点云等显式 3D 表示。
C2F-ARM
[5] 和
PerAct
[6] 对点云进行体素化,并使用 3D 卷积网络作为控制推理的主干。然而,高精度任务通常需要高分辨率的体素化,从而导致高内存消耗和训练速度慢。
通过将点云转换为来自多个视图的一组 RGB-D 图像解决了可扩展性问题。与直接使用 RGB(-D) 或点云输入相比,这显著提高内存占用和训练效率,并带来了更高的性能(如表所示)。
另一项相关工作是
MIRA
[28],它也使用新视图图像来表示 3D 场景以进行动作推理。MIRA 通过从一组 RGB 图像中隐式构建场景的
神经辐射场
(NeRF) 表征,然后从优化的 NeRF 模型生成新视图图像来实现这一点。然而,优化场景 NeRF 模型的要求会减慢测试时的推理速度,并且依赖于来自一组密集视图的 RGB 图像作为输入。
近来,机器人社区特别关注为许多不同任务学习单一模型。大量工作通过使用可泛化的任务或动作表示(例如目标点云 [18, 19]、语义分割和光流 [1] 以及以目标为中心的表示 [29, 30])实现了多任务泛化。然而,这些表示的有限表达能力限制了它们只能在任务类别中进行泛化。
任务参数化
[31, 32] 和
离散任务-相关的输出层
[33, 34] 方法与强化学习一起被研究,以学习不同类别任务的策略。随着大语言模型的最新突破,多任务机器人学习已经通过使用自然语言来指定广泛的任务并从大型预收集的数据集中学习策略来实现 [35, 26, 36, 2, 37, 38, 39, 40, 41]。
目标是学习一个可以完成各种操作任务的单一模型。输入包括(1)任务的语言描述、(2)当前视觉状态(来自 RGB-D 摄像机)和(3)当前夹持器状态(打开或关闭)。模型应预测下一个关键帧的目标末端执行器姿势和夹持器状态指定的动作。关键帧表示夹持器,在任务执行过程中的重要步骤或瓶颈步骤 [55],例如预先拾取、抓取或放置姿势。给定目标末端执行器姿势,假设一个低级运动规划器和控制器可以将末端执行器移动到目标姿势。为了训练模型,假设给出一个包含 n 个专家演示的数据集 D = {D1 , D2 ,· · · , Dn },涵盖各种任务。每个演示 Di = ({oi1...mi }, {ai1...mi }, li ) 都是长度为 mi 的成功推出,其中 li 是任务的语言描述,{oi1,oi2,...,oimi } 是来自具有夹持器状态的 RGB-D 摄像机的观测序列,{ai1,ai2,...,aimi } 是相应的机器人动作序列。此演示数据集可用于训练具有
行为克隆(BC)
的模型。
提出的方法 (RVT) 是一个Transformer模型 [27],它处理在机器人工作空间周围重新渲染的图像,为每个视图生成一个输出,然后反向投影到 3D 中以预测夹持器姿势动作,如图所示。
渲染
。第一步是重新渲染摄像头输入。给定一个或多个传感器摄像头捕获的 RGB-D 图像,首先重建场景的点云。然后从一组虚拟视点重新渲染点云,这些视点锚定在以机器人底座为中心的空间中。具体来说,对于每个视图,渲染三个图像图,总共有 7 个通道:(1) RGB(3 个通道)、(2) 深度(1 个通道)和 (3) 世界框架中点的 (x, y, z) 坐标(3 个通道)。(x, y, z) 坐标有助于建立不同视图之间像素的对应关系,即,如果不同视图的像素共享相同的 (x, y, z),则它们对应于 3D 中的同一点。用 PyTorch3D [56] 进行渲染。通过经验验证渲染流水线中的各种设计选择。
重渲染过程将输入图像与输入到 Transformer 的图像分离。
这提供了几个好处,例如:
能够在任意有用的位置(例如,桌子正上方)重渲染,而不受现实世界相机位置的限制;
即使使用单个传感器相机也可以进行多视图推理;
允许使用正交图像而不是通常提供的透视图像;
促进 3D 点云增强并启用传感器图像中原本未呈现的点对应等附加通道。
通过经验发现,这些有助于通过基于视图的网络实现高性能。
联合的 Transformer
。重渲染的图像、任务的语言描述和夹持器状态(打开或关闭)由联合的 Transformer 模型处理。对于语言,用预训练的 CLIP [57] 嵌入(ResNet-50 变型),为每个单词提供一个token。对于虚拟图像,将每个图像分成 20 × 20 的块,并通过多层感知器 (MLP) 生成图像tokens,类似于 ViT [58]。对于抓取器状态,类似于 PerAct [6],将其通过 MLP 并将其连接到图像tokens。还向所有图像和语言tokens添加位置嵌入以保留位置信息。
总体而言,RVT 有八个自注意层。在前四层中,图像tokens仅允许关注来自同一图像的其他tokens。这会使网络偏向于先处理单个图像,然后再在图像之间共享信息。将所有图像tokens与语言tokens连接起来。在最后四层中,允许注意层在不同的图像和文本之间传播和积累信息。最后,将图像tokens重排列回原始空间配置,从而得到每幅图像的特征通道。