π0——用于通用机器人控制的流匹配VLA模型:一套框架控制7种机械臂(基于PaliGemma和ACT的3B模型)

前言

在此文之前,我花了一天半,详细解读了清华一研究团队发布的机器人扩散大模型RDT,包括其每一个附录,并在该文中预告说:​下一篇是一个3B的机器人大模型打通7种不同品牌的机械臂,这几个工作宣告机器人真正进入大模型时代

故,本文来了,本文最大的价值和意义在于:一套框架控制7种机械臂,实现各种机械臂的丝滑迁移与平替

且不断努力,让我的博客成为「大模型开发者和具身智能从业者」的必看,以结交广大同行,以有高频次 高层次 高水平的交流/合作,共同推动行业进步

第一部分 整体理解π0

1.1 π0——用于通用机器人控制的流匹配VLA模型

1.1.1 背景

在自然语言[1]和计算机视觉[39]领域,预先在多任务数据上训练的通用基础模型往往比那些专门定制的模型表现更佳

例如,如果目标是识别照片中的鸟类,那么与其仅仅在鸟类识别数据上进行训练,不如先在许多不同的图像-语言关联上进行预训练,然后针对鸟类识别任务进行微调或提示

同样地,作者会发现

  • 对于有效的专业机器人系统,先在高度多样化的机器人数据上进行预训练,然后针对所需任务进行微调或提示更为有效。这可以解决数据稀缺性挑战,因为通用模型可以获得更多的数据来源——包括其他任务、其他机器人,甚至非机器人来源的数据
  • 同时也可以解决鲁棒性和泛化性挑战,因为多样化的数据展示了更广泛的观察和行动覆盖,提供了更多样的场景、修正和恢复行为,这些可能在更狭窄的专业数据中不存在

然而,开发这样的通用机器人策略——即机器人基础模型——涉及许多重大挑战

  1. 首先,任何此类研究都必须在非常大规模上进行,因为大规模预训练的全部好处通常在较小规模上无法显现[54]
  2. 其次,需要开发合适的模型架构,这些架构能够有效利用多样化的数据源,同时能够表现出与复杂物理场景交互所需的复杂和微妙行为
  3. 第三,需要正确的训练策略,包括最近在NLP和计算机视觉领域的大模型进展在很大程度上依赖于精细的策略来策划预训练和后训练数据[35]

1.1.2 预训练的视觉-语言模型VLM主干 + 动作专家通过流匹配输出动作

24年10月底,来自Physical Intelligence公司的研究者们Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn等20多人(其中有一个我个人比较熟悉的Chelsea Finn,因为她是斯坦福ALOHA团队的指导老师),提出了一个原型模型和学习框架,称之为π0,其对应的论文为《π0: A Vision-Language-Action Flow Model for General Robot Control》

下图图1中展示了该模型和系统

为了整合多样的数据源,作者

  1. 首先利用一个预训练的视觉-语言模型(VLM)来导入互联网规模的经验。通过基于VLM构建他们的模型,继承了语言和视觉-语言模型的通用知识、语义推理和问题解决能力
  2. 然后,进一步训练他们的模型以整合机器人动作,使其成为一个视觉-语言-动作(VLA)模型。为了能够利用多种不同的机器人数据源,作者采用跨化身训练[10],将多种机器人类型的数据合并到同一个模型中。这些不同的机器人类型具有不同的配置空间和动作表示,包括单臂和双臂系统,以及移动操纵器

    其实这点和上一篇文章介绍的RDT是同样的问题,详见此文《清华双臂机器人扩散大模型RDT:先预训练后微调,支持语言、图像、动作多种输入(1B参数)》的「1.2.1节解决架构的问题:先解决多模态输入的编码、再解决网络结构(解决不稳定性和非线性特征)」
  3. 此外,为了能够执行高度灵巧和复杂的物理任务,作者使用带有流匹配[32-Rectified flow: A marginal preserving approach to optimal transport,28- Flow matching for generative modeling],即扩散[20-DDPM,46]的变体的动作分块架构[57-Learning fine-grained bimanual manipulation with low-cost hardware,即动作分块算法ACT,详见此文:ACT的原理解析:斯坦福炒虾机器人Moblie Aloha的动作分块算法ACT]
    来表示复杂的连续动作分布[28,32]
    we use an action chunking architecture [57] with flow matching (a variant of diffusion) to represent complex continuous action distributions [28, 32].
    相当于通过流匹配微调VLM以生成动作

    这使得他们的模型能够以高达50 Hz的频率控制机器人进行如折叠衣物(见上图图1)这样的灵巧任务
    且为了将流匹配与VLM结合,他们使用了一种新颖的动作专家,它通过流式输出(flow-based outputs)增强了标准VLM

    总之,虽然许多模型被提议结合预训练语言模型与扩散[40,41,14],包括专门将扩散与自回归大型语言模型混合的模型[19,29,59]
    这些模型通常关注图像生成,但作者的动作生成模型与Zhou等[59]类似,其
    通过应用于单个序列元素的扩散风格(流匹配)损失训练他们的模型,以替代仅用于解码器的transformers的标准交叉熵损失
    与Liu等[29]类似,为对应于扩散的token使用了一套独立的权重(该扩散的token即是机器人的动作),将这些概念融入VLA模型中,作者引入了据他们所知的第一个流匹配VLA,用于生成高频动作块以实现灵巧控制

此外,为了灵活且稳健地执行复杂任务,还需要正确的训练策略,具体而言,模型首先在一个非常大且多样化的语料库上进行预训练,然后在更狭窄且更精心策划的数据上进行微调,以引导出所需的行为模式

流匹配的工作方式和扩散模型有些类似,核心思想都是通过逐步添加噪声来简化数据分布,然后逐步去噪得到隐私数据

  • 训练时,随机对动作施加高斯噪声,并训练模型输出去噪向量场
    推理时,从高斯噪声开始,通过数值积分向量场生成动作序列
  • 不同之处在于
    流匹配直接对数据和噪声分布之间的映射场(vector field)进行建模,训练目标是匹配这一映射场
    而扩散模型通常学习的是每个去噪步骤的条件分布「如还不熟悉扩散模型的,请参见此文《图像生成发展起源:从VAE、VQ-VAE、扩散模型DDPM、DETR到ViT、Swin transformer》的第二部分

总之,流匹配方法能够高精度地建模复杂多峰分布,非常适合高频灵巧操作任务

1.2 模型架构与模型推理

1.2.1 组合PaliGemma + 流匹配Flow matching

作者首先组装了一个预训练混合体,该混合体由他们自己的灵巧操作数据集(第V-C节)与整个OXE数据集[10]的加权组合组成,该数据集是在7种不同的机器人配置下为68个不同的任务收集的,而OXE数据集包含来自22个机器人的数据

  1. 预训练阶段(第V-A节)还使用了多样的语言标签,结合了任务名称和段注释(用于子轨迹的细粒度标签,通常长度约为2秒)
    预训练阶段的目的是训练一个基础模型,该模型展示了广泛的能力和泛化性,但不一定专注于在任何一个任务上达到高性能。这个基础模型可以遵循语言指令并以基础水平执行多种任务
  2. 对于复杂和灵巧的任务,随后采用后训练程序(第V-A节),使用高质量的精心策划数据将模型调整为特定的下游任务。他们研究了使用少量到中等量数据的高效后训练,以及使用较大数据集进行复杂任务(如折叠衣物和移动操作)的高质量后训练

如下图图3所示

  • π0模型主要由一个语言模型transformer骨干组成。遵循标准的后期融合视觉语言模型(VLM)方法[3,11,30],图像编码器将机器人的图像观测嵌入到与语言token相同的嵌入空间中
    且进一步通过特定于机器人学的输入和输出进行增强——即本体感觉状态和机器人动作
  • π0使用条件流匹配[28,32]来建模动作的连续分布。流匹配为他们的模型提供了高精度和多模态建模能力,使其特别适合高频灵巧任务

    该架构灵感来自Transfusion [59],该方法通过多个目标训练一个单一的transformer,其中与连续输出对应的token(比如机器人的动作)通过流匹配损失进行监督,而与离散输出对应的token则通过交叉熵损失进行监督
    Our architecture is inspired by Transfusion [59], which trains a single transformer using multiple objectives, with tokens1 corresponding to continuous outputs supervised via a flow matching loss and tokens corresponding to discrete outputs supervised via a cross-entropy loss.

在Transfusion的基础上,他们还发现,为机器人特定的(动作和状态)token使用一组单独的权重可以提高性能「Building on Transfusion, we additionally found that using a separate set of weights for the robotics-specific (action and state) tokens led to an improvement in performance.


这种设计类似于专家混合[45,25,12,16],其中有两个混合元素

  1. 第一个元素用于图像和文本输入
  2. 第二个用于机器人特定的输入(比如机器人的状态)和输出(比如预测的机器人动作)

他们将第二组权重称为动作专家

正式地,他们希望对数据分布p\left(\mathbf{A}_{t} \mid \mathbf{o}_{t}\right)建模,其中

  • \mathbf{A}_{t}=\left[\mathbf{a}_{t}, \mathbf{a}_{t+1}, \ldots, \mathbf{a}_{t+H-1}\right]对应于未来动作的动作块(作者在任务中使用H=50)

    顺带强调下
    当我们看到\mathbf{A}_{t}这个符号时,它表示的是输出的预测动作
    当看到\mathbf{A}_{t}^{\tau}这个符号时,它表示的是输入噪声动作
    PS,此点记住了,可以避免概念上的混淆(且如果你细心的话,你会发现本文全文中,我特意为了区别,皆是:动作输入用的绿色字体动作输出用的红色字体)
  • \mathbf{O}_{t}是一个观察,观察由多个RGB图像、语言命令机器人的本体状态组成,因此\mathbf{o}_{t}=\left[\mathbf{I}_{t}^{1}, \ldots, \mathbf{I}_{t}^{n}, \ell_{t}, \mathbf{q}_{t}\right]

    其中
    \mathbf{I}_{t}^{i}是第i个图像(每个机器人有2或3个图像)
    \ell_{t}是语言token序列
    \mathbf{q}_{t}是关节角度向量

    图像\mathbf{I}_{t}^{i}和状态\mathbf{q}_{t}通过相应的编码器进行编码,然后通过线性投影层投影到与语言token相同的嵌入空间中

对于动作块\mathbf{A}_{t}中的每个动作\mathbf{a}_{t^{\prime}}有一个相应的动作token,通过动作专家来处理。在训练过程中,使用条件流匹配损失Conditional Flow Matching[28,32]监督这些动作token

L^{\tau}(\theta)=\mathbb{E}_{p\left(\mathbf{A}_{t} \mid \mathbf{o}_{t}\right), q\left(\mathbf{A}_{\tau}^{\tau} \mid \mathbf{A}_{t}\right)}\left\|\mathbf{v}_{\theta}\left(\mathbf{A}_{t}^{\tau}, \mathbf{o}_{t}\right)-\mathbf{u}\left(\mathbf{A}_{t}^{\tau} \mid \mathbf{A}_{t}\right)\right\|^{2}

其中下标表示机器人时间步,上标表示流匹配时间步,\tau \in[0,1]

  • 最近在高分辨率图像[14]和视频[38]合成方面的研究表明,当与简单的线性高斯(或最优传输)概率路径[28]结合时,流匹配可以实现强大的经验性能

    其由下述表达式给出
    q\left(\mathbf{A}_{t}^{\tau} \mid \mathbf{A}_{t}\right)=\mathcal{N}\left(\tau \mathbf{A}_{t},(1-\tau) \mathbf{I}\right)
  • 在实践中,网络通过采样随机噪声\epsilon \sim \mathcal{N}(\mathbf{0}, \mathbf{I})进行训练,计算“噪声动作”\mathbf{A}_{t}^{\tau}=\tau \mathbf{A}_{t}+(1-\tau) \epsilon

    然后训练网络输出\mathbf{v}_{\theta}\left(\mathbf{A}_{t}^{\tau}, \mathbf{o}_{t}\right)此为动作块的向量场表示」,以匹配去噪向量场即training the network outputs vθ (Aτt , ot) to match the denoising vector field
    \mathbf{u}\left(\mathbf{A}_{t}^{\tau} \mid \mathbf{A}_{t}\right)=\epsilon-\mathbf{A}_{t}
  • 动作专家使用全双向注意力掩码,以便所有动作token彼此关注「The action expert uses a full bidirectional attention mask, so that all action tokens attendto each other
    \rightarrow  在训练期间,从一个强调较低(更嘈杂)时间步的贝塔分布中采样流匹配时间步τ。更多细节请参见附录B「During training, we sample the flow matchingtimestep τ from a beta distribution that emphasizes lower(noisier) timesteps. See Appendix B for more details.
    \rightarrow  在推理时,作者通过从\tau=0\tau=1积分学习到的向量场来生成动作,从随机噪声\mathbf{A}_{t}^{0} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})开始,且作者使用前向欧拉积分规则「At inference time, we generate actions by integrating thelearned vector field from τ = 0 to τ = 1, starting with randomnoise A0t ∼N(0, I). We use the forward Euler integrationrule:

    \mathbf{A}_{t}^{\tau+\delta}=\mathbf{A}_{t}^{\tau}+\delta \mathbf{v}_{\theta}\left(\mathbf{A}_{t}^{\tau}, \mathbf{o}_{t}\right)
    其中\delta是积分步长

    在他们的实验中,使用了10个积分步骤(对应于\delta=0.1)。注意,可以通过缓存前缀\mathbf{o}_{t}的注意力键和值,并且仅对每个积分步骤重新计算与动作token对应的后缀,从而高效地实现推理

    他们在附录D中提供了有关推理过程的更多细节,包括模型每个部分的推理时间。虽然原则上他们的模型可以从头初始化或从任何VLM骨干微调,但实际上他们使用PaliGemma [5-PaliGemma: A versatile 3B VLM for transfer]作为他们的基础模型

PaliGemma是一个开源的30亿参数VLM,提供了大小和性能之间的便利折衷。作者为动作专家添加了3亿参数(从头初始化),总共达到33亿参数「关于PaliGemma的详细介绍,请参见此文:多模态PaliGemma——Google推出的基于SigLIP和Gemma的视觉语言模型」


除了他们的主要VLA模型外,他们还训练了一个类似的基线模型,该模型在消融实验中没有使用VLM初始化

作者称之为π0-small的这个模型拥有470M参数,没有使用VLM初始化,并且在没有使用VLM初始化的数据训练中,作者发现了一些有助于训练的小差异,这些差异在原论文的附录C中进行了总结

1.2.2 改造VLM模型PaliGemma,使其成为VLA模型

作者遵循PaliGemma VLM [5]的设计

但有以下不同:

  1. 为机器人特定的token增加了额外的输入和输出投影,包括状态向量\mathbf{q}_{t}和动作向量\mathbf{A}_{t}=\left[\mathbf{a}_{t}, \ldots, \mathbf{a}_{t+H-1}\right]
  2. 增加了一个用于结合流匹配时间步的MLP信息\tau
  3. 以及动作专家的一组较小的权重

具体的改动,分别涉及到以下几点

  1. 附加输入和输出
    标准的PaliGemma架构接收一系列图像\left[\mathbf{I}_{t}^{1}, \ldots, \mathbf{I}_{t}^{n}\right],随后是语言指令\ell_{t}
    但作者附加了输入和输出,即
    \rightarrow  添加了一个输入\mathbf{q}_{t},用于机器人的本体状态,通过线性投影映射到transformer嵌入维度
    \rightarrow  且最终的输入token集对应于噪声动作块\mathbf{A}_{t}^{\tau}=\left[\mathbf{a}_{t}^{\tau}, \ldots, \mathbf{a}_{t+H-1}^{\tau}\right],token数量等于动作视界(在作者的任务中H= 50),作者仅使用transformer输出中对应于H个噪声动作的部分,并通过线性投影解码为\mathbf{v}_{\theta}\left(\mathbf{A}_{t}^{\tau}, \mathbf{o}_{t}\right)——相当于输出动作块的向量场表示
    The final set of input tokens correspond to the noisy action chunk Aτt = [aτt , ..., aτt+H−1], with the number of tokens equal to the action horizon (H = 50 for our tasks). We only use
    the transformer outputs corresponding to the H noisy actions,which are decoded into vθ (Aτ
    t , ot) using a linear projection.
  2. 多层感知机MLP整合流匹配时间步
    噪声动作块\mathbf{A}_{t}^{\tau}通过一个MLP映射到transformer的嵌入维度,该MLP还结合了流匹配时间步\tau

    对于每个噪声动作\mathbf{a}_{t}^{\tau},输入到transformer的对应嵌入表达式为
    W_{3} \cdot \operatorname{swish}\left(W_{2} \cdot \operatorname{concat}\left(W_{1} \cdot \mathbf{a}_{t^{\prime}}^{\tau}, \phi(\tau)\right)\right)
    其中\phi: \mathbb{R} \rightarrow \mathbb{R}^{w}是一个正弦位置编码函数[51],且W_{1} \in \mathbb{R}^{w \times d}, W_{2} \in \mathbb{R}^{w \times 2 w}, W_{3} \in \mathbb{R}^{w \times u}
    d是动作维度,w是动作专家的嵌入维度(或宽度)
  3. 注意力掩码
    π0使用具有3个块的分块因果注意力掩码:\left[\mathbf{I}_{t}^{1}, \ldots, \mathbf{I}_{t}^{n}, \ell_{t}\right]\left[\mathbf{q}_{t}\right],和\left[\mathbf{a}_{t}^{\tau}, \ldots, \mathbf{a}_{t+H-1}^{\tau}\right]
    在每个块内,存在全双向注意力,而每个块中的token不能关注未来块中的token

    \rightarrow  第一块包含PaliGemma的VLM预训练中的输入模态,这些模态被防止关注未来块(包含新输入)以最小化预训练带来的分布偏移「The first block includes the input modalities from PaliGemma’s VLM pre-training, which are prevented from attending to future blocks (which include new inputs) to minimize distribution shift from said pre-training
    \rightarrow  机器人状态 \mathbf{q}_{t} 是它自己的一个模块,因为它在每个流匹配集成步骤中不会变化;阻止它参与最终模块——使得其对应的键和值在采样期间能够被缓存「The robot state qt is its own block because it does not change with each flow matching integration step; preventing it from attending to the final block allows its corresponding keys and values to be cached during sampling
    \rightarrow  最后一块对应于噪声动作\mathbf{A}_{t}^{\tau},可以关注整个输入序列「即The final block corresponds to the noisy actions Aτ t , which can attend to the full input sequence
  4. 动作专家
    π0实现为一个单一的transformer,其具有两组权重(也称为专家[45]),每个token被路由到其中一个专家;权重仅通过transformer的自注意力层相互作用

    那各个token到底是路由到具体哪个专家呢?很简单
    对于图像和语言提示:\left[\mathbf{I}_{t}^{1}, \ldots, \mathbf{I}_{t}^{n}, \ell_{t}\right],被路由到较大的VLM主干——其由PaliGemma初始化
    至于VLM预训练期间未见的输入:机器人本体状态和噪声动作\left[\mathbf{q}_{t}, \mathbf{A}_{t}^{\tau}\right],则被路由到动作专家

    PaliGemma基于Gemma 2B[49]语言模型,使用多查询注意力[44,关于多查询注意力的介绍详见此文:一文通透各种注意力:从多头注意力MHA到分组查询注意力GQA、多查询注意力MQA的第三部分],和配置{width=2048,depth=18,mlpdim=16,384,num heads=18, num kvheads=1,head dim=256}
    由于专家仅在自注意力层中相互作用,width和mlp dim不必在专家之间匹配

    另,为了加快推理速度(需要动作专家的多次前向传递),他们将动作专家缩小为{width=1024, mlp dim=4096},参数数量约为∼300M
  5. 采样流匹配时间步
    原始流匹配论文[28,32]从均匀分布中采样流匹配时间步:\tau \sim \mathcal{U}(0,1)。Esser等人[14]则建议从对数正态分布中采样
    作者认为,在高时间步(低噪声水平)时,模型只需学习恒等函数,而在低时间步(高噪声水平)时,模型只需学习数据分布的均值

    然而,假设动作预测任务与高分辨率图像合成有细微的不同——虽然在文本标签的条件下预测均值图像可能相对容易,但在机器人观测条件下预测均值动作(即,学习\mathbb{E}\left[\mathbf{A}_{t} \mid \mathbf{o}_{t}\right])则是个更难的问题;这是因为观测\mathbf{o}_{t}非常具有信息性,它应该比文本标签对可能动作的分布施加更大的约束

    因此,作者设计了一个时间步采样分布,强调低时间步(高噪声水平);此外,超过给定阈值s的时间步根本不被采样,因为只要积分步长δ大于1−s,它们就不需要
    分布由p(\tau)=\operatorname{Beta}\left(\frac{s-\tau}{s} ; 1.5,1\right),且在实验中使用 s= 0.999,这允许δ > 11000 ,或最多 1,000 个积分步骤

1.2.3 推理

回想一下,模型接受一个观测\mathbf{o}_{t}= \left[\mathbf{I}_{t}^{1}, \ldots, \mathbf{I}_{t}^{n}, \ell_{t}, \mathbf{q}_{t}\right]和噪声动作\mathbf{A}_{t}^{\tau},并输出需要集成以获得下一个流匹配步骤的向量场\mathbf{v}_{t}^{\tau}Recall that our model takes an observation ot = [I1t , ..., Int , ℓt, qt] and the noisy actions Aτt and outputs the vector field that needs to be integrated to obtain the next flow matching step, vτt .

每次预测一个新的动作块\mathbf{A}_{t}时,必须对每个图像\mathbf{I}_{t}^{1}, \ldots, \mathbf{I}_{t}^{n}进行编码,在与\mathbf{o}_{t}对应的token上运行一次前向传递,然后运行10步流匹配,其中每一步都需要在与\mathbf{A}_{t}^{\tau}对应的token上运行一次前向传递(与\mathbf{o}_{t}对应的键和值是缓存的)「Each time we predict a new action chunk At, we must encode each of the images I1t , ..., Int , run a forward pass on the tokens corresponding to ot, and then run10 steps of flow matching, where each step requires running a forward pass on the tokens corresponding to Aτt (the keys and values corresponding to ot are cached).

下表表I总结了使用3个摄像头图像进行此操作的计算时间

这些操作是在NVIDIA GeForce RTX 4090消费级GPU上计时的。对于移动机器人,推理是在Wi-Fi连接上进行的,增加了一小部分网络延迟。当然了,如果做进一步的优化、量化和其他改进可能会进一步减少推理时间

由于模型一次生成整个 H步动作块,作者可以在需要再次运行推理之前执行最多 H个动作。然而,实际可能会比这更频繁地进行推理,并且可以使用各种聚合策略结合来自不同推理调用的动作

作者在早期尝试了ACT算法中的时间集成[57- Learning fine-grained bimanual manipulation with
low-cost hardware,对于这点,我july的个人理解是时间集成是ACT策略中的其中一个选项,故用ACT的过程中,可以不用时间集成这个特征,是不影响对ACT的使用的
],发现它对策略性能有害,因此作者选择不聚合动作,而是执行开放循环的动作块

  • 对于20Hz的UR5e和Franka机器人,作者每0.8秒进行一次推理(在执行16个动作后)
  • 而对于所有其他以50Hz运行的机器人,作者每0.5秒进行一次推理(在执行25个动作后)

1.3 数据收集和训练方案

就像大型语言模型(LLM)的训练通常分为预训练和后训练阶段一样,作者对他们的模型也采用多阶段训练程序

  1. 预训练阶段的目标是让模型接触到各种各样的任务,以便它能够获得广泛适用和一般的物理能力,而后训练阶段的目标是使模型能够熟练和流畅地执行所需的下游任务
  2. 因此,预训练和后训练数据集的要求是不同的:
    预训练数据集应涵盖尽可能多的任务,并在每个任务中涵盖多样化的行为
    后训练数据集则应涵盖有助于有效任务执行的行为,这些行为应表现出一致且流畅的策略。

    直观地说,多样化(但质量较低)的预训练数据允许模型从错误中恢复并处理高度变化的情况,这些情况可能在高质量的后训练数据中不会出现,而后训练数据教会模型良好地执行任务

1.3.1 预训练和后训练

在下图图4中提供了作者预训练混合的概述「数据集的概览:预训练混合物由OXE[10]的一个子集和π数据集组成。他们使用OXE的一个子集,称之为OXE魔法汤[24]。右图展示了预训练混合物中不同数据集的权重左图展示了通过步数衡量的相对大小」,注意,由于每个训练示例对应一个时间步——即一个元组\left(\mathbf{o}_{t}, \mathbf{A}_{t}\right),——在本次讨论中,将以时间步来量化数据

  • 训练混合中有9.1%由开源数据集组成,包括OXE [10]、Bridgev2 [52] 和 DROID [23]。这些数据集中的机器人和任务通常配备一到两个摄像头,并使用低频控制,频率在2到10 Hz之间。然而,这些数据集涵盖了广泛的物体和环境
  • 为了学习灵巧且更复杂的任务,作者还使用了来自作者自有数据集的903M时间步长的数据,其中106M步来自单臂机器人,797M步来自双臂机器人

    这些数据涵盖了68个任务,每个任务由复杂的行为组成——例如,“清理”任务涉及将各种不同的盘子、杯子和餐具放入清理箱,以及将各种垃圾物品放入垃圾桶

    请注意,这种任务的定义与之前的工作显著不同,之前的工作通常使用任何名词和动词的组合(例如,“拾起杯子”与“拾起盘子”)来构成一个独立的任务
    因此,作者数据集中行为的实际范围比这些“任务”数量所暗示的要广泛得多。他们将在第V-C节中更详细地讨论他们数据集中的具体机器人和任务

此外,由于数据集在大小上有些不平衡(例如,更困难的洗衣折叠任务被过度代表),作者对每个任务-机器人组合赋予权重n^{0.43},其中n是该组合的样本数量,以便对过度代表的组合进行降权

  1. 配置向量\mathbf{q}_{t}和动作向量\mathbf{a}_{t}始终具有数据集中最大机器人的维度大小(在作者的案例中为18,以适应两个6-DoF机械臂、两个夹持器、一个移动底座和一个垂直驱动的躯干)
  2. 对于配置和动作空间维度较低的机器人,对配置和动作向量进行零填充。对于少于三张图像的机器人,还会屏蔽掉缺失的图像槽
  3. 在训练后阶段,使用一个较小的任务特定数据集对模型进行微调,以使其专门化用于特定的下游应用。如前所述,对“任务”的定义相当广泛——例如,“收拾”任务需要操作多种不同的物体。不同的任务需要非常不同的数据集,最简单的任务只需5小时,而最复杂的任务需要100小时或更多的数据

1.3.2 语言和高级策略

更复杂的任务需要语义推理和高级策略,例如清理桌子,也可以通过将高级任务(如“清理桌子”)分解为更直接的子任务(如“拿起餐巾”或“将餐巾扔进垃圾桶”)的高级策略来受益

由于作者的模型经过训练可以处理语言输入,故可以使用高级视觉语言模型(VLM)来进行这些语义推理,这种方法类似于LLM/VLM的规划方法,例如SayCan [2]。通过使用这种高级策略来辅助他们的模型在多个实验任务中制定高级策略,正如将在第六节中讨论的那样

1.3.3 可操作的机器人系统:涉及7种机械臂和68个任务

作者灵巧操作数据集包括7种不同的机器人配置和68个任务,如下图图5所示

  • UR5e
    一个配备平行爪夹持器的手臂,带有一个腕部安装和一个肩上摄像头,总共提供两张相机图像和一个7维的配置和动作空间
  • 双臂UR5e
    两个UR5e设置,总共提供三张相机图像和一个14维的配置和动作空间
  • Franka
    Franka设置有两个摄像头和一个8维的配置和动作空间
  • 双臂Trossen
    此设置有两个基于ALOHA设置[4,57]的6自由度Trossen ViperX手臂,配有两个腕部摄像头和一个基座摄像头,以及一个14维的配置和动作空间
  • 双臂ARX和双臂AgileX
    此设置使用两个6自由度手臂,支持ARX或AgileX手臂,配有三个摄像头(两个腕部和一个基座),以及一个14维的配置和动作空间。此类别涵盖两个不同的平台,但由于它们的运动学特性相似,故将它们归为一类
  • 移动Trossen和移动ARX
    此设置基于移动ALOHA[57]平台,具有两个安装在移动基座上的6自由度手臂,可以是ARX手臂或Trossen ViperX手臂。非全向基座增加了两个动作维度,形成一个14维的配置和16维的动作空间。有两个腕部摄像头和一个基座摄像头。此类别涵盖两个不同的平台,但由于它们的运动学特性相似,故将它们归为一类
  • 移动Fibocom
    两个安装在全向基座上的6自由度ARX手臂。基座增加三个动作维度(两个用于平移,一个用于方向),形成一个14维的配置和17维的动作空间。在上上图-图4中总结了他们数据集中每个机器人的比例

1.4 实验效果及验证

1.4.1 对基础模型的评估

为了做一系列验证对比,作者

  1. 作者与OpenVLA[24]进行比较,这是一个最初在OXE数据集[10]上训练的7B参数VLA模型。作者在完整混合物上训练OpenVLA。这对于OpenVLA来说是一个非常困难的混合物,因为它不支持动作分块或高频控制
  2. 此外,还与Octo [50]进行比较,这是一个较小的93M参数模型。虽然Octo不是VLA,但它确实使用扩散过程生成动作,为作者的流匹配VLA提供了一个有价值的比较点

    作者还在与他们模型相同的混合物上训练Octo。但由于时间限制,作者无法为OpenVLA和Octo训练与他们完整模型相同的周期数。因此,作者还与“计算平价”版本的模型进行比较,该版本仅训练160k步(而作者的主模型训练了700k步),这相当于或低于为基线提供的步骤数量(OpenVLA为160k,Octo为320k)
  3. 还包括一个仅在UR5e数据上微调的OpenVLA模型版本,不进行跨化身训练,希望在UR5e任务上提供更强的基线
  4. 最后,作者还包括与第四节描述的π0-small模型的比较,该模型可以视为作者模型的缩小版,没有进行VLM预训练。评估指标使用在每个任务和方法的10个回合中平均的标准化得分,其中一次回合在完全成功时得分为1.0,部分成功时得分为小数

    例如,搬运的得分是正确放置在适当容器中的物体的比例,且在附录E中描述了评分标准

结果如下图图7所示

π0在所有零样本任务上取得了迄今为止最好的结果,在衬衫折叠和较简单的搬运任务上接近完美的成功率,并且相对于所有基线有很大改善。经过160k步训练的“parity”版本的π0仍然优于所有基线,甚至π0-small也优于OpenVLA和Octo。OpenVLA在这些任务上表现不佳,因为其自回归离散化架构不支持动作块。仅限UR5e的OpenVLA模型表现较好,但仍远低于π0的性能。Octo确实支持动作块,但其表示能力相对有限

此比较说明了结合大型、具有表现力的架构与通过流匹配或扩散来建模复杂分布的能力的重要性。此外,与π0-small的比较说明了结合VLM预训练的重要性。不幸的是,最后的比较很难做到公平:π0-small使用的参数更少,但较大的模型在没有预训练的情况下难以使用

总体而言,这些实验表明π0提供了一个强大的预训练模型,能够有效地执行各种机器人任务,性能远优于先前的模型

1.4.2 学习新的灵巧任务

如下图图10所示,再看下面对一系列新任务的表现

  • UR5e 堆叠碗。这个任务需要堆叠碗,使用四个不同尺寸的碗。由于这个任务需要像预训练数据中的收碗任务一样抓取和移动碗,因此将其归入“简单”层级
    训练数据包含各种碗的使用,评估中混合使用已见和未见的碗
  • 毛巾折叠。此任务需要折叠毛巾。由于这与衬衫折叠相似,而衬衫折叠在预训练中存在,因此将其归为“简单”级别
  • 微波炉中的塑料容器。此任务需要打开微波炉,将塑料容器放入其中并关闭。容器有不同的形状和颜色,评估中混合使用已见和未见的容器。容器的操作类似于预训练数据,但微波炉在预训练中未出现
  • 纸巾更换。此任务需要从支架上取下旧的纸巾纸管,并用新的纸巾卷替换。由于在预训练中未找到此类物品,可以认为这属于“困难”级别
  • Franka机器人在抽屉中的物品。此任务需要打开抽屉,将物品放入抽屉中并关闭。由于在预训练中没有类似的Franka机器人任务,故也认为这属于“困难”级别

作者在微调后将他们的模型与Open-VLA[24]和Octo [50]进行比较,它们也采用预训练和微调的方法。由于作者的目标是评估特定模型(而非架构),故使用这些模型的公开可用的预训练检查点,这些检查点是在OXE [10]上训练的,然后对每个任务进行微调

  • 此外,作者还与纯粹的ACT[57]和Diffusion Policy [9]进行比较,这些方法专门为从较小的数据集中学习灵活任务而设计。ACT和Diffusion Policy仅在微调数据集上进行训练,这些数据集的大小与ACT和Diffusion Policy实验中使用的各个数据集相似
  • 作者通过从他们的预训练基础模型进行微调以及从头开始训练来评估π0。此比较旨在评估π0架构和他们的预训练过程的单独优势
  • 作者假设具有VLM初始化的π0架构应该已经为各个任务提供了更强的起点,而预训练过程应该进一步提高其性能,尤其是在较小的微调数据集上

下图图11展示了各种方法在所有任务上的性能「其使用不同数量的数据进行微调。π0即使在数据量较少的情况下也能学习一些简单的任务,并且预训练模型通常比从头开始训练的模型获得更大的提升」,平均每个任务进行10次试验,每个任务使用不同数量的微调数据

作者在叠碗和微波炉中的塑料容器任务上包含了所有基线。由于OpenVLA和Octo的性能显著较差,他们仅在其中一个数据集大小上运行这些模型,因为在现实世界中评估如此多模型的时间成本很高。结果显示,π0通常优于其他方法

有趣的是,最强的先前模型是那些完全从头开始在目标任务上训练的模型,这表明在这些领域利用预训练对先前方法来说是一个重大挑战。虽然在塑料容器任务上π0的5小时策略表现与基线相似,但1小时版本明显更好。正如预期的那样,对于与预训练数据更相似的任务,预训练带来了更大的改进,尽管预训练模型通常优于非预训练模型,有时甚至高达两倍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/4594.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Golang--运算符

1、算术运算符 算术运算符: ,-,*,/,%,,--,对数值类型的变量进行运算 package mainimport ("fmt" )func main() {//算术运算符// - * / % --//号在golang中表示正号&…

论文阅读:DynamicDet: A Unified Dynamic Architecture for Object Detection

论文地址:[2304.05552] DynamicDet: A Unified Dynamic Architecture for Object Detection 代码地址:GitHub - VDIGPKU/DynamicDet: [CVPR 2023] DynamicDet: A Unified Dynamic Architecture for Object Detection 概要 本文提出了一种名为 DynamicD…

Flutter 正在切换成 Monorepo 和支持 workspaces

其实关于 Monorepo 和 workspaces 相关内容在之前《Dart 3.5 发布,全新 Dart Roadmap Update》 和 《Flutter 之 ftcon24usa 大会,创始人分享 Flutter 十年发展史》 就有简单提到过,而目前来说刚好看到 flaux 这个新进展,所以就再…

expand,None索引,permute【pytorch】

torch.expand 输入必须是一个向量或等价形式,扩展的最后一个维度与输入大小一致 当输入形状为(1,1,1,1,1,……,3)_4时。 expand的最后一位输入向量的元素个数(长度)(3&…

GEE | 对Landsat 8 影像进行缨帽变换

基于Landsat 8 影像的缨帽变换 var roi ee.FeatureCollection(users/yongweicao11/Dongguan2022); // Landsat 8 的缨帽变换系数矩阵var Landsat8TC ee.Array([[0.3029, 0.2786 , 0.4733, 0.5599, 0.5082, 0.1872],[-0.2941, -0.2435, -0.5424, 0.7276, 0.0713, -0.1608],[0.…

Obsidian的Vim插件设置配置全流程 -- 脱离鼠标拥抱Vim神教

Obsidian的Vim插件设置配置全流程 -- 脱离鼠标拥抱Vim神教 参考文章引言1. vim 及 vimrc 介绍2. 开启 Obsidian 内置的 Vim3. vimrc 插件的获取和安装4. vimrc 插件的设置5. vimrc 配置文件的设置附件 参考文章 vim 常见操作 Obsidian插件安装教程 引言 vim 很好用&#xff…

6.《双指针篇》---⑥和为S的两个数字(中等但简单)(牛客)

题目传送门 方法一:暴力解法。双循环 方法二:双指针(推荐) 1.定义一个顺序表,定义左右双指针 2.while循环。判断array[left] array[right] 的值。 3.若等于则将这两个值加入数组。并break 4.若大于则right-- 5.若小于…

LeetCode994. 腐烂的橘子(2024秋季每日一题 54)

在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格中没有…

【51蛋骗鸡一个独立按键控制流水灯开关】2022-1-18

缘由一个独立按键控制流水灯开关-编程语言-CSDN问答 #include<reg52.h>//头文件 sbit k1P3^7;// void main() //主函数 {unsigned char sj0, ls0;unsigned int ys0;P00;/*P0255;*/while(1){if(!k1&&!sj){if(!ls){ls1;/*P00;*/}else ls0;while(!k1);}if(…

shodan(五)连接Mongodb数据库Jenkinsorg、net、查看waf命令

声明&#xff1a;学习素材来自b站up【泷羽Sec】&#xff0c;侵删&#xff0c;若阅读过程中有相关方面的不足&#xff0c;还请指正&#xff0c;本文只做相关技术分享,切莫从事违法等相关行为&#xff0c;本人一律不承担一切后果 引言&#xff1a; 1.Shodan 是一个专门用于搜索连…

lvgl白屏问题(LCD长时间白屏)和优化lvgl

开机白屏时间过长 -- 这里我们不考虑是lvgl占的内存太大的问题&#xff0c;这里考虑的是为什么lcd屏幕启动后会有长时间的白屏。 首先我们要了解lvgl的相关操作&#xff0c;主要集中在一个函数中。只有程序执行到了这个函数&#xff0c;lvgl的屏幕才会显现出来 总结来说就是l…

公网ip和弹性公网ip有什么区别?哪个更好

公网ip和弹性公网ip有什么区别&#xff1f;公网IP和弹性公网IP都是用于互联网通信的IP地址&#xff0c;但它们在灵活性、成本和管理方式上有所不同。公网IP是直接分配给设备的静态IP地址&#xff0c;适用于需要固定外部访问的场景&#xff0c;但可能面临安全风险和设置复杂性。…

DevOps-课堂笔记

各种 aaS 类比于计算机网络的 OSI 参考模型&#xff0c;一个软件应用项目需要不同的支撑层&#xff0c;例如从下至上大概需要&#xff1a; 硬件层面的服务器针对硬件做弹性分配的虚拟化机制&#xff0c;例如虚拟机在虚拟化环境内运行的 OS支撑软件应用的中间件&#xff0c;例…

游戏想实习但定位不清的问题

国内的游戏大厂包括腾讯、网易、盛趣游戏、西山居、米哈游、莉莉丝、完美世界、游族、心动、叠纸、三七、TapTap、Tap4fun、字节跳动、哔哩哔哩、funplus、巨人、IGG、沐瞳等。而国外的游戏大厂则有育碧、EA、拳头、supercell、暴雪、R星、卡普空、任天堂、波兰蠢驴等。 一般来…

Dubbo使用Nacos作为注册中心

使用 Nacos 作为注册中心实现自动服务发现 本示例演示 Nacos 作为注册中心实现自动服务发现&#xff0c;示例基于 Spring Boot 应用展开&#xff0c;可在此查看 完整示例代码 1 基本配置 1.1 增加依赖 增加 dubbo、nacos-client 依赖&#xff1a; <dependencies><…

css基础

文章目录 基础 基础 配置网页的cion图标 在网站根目录下放置 favicon.ico 文件&#xff0c;浏览器在加载网页的时候会自动加载的。这个图片只能是 ico 格式&#xff0c;并且只能叫这个名字 如: css项目的根目录下 刷新网站没有生效&#xff0c;需要强制刷新&#xff0c;shif…

Lucene的Directory的详细使用与性能测试(6)

文章目录 第6章 Directory6.1 Directory介绍6.1.1 FSDirectory1&#xff09;SimpleFSDirectory&#xff1a;2&#xff09;NIOFSDirectory&#xff1a;3&#xff09;MMapDirectory&#xff1a;4&#xff09;FSDirectory子类对比 6.2.2 RAMDirectory 6.2 Directory性能测试环境搭…

HTML+javaScript+CSS

文章目录 HTMLjavaScriptCSS属性区块表单层叠样式表选择器常用属性盒子模型相关属性浮动float定位&#xff08;position&#xff09; JS操作节点事件点击事件onclick()聚焦事件、失焦事件鼠标移入移出事件 定时任务延迟定时任务重复定时任务 判断哪个单选框被选中设置按钮失效冒…

Linux系统每日定时备份mysql数据

一、创建存储脚本的文件夹 创建文件夹&#xff0c;我的脚本放在/root/dbback/mysql mkdir ... cd /root/dbback/mysql 二、编写脚本 vi backup_mysql.sh 复制脚本内容 DB_USER"填写用户名" DB_PASSWORD"填写密码" DB_NAME"数据库名称" # …

【计算机网络】零碎知识点(易忘 / 易错)总结回顾

一、计算机网络的发展背景 1、网络的定义 网络是指将多个计算机或设备通过通信线路、传输协议和网络设备连接起来&#xff0c;形成一个相互通信和共享资源的系统。 2、局域网 LAN 相对于广域网 WAN 而言&#xff0c;局域网 LAN 主要是指在相对较小的范围内的计算机互联网络 …