PERCEIVER-ACTOR: 用于机器人操作的多任务Transformer

252 篇文章 0 订阅
204 篇文章 0 订阅

22年11月来自华盛顿大学和Nvidia的论文 “PERCEIVER-ACTOR: A Multi-Task Transformer for Robotic Manipulation”。

Transformers 凭借其通过大数据集扩展的能力,彻底改变了视觉和自然语言处理。但在机器人操作方面,数据既有限又昂贵。如果问题表述得当,操作是否仍能从 Transformers 中受益?用 PerAct(一种用于多任务 6-DoF 操作的语言条件行为克隆智体)来研究这个问题。PerAct 使用Perceiver Transformer(“Perceiver io: A general architecture for structured inputs & outputs”)对语言目标和 RGB-D 体素观测进行编码,并通过“检测下一个最佳体素动作”输出离散化动作。与操作2-D图像的框架不同,体素化的3-D观测和动作空间为有效学习 6-DoF 动作提供强大的结构先验。通过这种表述,仅从每个任务的几个演示中训练一个多任务 Transformer,用于 18 个 RLBench 任务(有 249 种变化)和 7 个真实世界任务(有 18 种变化)。结果表明,在各种桌面任务中,PerAct 的表现明显优于非结构化图像-到-动作智体和 3D ConvNet 基线。

在 PERACT 中,用 Perceiver Transformer [1] 来编码高达 100 万个体素的高维输入,并且只使用一小组潜向量。这种基于体素的公式提供了强大的结构先验,具有以下几个优点:一种融合多视图观察的自然方法,学习稳健以动作为中心的表示 [18, 19],以及在 6-DoF 中实现数据增强——所有这些都有助于通过关注多样化而非狭窄的多任务数据来学习可推广的技能。

如图所示语言为条件的操作任务:PERACT 是一种语言调节多任务智体,能够模拟各种 6 自由度操作任务。在 RLBench [15] 中对 18 个模拟任务进行了实验(a-j;仅显示 10 个),其中包含多种姿势和语义变化。还使用 Franka Panda 在 7 个真实世界任务(k-o;仅显示 5 个)上展示PERACT方法,其中的多任务智体仅经过 53 次演示训练。

请添加图片描述

如下图PERACT 概述。PERACT 是一种语言条件行为克隆智体,经过监督学习训练以检测动作。PERACT 将语言目标和从 RGB-D 传感器重建的体素网格作为输入。体素被分成 3D 块,语言目标用预训练的语言模型进行编码。这些语言和体素特征作为一个序列附加在一起,并用 Perceiver Transformer进行编码 [1]。尽管输入序列非常长,但 Perceiver 仍使用一小组潜向量对输入进行编码。这些编码通过解码器上采样回原始体素维度,并使用线性层重塑以预测离散化的平移、旋转、夹持器打开和防撞动作。此动作由运动规划器执行,之后使用新观察结果预测观察-动作循环中的下一个离散动作,直到终止。

请添加图片描述

PERACT 是一个基于 Transformer 的 [2] 智体,它接收体素观测和语言目标 (v, l),并输出离散化的平移、旋转和夹持器打开动作。此动作由运动规划器执行,之后重复此过程,直到达到目标。

语言目标 l 使用预训练的语言模型进行编码。用 CLIP 的 [76] 语言编码器,但任何预训练的语言模型都可以 [13, 69]。选择 CLIP 为未来的工作开辟可能性,即使用与语言一致的预训练视觉特征,以便更好地推广到未见过的语义类别和实例 [16]。

体素观测 v 被分割成大小为 53 的 3D patches(类似于 ViT [4] 等视觉Transformer)。在实施过程中,这些patches 用核大小和步幅为 5 的 3D 卷积层提取,然后展平为体素编码序列。语言编码用线性层进行微调,然后与体素编码一起附加,形成输入序列。还将学习的位置嵌入添加到序列中,以合并体素和token位置。

语言和体素编码的输入序列非常长。具有 O(n2) 自注意连接和 (100/5)3 = 8000 个 patches 输入的标准 Transformer 很难装入商用 GPU 的内存中。相反,用 Perceiver [1] Transformer。Perceiver 是一个潜空间 Transformer,它不是关注整个输入,而是首先计算输入和一组小得多的潜向量(随机初始化和训练)之间交叉注意。这些潜向量用自注意层编码,对于最终输出,潜向量再次与输入交叉关注以匹配输入大小。默认情况下,用 2048 个 维度 512 的潜向量:R。

感知器 Transformer 使用 6 个自注意层对潜向量进行编码,并从输出交叉注意层输出一系列patch编码。这些patch编码通过 3D 卷积层和三线性上采样做上采样,解码 64 维体素特征。解码器包括来自编码器的跳过连接(如 UNets [77] 中所示)。然后使用每个体素的特征来预测离散化动作 [14]。对于平移,体素特征被重塑为原始体素网格 (100^3),形成动作-价值的 3D Q-函数。对于旋转、夹持器打开和碰撞,特征被最大池化,然后用线性层解码以形成各自的 Q-函数。通过简单地最大化-Q 函数来选择最佳动作 T。

PERACT 通过监督学习进行训练,使用来自演示数据集的离散-时间输入-动作元组。这些元组由体素观测、语言目标和关键帧动作 {(v1, l1, k1), (v2, l2, k2), . . .} 组成。在训练期间,随机抽取一个元组并监督智体根据观测和目标 (v, l) 预测关键帧动作 k。对于平移,真值动作表示为一个 one-hot 体素编码 Ytrans,旋转表示为带 R 旋转箱每个旋转轴的 one-hot 编码表示 Yrot (R=5)。同样,夹持器打开和碰撞变量是二进制 one-hot 向量 Yopen,Ycollide。智体像一个分类器一样用交叉熵损失进行训练。

对于多任务训练,只需从数据集中的所有任务中采样输入-动作元组即可。为了确保在采样过程中不会过度代表较长时间范围的任务,每个批次都包含均匀分布的任务。也就是说,首先均匀采样一组批次-大小的任务,然后为每个采样任务选择一个随机输入-动作元组。采用这种策略,较长时间范围的任务需要更多的训练步骤才能完全覆盖输入-动作对,但在梯度更新期间,所有任务都具有相同的权重。

附录:Perceiver-Transformer【1】架构如图所示

请添加图片描述

Perceiver 首先计算输入序列和维度 R 潜向量集之间的交叉注意。这些潜向量被随机初始化并进行端到端训练。潜向量用 6 个自注意层编码,然后与输入进行交叉注意,输出与输入维度匹配的序列。此输出通过 3D 卷积层和三线性上采样进行上采样,形成具有 64 个通道的体素特征网格。此特征网格与来自处理阶段的初始 64 维特征网格连接,作为与编码层的跳连接。最后,具有 1×1 内核的 3D 卷积层将通道从 128 下采样回 64 维。Perceiver 的实现基于现有的开源存储库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值