论文笔记(四十七)Diffusion Policy: Visuomotor Policy

Diffusion Policy: Visuomotor Policy

  • 文章概括
  • 摘要
  • 1. 介绍
  • 2. 扩散策略的公式化
    • 2.1 去噪扩散概率模型
    • 2.2 DDPM 训练
    • 2.3 用于视觉运动策略学习的扩散模型
  • 3 关键设计决策
    • 3.1 网络架构选项
    • 3.2 视觉编码器
    • 3.3 噪声计划
    • 3.4 加速实时控制的推理
  • 4. 扩散策略的四个引人入胜的特性
    • 4.1 建模多模态动作分布
    • 4.2 与位置控制的协同作用
    • 4.3 动作序列预测的好处
    • 4.4 训练稳定性
    • 4.5 与控制理论的联系
  • 5. 评估
    • 5.1 模拟环境和数据集
    • 5.2 评估方法论
    • 5.3 关键发现
    • 5.4 消融研究
  • 6 真实世界评估
    • 6.1 真实世界Push-T任务
    • 6.2 杯子翻转任务
    • 6.3 酱汁倒入和涂抹任务
  • 7. 实际双臂任务
    • 7.1 观察空间与动作空间
    • 7.2 远程操作
    • 7.3 双臂打蛋器任务
    • 7.5 双臂折叠衬衫任务
  • 8. 相关工作
  • 9. 限制与未来工作
  • 10. 结论
  • 11. 致谢
  • A 扩散政策实施细则
    • A.1 归一化
    • A.2 旋转表示
    • A.3 图像增强
    • A.4 超参数
    • A.5 数据效率
  • B 附加消融结果
    • B.1 观察范围
    • B.2 性能提升计算
  • C 现实世界任务细节
    • C.1 推块任务
      • C.1.1 演示
      • C.1.2 评估
    • C.2 酱料倒入和涂抹
      • C.2.1 演示
      • C.2.2 评估
  • D 实际实验设置细节
    • D.0.1 UR5 机器人站
    • D.1 Franka 机器人站
    • D.2 双手任务的初始和最终状态

文章概括

引用:

@article{chi2023diffusion,
  title={Diffusion policy: Visuomotor policy learning via action diffusion},
  author={Chi, Cheng and Feng, Siyuan and Du, Yilun and Xu, Zhenjia and Cousineau, Eric and Burchfiel, Benjamin and Song, Shuran},
  journal={arXiv preprint arXiv:2303.04137},
  year={2023}
}
Chi, C., Feng, S., Du, Y., Xu, Z., Cousineau, E., Burchfiel, B. and Song, S., 2023. Diffusion policy: Visuomotor policy learning via action diffusion. arXiv preprint arXiv:2303.04137.

原文:https://arxiv.org/abs/2303.04137
代码、数据和视频:https://diffusion-policy.cs.columbia.edu/


系列文章:
请在 《 《 文章 》 》 专栏中查找


摘要

本文介绍了Diffusion Policy,一种通过将机器人的视动策略表示为条件去噪扩散过程的新方法来生成机器人行为。我们在来自四个不同机器人操作基准的15个任务上对Diffusion Policy进行了基准测试,结果显示它在所有任务中表现优异,平均提高了46.9%。Diffusion Policy通过学习动作分布评分函数的梯度,并在推理过程中通过一系列随机Langevin动力学步骤迭代优化这一梯度场。我们发现,扩散公式在用于机器人策略时具有显著优势,包括优雅处理多模态动作分布、适用于高维动作空间,以及展现出令人印象深刻的训练稳定性。为了充分释放扩散模型在物理机器人视动策略学习中的潜力,本文提出了一系列关键技术贡献,包括引入递进视界控制、视觉条件和时间序列扩散变压器。我们希望这项工作能够激发新一代策略学习技术的发展,充分利用扩散模型强大的生成建模能力。代码、数据和训练细节可在https://diffusion-policy.cs.columbia.edu/获取。

关键词
模仿学习、视动策略、操作


1. 介绍

从示范中进行策略学习,其最简单的形式可以被表述为监督回归任务,即学习将观察映射为动作。然而,实际上,预测机器人动作的独特性质——如多模态分布的存在、序列相关性以及高精度要求——使得这一任务与其他监督学习问题相比具有独特性和挑战性。

以往的研究尝试通过探索不同的动作表示来应对这一挑战(图1a),如使用高斯混合模型【Mandlekar et al., 2021】、量化动作的分类表示【Shafiullah et al., 2022】,或者通过切换策略表示方式(图1b),从显式表示转为隐式表示,以更好地捕捉多模态分布【Florence et al., 2021; Wu et al., 2020】。

在本研究中,我们引入了一种新的机器人视动策略形式,通过机器人动作空间上的“条件去噪扩散过程”【Ho et al., 2020】生成行为,称为Diffusion Policy。在这种形式中,策略并不直接输出动作,而是根据视觉观测推断动作评分的梯度,进行K次去噪迭代(图1c)。这一公式使得机器人策略能够继承扩散模型的几个关键特性,从而显著提高性能。


在这里插入图片描述

图1. 策略表示. a) 显式策略使用不同类型的动作表示。b) 隐式策略学习一个由动作和观察条件化的能量函数,并通过优化最小化能量景观来确定动作。c) 扩散策略通过学习的梯度场将噪声逐步优化为动作。这种形式提供了稳定的训练过程,使得学习的策略能够准确建模多模态动作分布,并适应高维动作序列。

  • 表达多模态动作分布。通过学习动作评分函数的梯度【Song and Ermon, 2019】,并在该梯度场上执行随机Langevin动力学采样,Diffusion Policy能够表达任意可归一化分布【Neal et al., 2011】,其中包括多模态动作分布,这是策略学习中的一个众所周知的挑战。
  • 高维输出空间。正如其在图像生成中的出色表现所证明的,扩散模型在高维输出空间中展现了极佳的可扩展性。该特性使策略能够联合推断一系列未来动作,而非单步动作,这对于促进时间上的动作一致性和避免短视规划至关重要。
  • 稳定的训练。训练基于能量的策略通常需要通过负采样来估计不可处理的归一化常数,这已知会导致训练不稳定【Du et al., 2020; Florence et al., 2021】。Diffusion Policy通过学习能量函数的梯度,绕过了这一需求,从而在保持分布表达能力的同时,实现了稳定的训练。

我们的主要贡献是将上述优势引入机器人领域,并展示它们在复杂的现实世界机器人操作任务中的有效性。为了成功将扩散模型应用于视动策略学习,我们提出了以下技术贡献,这些贡献提升了Diffusion Policy的性能,并充分释放了其在物理机器人上的潜力:

  • 闭环动作序列。我们将策略预测高维动作序列的能力与递进视界控制相结合,以实现稳健的执行。该设计使策略能够以闭环方式持续重新规划其动作,同时保持时间上的动作一致性,达到长远规划与响应能力之间的平衡。
  • 视觉条件。我们引入了一个视觉条件扩散策略,其中视觉观测被视为条件,而不是联合数据分布的一部分。在这种形式中,策略在去噪迭代中只提取一次视觉表示,这大大减少了计算量并实现实时动作推断。
  • 时间序列扩散变压器。我们提出了一种新的基于变压器的扩散网络,旨在最小化典型CNN模型的过平滑效应,并在需要高频率动作变化和速度控制的任务中实现了最先进的性能。

我们在行为克隆框架下,系统地评估了Diffusion Policy在来自4个不同基准测试的15个任务中的表现【Florence et al., 2021; Gupta et al., 2019; Mandlekar et al., 2021; Shafiullah et al., 2022】。评估包括模拟和现实环境、2自由度到6自由度的动作、单任务和多任务基准测试、全驱动和欠驱动系统,以及刚性和流体物体,使用由单个和多个用户收集的示范数据。

通过实验,我们发现该策略在所有基准测试中表现出一致的性能提升,平均提高46.9%,这为Diffusion Policy的有效性提供了有力的证据。我们还提供了详细的分析,仔细检查了该算法的特性以及关键设计决策的影响。

这项工作是会议论文【Chi et al., 2023】的扩展版。我们在以下方面扩展了本文的内容:

  • 增加了关于扩散策略与控制理论之间联系的新讨论章节,见第4.5节。
  • 在模拟中加入了额外的消融研究,涉及替代网络架构设计以及不同的预训练和微调范式,见第5.4节。
  • 扩展了现实世界实验结果,增加了三个双手操作任务,包括搅蛋器、垫子展开和折衬衫,见第7节。

代码、数据和训练细节已公开,可用于复现我们的结果,访问链接为 https://diffusion-policy.cs.columbia.edu/


2. 扩散策略的公式化

我们将视动机器人策略表述为去噪扩散概率模型(DDPMs)【Ho et al., 2020】。关键是,扩散策略能够表达复杂的多模态动作分布,并且具有稳定的训练行为,几乎不需要针对任务的超参数调整。以下部分将详细介绍DDPMs,并解释如何将其适应用于表示视动策略。

2.1 去噪扩散概率模型

DDPMs是一类生成模型,其输出生成过程被建模为去噪过程,通常称为随机Langevin动力学【Welling and Teh, 2011】。

从高斯噪声采样得到初始的 x K \text{x}^K xK,DDPM执行 K K K次去噪迭代,生成一系列噪声逐渐减少的中间动作 x k , x k − 1 , . . . , x 0 \text{x}^k, \text{x}^{k−1}, ..., \text{x}^0 xk,xk1,...,x0,直到形成所需的无噪声输出 x 0 \text{x}^0 x0。该过程遵循以下方程:

x k − 1 = α ( x k − γ ε θ ( x k , k ) + N ( 0 , σ 2 I ) ) , (1) \mathbf{x}^{k-1} = \alpha (\mathbf{x}^{k} - \gamma \varepsilon_{\theta} (\mathbf{x}^{k}, k) + \mathscr{N}(0, \sigma^2 {I})), \tag{1} xk1=α(xkγεθ(xk,k)+N(0,σ2I)),(1)

其中 ε θ ε_θ εθ 是噪声预测网络,其参数 θ θ θ 将通过学习进行优化,而 N ( 0 , σ 2 I ) \mathscr{N}(0, \sigma^2 \mathbf{I}) N(0,σ2I) 是在每次迭代中添加的高斯噪声。

上述方程1也可以被解释为一次带噪声的梯度下降步骤:

x ′ = x − γ ∇ E ( x ) , (2) \mathbf{x}^′ =\mathbf{x}−γ∇E(x), \tag{2} x=xγE(x),(2)

噪声预测网络 ε θ ( x , k ) \varepsilon_\theta(\mathbf{x}, k) εθ(x,k) 有效地预测梯度场 ∇ E ( x ) \nabla E(\mathbf{x} ) E(x),其中 γ \gamma γ 是学习率。

选择 α \alpha α γ \gamma γ σ \sigma σ 作为迭代步骤 k k k 的函数,也被称为噪声调度,可以被解释为梯度下降过程中的学习率调度。Ho 等人 (2020) 证明,选择略小于 1 的 α \alpha α 可以提高稳定性。关于噪声调度的详细信息将在第 3.3 节中讨论。

2.2 DDPM 训练

训练过程从数据集中随机抽取未经修改的样本 x 0 \mathbf{x}^0 x0 开始。对于每个样本,我们随机选择一个去噪迭代步骤 k k k,然后为迭代步骤 k k k 采样具有适当方差的随机噪声 ε k \varepsilon^k εk。接下来,噪声预测网络需要从添加了噪声的数据样本中预测该噪声。

L = M S E ( ε k , ε θ ( x 0 + ε k , k ) ) (3) \mathscr{L} = MSE(\varepsilon^k, \varepsilon_\theta(\mathbf{x}^0 + \varepsilon^k, k)) \tag{3} L=MSE(εk,εθ(x0+εk,k))(3)

如 Ho 等人 (2020) 所示,最小化公式 (3) 中的损失函数也同时最小化了数据分布 p ( x 0 ) p(\mathbf{x}^0) p(x0) 和从 DDPM q ( x 0 ) q(\mathbf{x}^0) q(x0) 分布中抽取样本的分布之间的 KL 散度的变分下界(见公式 (1))。

2.3 用于视觉运动策略学习的扩散模型

虽然 DDPM 通常用于图像生成 ( x \mathbf{x} x 为图像),我们使用 DDPM 来学习机器人视觉运动策略。这需要在公式中进行两个主要的修改:

  1. 将输出 x \mathbf{x} x 改为表示机器人的动作。
  2. 使去噪过程依赖于输入的观察 O t O_t Ot

接下来的段落将讨论这些修改,图 2 展示了概述。


在这里插入图片描述

图 2. 扩散策略概述. a) 通用公式。在时间步 t t t,策略使用最近 T o T_o To 步的观察数据 O t O_t Ot 作为输入,并输出 T a T_a Ta 步的动作 A t A_t At。 b) 在基于 CNN 的扩散策略中,使用 Perez 等人 (2018) 提出的 FiLM(特征线性调制)对观察特征 O t O_t Ot 进行条件化处理,应用于每个卷积层的通道维度。开始时从高斯噪声中抽取 A t K A^K_t AtK,并逐步减去噪声预测网络 ε θ \varepsilon_\theta εθ 的输出,重复 K K K 次,直到得到 A t 0 A^0_t At0,即去噪后的动作序列。c) 在基于 Transformer 的扩散策略中,Vaswani 等人 (2017) 提出的 Transformer 架构中,观察 O t O_t Ot 的嵌入被传递到每个 Transformer 解码器块的多头交叉注意力层中。每个动作嵌入被限制为只能关注自身和之前的动作嵌入(因果注意力),并使用图中展示的注意力掩码进行约束。


闭环动作序列预测: 有效的动作规划应该鼓励长时间规划中的时间一致性和平滑性,同时允许对意外观察结果做出快速反应。为了实现这一目标,我们承诺在重新规划之前采用扩散模型生成的动作序列预测,持续固定时间。具体而言,在时间步 t t t,策略以最新的 T o T_o To步观察数据 O t O_t Ot为输入,预测 T p T_p Tp步动作,其中 T a T_a Ta步动作在机器人上执行而不进行重新规划。在这里,我们定义 T o T_o To为观察视野, T p T_p Tp为动作预测视野, T a T_a Ta为动作执行视野。这鼓励了时间上的动作一致性,同时保持响应性。关于 T a T_a Ta的影响的更多细节将在第4.3节中讨论。我们的公式还允许后退视野控制(Mayne和Michalska,1988)进一步改善动作的平滑性,通过用先前的动作序列预测来为下一个推理设置进行热启动。

视觉观察条件化: 我们使用DDPM来近似条件分布 p ( A t ∣ O t ) p(\mathbf{A}_t|\mathbf{O}_t) p(AtOt),而不是Janner等人(2022a)中用于规划的联合分布 p ( A t , O t ) p(\mathbf{A}_t, \mathbf{O}_t) p(At,Ot)。这种公式化允许模型根据观察结果预测动作,而不需要推断未来状态的成本,从而加快扩散过程并提高生成动作的准确性。为了捕捉条件分布 p ( A t ∣ O t ) p(\mathbf{A}_t|\mathbf{O}_t) p(AtOt),我们修改了方程1为:

A t k − 1 = α ( A t k − γ ε θ ( O t , A t k , k ) + N ( 0 , σ 2 I ) ) , (4) \mathbf{A}^{k-1}_t = \alpha (\mathbf{A}^{k}_t - \gamma \varepsilon_{\theta} (\mathbf{O}_t, \mathbf{A}^{k}_t, k) + \mathscr{N}(0, \sigma^2 {I})), \tag{4} Atk1=α(Atkγεθ(Ot,Atk,k)+N(0,σ2I)),(4)

训练损失从公式 3 修改为:

L = M S E ( ε k , ε θ ( O t , A t 0 + ε k , k ) ) (5) \mathscr{L} = MSE(\varepsilon^k, \varepsilon_\theta(\mathbf{O}_t,\mathbf{A}^0_t + \varepsilon^k, k)) \tag{5} L=MSE(εk,εθ(Ot,At0+εk,k))(5)

从去噪过程中输出中排除观察特征 O t O_t Ot 显著提高了推理速度,并更好地适应实时控制。它还使得视觉编码器的端到端训练成为可能。关于视觉编码器的详细信息在第 3.2 节中进行了描述。


3 关键设计决策

本节描述了 Diffusion Policy 的关键设计决策,以及 ε θ \varepsilon_{\theta} εθ 的神经网络架构的具体实现。

3.1 网络架构选项

第一个设计决策是选择 ε θ \varepsilon_{\theta} εθ 的神经网络架构。在这项工作中,我们考察了两种常见的网络架构类型,即卷积神经网络(CNNs)(Ronneberger 等,2015)和 Transformer(Vaswani 等,2017),并对它们的性能和训练特性进行了比较。需要注意的是,噪声预测网络 ε θ \varepsilon_{\theta} εθ 的选择是独立于视觉编码器的,视觉编码器将在 3.2 节中描述。

基于CNN的Diffusion Policy: 我们采用了来自Janner等人(2022b)的1D时间卷积神经网络(CNN),并做了一些修改:首先,我们通过对观察特征 O t \mathbf{O}_t Ot 进行条件化,使用Feature-wise Linear Modulation(FiLM)(Perez等,2018)以及去噪迭代 (k) 来建模条件分布 p ( A t ∣ O t ) p(\mathbf{A}_t | \mathbf{O}_t) p(AtOt),如图2(b)所示。其次,我们只预测动作轨迹,而不是拼接观察动作轨迹。第三,我们删除了基于修补的目标状态条件化,因为它与我们使用递归预测范围的框架不兼容。然而,目标条件化仍然可以使用与观测相同的FiLM条件化方法。

在实践中,我们发现基于CNN的骨干网络在大多数任务上无需大量超参数调整即可良好运行。然而,当所需的动作序列随时间迅速而剧烈变化时(例如速度命令动作空间),其表现较差,这可能是由于时间卷积的归纳偏向更倾向于低频信号(Tancik等,2020)。

时序扩散变压器 为了减少CNN模型中的过度平滑效应(Tancik等,2020),我们引入了一种新型基于变压器的DDPM,采用minGPT(Shafiullah等,2022)的变压器架构用于动作预测。带有噪声的动作 A t k A^k_t Atk作为输入令牌传递给变压器解码器模块,扩散迭代 k k k 的正弦嵌入作为第一个令牌预处理。观察值 O t \mathbf{O}_t Ot 通过一个共享的MLP转换为观察嵌入序列,然后作为输入特征传递给变压器解码器堆栈。每个解码器堆栈输出的对应令牌预测出“梯度” ε θ ( O t , A t k , k ) \varepsilon_{\theta}(\mathbf{O}_t, \mathbf{A}^k_t, k) εθ(Ot,Atk,k)

在基于状态的实验中,变压器骨干网络在大多数任务中表现最佳,尤其是在任务复杂性和动作变化率较高时。然而,我们发现变压器对超参数更加敏感。这种训练难度(Liu 等,2020)并非扩散策略独有的问题,未来有可能通过改进的变压器训练技术或增加数据规模来解决。

建议。 通常情况下,我们建议在尝试新任务时,首先使用基于CNN的扩散策略实现。如果由于任务复杂性或高频率动作变化导致性能较低,则可以考虑使用时序扩散变压器方法来提高性能,但需付出额外的参数调整成本。

3.2 视觉编码器

视觉编码器将原始图像序列映射到潜在嵌入 O t O_t Ot,并与扩散策略一起进行端到端训练。不同的摄像头视角使用独立的编码器,每个时间步的图像独立编码,然后将它们连接起来形成 O t O_t Ot。我们使用了标准的 ResNet-18(未进行预训练)作为编码器,并进行了以下修改:1) 将全局平均池化替换为空间 softmax 池化,以保留空间信息(Mandlekar 等,2021);2) 将 BatchNorm 替换为 GroupNorm(Wu 和 He,2018),以确保稳定的训练。这在与指数移动平均(He 等,2020)(通常用于 DDPMs)结合使用时非常重要。

3.3 噪声计划

噪声计划由 σ \sigma σ α \alpha α γ \gamma γ 以及添加的高斯噪声 ε k \varepsilon_k εk 作为 k k k 的函数来定义,这一领域已被 Ho 等人(2020)和 Nichol 与 Dhariwal(2021)深入研究。基础的噪声计划控制了扩散策略在捕捉动作信号中的高频和低频特性的能力。在我们的控制任务中,我们通过实验发现 iDDPM 中由 Nichol 和 Dhariwal(2021)提出的平方余弦计划(Square Cosine Schedule)在我们的任务中效果最佳。

3.4 加速实时控制的推理

我们将扩散过程用作机器人策略,因此对闭环实时控制来说,快速推理速度至关重要。去噪扩散隐式模型(DDIM)方法(Song 等,2021)将训练和推理中的去噪迭代次数解耦,从而允许算法在推理时使用更少的迭代次数以加快速度。在我们的现实实验中,使用100次训练迭代和10次推理迭代的DDIM,可以在Nvidia 3080 GPU上实现0.1秒的推理延迟。

4. 扩散策略的四个引人入胜的特性

在本节中,我们提供了一些关于扩散策略的见解和直觉,以及它相较于其他政策表征形式的优势。

4.1 建模多模态动作分布

在人类示范中建模多模态分布的挑战在行为克隆文献中被广泛讨论。扩散策略能够自然且精确地表达多模态分布,是其主要优势之一。

直观上,扩散策略中动作生成的多模态性来源于两个方面:基础的随机采样过程和随机初始化。在随机兰氏动力学中,初始样本 A t K \mathbf{A}^K_t AtK 是在每个采样过程开始时从标准高斯分布中抽取的,这有助于指定最终动作预测 A t 0 A^0_t At0 的不同可能收敛基。这一动作随后经过进一步随机优化,并在大量迭代中添加高斯扰动,使得个别动作样本能够收敛并在不同的多模态动作盆之间移动。图3展示了扩散策略在没有显式示范的情况下,在平面推送任务(Push T,下面会介绍)中的多模态行为示例。


在这里插入图片描述

图3. 多模态行为。 在给定状态下,末端执行器(蓝色)可以向左或向右推块。扩散策略学习了两种模式,并在每次滚动中仅承诺一种模式。相比之下,LSTM-GMM(Mandlekar等,2021)和IBC(Florence等,2021)都倾向于一种模式,而BET(Shafiullah等,2022)由于缺乏时间动作一致性而未能承诺单一模式。所生成的动作是从最佳表现的检查点滚动40步得到的。


4.2 与位置控制的协同作用

我们发现,使用位置控制动作空间的扩散策略(Diffusion Policy)在性能上始终优于使用速度控制的扩散策略,如图4所示。这个令人惊讶的结果与最近的行为克隆研究大多数依赖于速度控制的情况形成对比(Mandlekar等,2021;Shafiullah等,2022;Zhang等,2018;Florence等,2019;Mandlekar等,2020b,a)。我们推测,这一差异主要有两个原因:首先,动作的多模态性在位置控制模式下比在速度控制下更为明显。由于扩散策略比现有方法更好地表达了动作多模态性,我们推测它固有地不受这一缺陷的影响。此外,位置控制比速度控制更少受到累积误差影响,因此更适合于动作序列预测(如下一节讨论)。因此,扩散策略不仅较少受到位置控制主要缺陷的影响,而且更能利用位置控制的优势。


在这里插入图片描述
图4. 速度控制与位置控制。 切换从速度控制到位置控制时的性能差异。虽然BCRNN和BET的性能下降,但扩散策略能够利用位置控制的优势,从而提升其性能。


4.3 动作序列预测的好处

在大多数策略学习方法中,序列预测往往被避免,原因在于高维输出空间的有效采样存在困难。例如,IBC在有效采样高维动作空间时可能会遇到非平滑的能量景观。类似地,BC-RNN和BET在确定动作分布中存在的模式数量时也会遇到困难(这对于GMM或k-means步骤是必要的)。

相比之下,DDPM能够很好地扩展输出维度,而不牺牲模型的表现力,这在许多图像生成应用中得到了证明。利用这一能力,Diffusion Policy将动作表示为高维动作序列,自然地解决了以下问题:

  • 时间动作一致性:以图3为例。为了从底部将T块推入目标,策略可以从左侧或右侧绕过T块。然而,如果序列中的每个动作都被预测为独立的多模态分布(如BC-RNN和BET所做),那么连续的动作可能会从不同的模式中抽取,导致颤动的动作在两个有效轨迹之间交替。

  • 对闲置动作的鲁棒性:闲置动作发生在演示暂停时,导致一系列相同的位移动作或近零速度动作。这在远程操作中很常见,有时在像液体倒出这样的任务中是必需的。然而,单步策略容易过拟合这种暂停行为。例如,BC-RNN和IBC在真实世界实验中往往会卡住,当闲置动作没有被显式移除时,情况尤为严重。


在这里插入图片描述

图5. Diffusion Policy消融研究。每个任务相对于最大值的成功率变化(差异)显示在Y轴上。左侧:在选择动作视野时,时间一致性与响应性之间的权衡。右侧:具有位置控制的Diffusion Policy对延迟具有鲁棒性。延迟定义为从最后一帧观测到第一个可执行动作之间的步骤数。


4.4 训练稳定性

虽然理论上IBC应具备与扩散政策类似的优势,但在实际操作中,IBC由于固有的训练不稳定性而难以实现可靠和高性能的结果(Ta等,2022)。图6显示了训练过程中错误的剧烈波动和评估性能的不稳定性,使得超参数调整变得至关重要,而检查点选择也变得困难。因此,Florence等(2021)评估了每个检查点,并报告最佳表现检查点的结果。在实际环境中,这一工作流程需要在硬件上评估多个策略以选择最终策略。在这里,我们讨论了为什么Diffusion Policy在训练中表现出明显更高的稳定性。

隐式策略使用基于能量的模型(EBM)表示动作分布:

p θ ( a ∣ o ) = e − E θ ( o , a ) Z ( o , θ ) (6) p_θ(\mathbf{a}|\mathbf{o}) = \frac{e^{-E_θ(\mathbf{o},\mathbf{a})}}{Z(\mathbf{o},θ)} \tag{6} pθ(ao)=Z(o,θ)eEθ(o,a)(6)

其中 Z ( o , θ ) Z(\mathbf{o},θ) Z(o,θ) 是关于 a \mathbf{a} a 的难以处理的归一化常数。

为了训练用于隐式策略的 EBM,使用了类似 InfoNCE 的损失函数,这相当于第 6 式的负对数似然:

L i n f o N C E = − log ⁡ ( e − E θ ( o , a ) e − E θ ( o , a ) + ∑ j = 1 N n e g e − E θ ( o , a ~ j ) ) (7) \mathscr{L}_{infoNCE} = -\log( \frac{e^{-E_θ(\mathbf{o},\mathbf{a})}}{e^{-E_θ(\mathbf{o},\mathbf{a})}+∑_{j=1}^{N_{neg}} e^{-E_θ(\mathbf{o},\mathbf{\tilde{a}}^j)} }) \tag{7} LinfoNCE=log(eEθ(o,a)+j=1NnegeEθ(o,a~j)eEθ(o,a))(7)

其中一组负样本 { a ~ j } j = 1 N n e g \{\mathbf{\tilde{a}^j}\}^{N_{neg}}_{j=1} {a~j}j=1Nneg 被用来估计难以处理的归一化常数 Z ( o , θ ) Z(\mathbf{o},θ) Z(o,θ)。在实践中,负采样的不准确性已知会导致 EBM 训练的不稳定性(Du 等,2020;Ta 等,2022)。

扩散策略和 DDPM 避免了对 Z ( a , θ ) Z(\mathbf{a},θ) Z(a,θ) 的估计,通过建模同一动作分布的评分函数(Song 和 Ermon,2019)来实现第 6 式:

LaTeX 形式的公式为:

∇ a log ⁡ p ( a ∣ o ) = − ∇ a E θ ( a , o ) − ∇ a log ⁡ Z ( o , θ ) ⏟ = 0 ≈ − ε θ ( a ∣ o ) (8) \nabla_\mathbf{a} \log p(\mathbf{a}|\mathbf{o}) = - \nabla_\mathbf{a} E_\theta (\mathbf{a},\mathbf{o}) - \underset{= 0}{\underbrace{\nabla_\mathbf{a} \log Z(\mathbf{o}, \theta) }_{\text{}}} \approx - \varepsilon_\theta (\mathbf{a}|\mathbf{o}) \tag{8} alogp(ao)=aEθ(a,o)=0 alogZ(o,θ)εθ(ao)(8)

其中噪声预测网络 ε θ ( a ∣ o ) \varepsilon_\theta (\mathbf{a}|\mathbf{o}) εθ(ao) 近似于评分函数的负值 ∇ a log ⁡ p ( a ∣ o ) \nabla_\mathbf{a} \log p(\mathbf{a}|\mathbf{o}) alogp(ao)(Liu 等,2022),该评分函数与归一化常数 Z ( o , θ ) Z(\mathbf{o}, \theta) Z(o,θ) 无关。因此,扩散策略的推断(第 4 式)和训练(第 5 式)过程均不涉及评估 Z ( o , θ ) Z(\mathbf{o}, \theta) Z(o,θ),从而使扩散策略的训练更加稳定。


在这里插入图片描述

图 6. 训练稳定性。左侧:尽管训练损失平滑下降,但 IBC 难以以逐渐增加的准确性推断训练动作。右侧:IBC 的评估成功率波动,使得检查点选择变得困难(在模拟中使用策略回合进行评估)。


4.5 与控制理论的联系

当任务非常简单时,扩散策略具有简单的极限行为;这可能使我们能够运用控制理论中的一些严格理解。考虑一个我们希望控制的线性动态系统,标准状态空间形式如下:

s t + 1 = A s t + B a t + w t , w t ∼ N ( 0 , Σ w ) . ( ) \mathbf{s}_{t+1} = \mathbf{As}_t + \mathbf{Ba}_t + \mathbf{w}_t, \mathbf{w}_t ∼ \mathscr{N} (0,Σ_w). \tag{} st+1=Ast+Bat+wt,wtN(0,Σw).()

现在假设我们从一个线性反馈策略中获得演示(回放): a t = − K s t \mathbf{a}_t = -\mathbf{Ks}_t at=Kst。这个策略可以通过解决线性最优控制问题(例如线性二次调节器)来获得。模仿这个策略不需要扩散的建模能力,但作为一个理智检查,我们可以看到扩散策略是正确的。

特别地,当预测时域为一个时间步时, T p = 1 T_p = 1 Tp=1,可以看出,最优去噪器可以最小化

L = M S E ( ε k , ε θ ( s t , − K s t + ε k , k ) ) (9) \mathscr{L} = MSE(\varepsilon^k, \varepsilon_\theta(\mathbf{s}_t,\mathbf{-Ks}_t + \varepsilon^k, k)) \tag{9} L=MSE(εk,εθ(st,Kst+εk,k))(9)

ε θ ( s , a , k ) = 1 σ k [ a + K s ] , ( ) \varepsilon_\theta(\mathbf{s}, \mathbf{a}, k) = \frac{1}{\sigma_k}[\mathbf{a+Ks}], \tag{} εθ(s,a,k)=σk1[a+Ks],()

给出,其中 σ k \sigma_k σk 是去噪迭代 k k k 的方差。此外,在推断时,DDIM 采样将收敛到全局最小值 a = − K s \mathbf{a} = -\mathbf{K s} a=Ks

轨迹预测( T p > 1 T_p > 1 Tp>1)是自然而然的。为了预测 a t + t ′ \mathbf{a}_{t+t'} at+t 作为 s t \mathbf{s}_t st 的函数,最优去噪器将产生 a t + t ′ = − K ( A − B K ) t ′ s t \mathbf{a}_{t+t'} = -\mathbf{K(A - BK)}^{t'} \mathbf{s}_t at+t=K(ABK)tst;所有涉及 w t \mathbf{w}_t wt 的项在期望上为零。这表明,为了完美克隆依赖于状态的行为,学习者必须隐式学习一个(与任务相关的)动态模型(Subramanian 和 Mahajan,2019;Zhang 等,2020)。请注意,如果植物或策略是非线性的,那么预测未来动作可能会变得显著更具挑战性,再次涉及多模态预测。


5. 评估

我们系统地对15个任务进行了Diffusion Policy的评估,这些任务来自4个基准:Florence et al. (2021)、Gupta et al. (2019)、Mandlekar et al. (2021)和Shafiullah et al. (2022)。这个评估套件包括模拟和真实环境、单任务和多任务基准、完全驱动和欠驱动系统,以及刚性和流体物体。我们发现Diffusion Policy在所有测试的基准上始终优于之前的最先进技术,平均成功率提高了46.9%。在接下来的部分中,我们将提供每个任务的概述、我们在该任务上的评估方法以及我们的关键收获。

5.1 模拟环境和数据集

Robomimic(Mandlekar et al., 2021)是一个大规模的机器人操作基准,旨在研究模仿学习和离线强化学习。该基准由5个任务组成,每个任务都有一个熟练人类(PH)遥操作演示数据集,以及4个任务的混合熟练/非熟练人类(MH)演示数据集(共9个变体)。对于每个变体,我们报告基于状态和基于图像观察的结果。每个任务的属性在表3中进行了总结。


在这里插入图片描述
表3. 任务总结。 # Rob:机器人数量,# Obj:物体数量,ActD:动作维度,PH:熟练人类演示,MH:多熟练人类演示,Steps:最大回放步骤数,HiPrec:任务是否具有高精度要求。BlockPush使用1000个脚本化演示的回合。


推送任务改编自IBC(Florence et al., 2021),要求将一个T形块(灰色)推向一个固定目标(红色),使用一个圆形末端执行器(蓝色)。通过为T块和末端执行器随机设置初始条件来增加变异。该任务需要利用复杂且富有接触的物体动力学来精确推送T块,使用点接触。有两个变体:一个使用RGB图像观察,另一个使用从T块的真实姿态获得的9个二维关键点,均带有末端执行器位置的自我感知。

多模态块推送任务改编自BET(Shafiullah et al., 2022),此任务测试策略建模多模态动作分布的能力,通过将两个块推入两个方框(顺序无关)来完成。演示数据由一个脚本化的oracle生成,该oracle可以访问真实状态信息。该oracle随机选择一个初始块进行推送,并将其移动到随机选择的方框。剩余的块随后被推入剩余的方框。该任务包含长时间的多模态性,无法通过从观察到动作的单一函数映射来建模。

Franka Kitchen是一个流行的环境,用于评估IL和离线RL方法学习多个长时间任务的能力。该环境在Relay Policy Learning中提出(Gupta et al., 2019),包含7个交互对象,和一个人类演示数据集,其中包括566个完成4个任务的演示,演示任务的顺序是任意的。目标是尽可能执行多个演示任务,无论顺序如何,展示短时间和长时间的多模态性。

5.2 评估方法论

我们展示了每个基准中每种基线方法的最佳表现,数据来源包括我们复现的结果(LSTM-GMM)或原论文中报告的数字(BET、IBC)。我们报告了最后10个检查点的平均结果(每50个时期保存一次),基于3个训练种子和50个环境初始化(由于评估代码中的一个错误,Robomimic任务仅使用了22个环境初始化。这并未改变我们的结论,因为所有基线方法的评估方式相同。)(总共1500次实验的平均)。大多数任务的度量指标是成功率,除了Push-T任务使用目标区域覆盖率。此外,为了与各自原论文的评估方法保持一致,我们报告了Robomimic和Push T任务的最佳表现检查点的平均值(Mandlekar et al., 2021;Florence et al., 2021)。所有基于状态的任务训练4500个周期,基于图像的任务训练3000个周期。每种方法都使用其最佳表现的动作空间进行评估:Diffusion Policy使用位置控制,基线方法使用速度控制(动作空间的影响将在第5.3节详细讨论)。这些模拟基准的结果总结在表1和表2中。


在这里插入图片描述

表1. 行为克隆基准(状态策略) 我们以(最大性能)/(最后10个检查点的平均值)的格式展示了不同检查点选择方法的成功率,每个结果平均基于3个训练种子和50种不同的环境初始条件(总共150次)。LSTM-GMM对应于RoboMimic中的BC-RNN(Mandlekar et al., 2021),我们复现了该结果,并获得了略高于原论文的结果。我们的结果表明,Diffusion Policy显著提高了各项的最先进性能。



在这里插入图片描述

表2. 行为克隆基准(视觉策略) 性能以与表1相同的格式报告。LSTM-GMM的数字被复现,以便获得完整的评估,此外还报告了最佳检查点性能。Diffusion Policy在复杂任务(如Transport和ToolHang)上显示出一致的性能提升。


5.3 关键发现

在我们的模拟基准研究中(表1、2和4),Diffusion Policy在所有任务和变体上均优于替代方法,无论是基于状态还是视觉观察,平均提升达46.9%。以下段落总结了关键要点。


在这里插入图片描述

表4. 多阶段任务(状态观察)。 对于PushBlock,px是推送x个块到目标的频率。对于Kitchen,px是与x个或更多物体进行交互的频率(例如,底部燃烧器)。Diffusion Policy表现更佳,尤其是在Block Pushing的p2和Kitchen的p4等困难指标上,结果如我们的结果所示。


Diffusion Policy能够表达短时间的多模态性。 我们将短时间动作多模态性定义为实现同一即时目标的多种方式,这在人类演示数据中普遍存在(Mandlekar et al., 2021)。在图3中,我们展示了Push-T任务中这种短时间多模态性的案例研究。Diffusion Policy学会了从左侧或右侧同样可能地接近接触点,而LSTM-GMM(Mandlekar et al., 2021)和IBC(Florence et al., 2021)则表现出偏向一侧的倾向,BET(Shafiullah et al., 2022)则无法确定某种模式。

Diffusion Policy能够表达长时间的多模态性。 长时间多模态性是以不一致的顺序完成不同子目标。例如,在Block Push任务中推送特定块的顺序或在Kitchen任务中与7个可能对象进行交互的顺序都是任意的。我们发现Diffusion Policy能够很好地应对这种类型的多模态性;在这两个任务中,它的表现远超基线方法:在Block Push的p2指标上提升了32%,在Kitchen的p4指标上提升了213%。

Diffusion Policy能够更好地利用位置控制。 我们的消融研究(图4)表明,选择位置控制作为Diffusion Policy的动作空间显著优于速度控制。然而,我们评估的基线方法在速度控制下表现最佳(这在文献中得到了反映,现有大多数工作报告使用速度控制动作空间 Mandlekar et al. (2021); Shafiullah et al. (2022); Zhang et al. (2018); Florence et al. (2019); Mandlekar et al. (2020b,a))。

动作时间范围的权衡。 如第4.3节所讨论的,具有大于1的动作时间范围有助于策略预测一致的动作并补偿演示中的空闲部分,但过长的时间范围会因反应时间过慢而降低性能。我们的实验证实了这种权衡(图5左),发现8步的动作时间范围对我们测试的大多数任务是最优的。

对延迟的鲁棒性。 Diffusion Policy采用递归时间范围位置控制来预测未来一系列动作。这个设计有助于解决由图像处理、策略推断和网络延迟引起的延迟问题。我们的消融研究表明,Diffusion Policy能够在延迟达到4步时保持最佳性能(图5)。我们还发现,速度控制受到的延迟影响大于位置控制,这可能是由于累积误差的影响。

Diffusion Policy训练稳定性高。 我们发现,Diffusion Policy的最佳超参数在不同任务间基本一致。相比之下,IBC(Florence et al., 2021)容易出现训练不稳定的情况。这个特性在第4.4节中进行了讨论。

5.4 消融研究

我们探讨了在模拟的Robomimic方块任务中替代视觉编码器设计决策。具体而言,我们评估了3种不同的架构:ResNet-18、ResNet-34(He et al., 2016)和ViT-B/16(Dosovitskiy et al., 2020)。对于每种架构,我们评估了3种不同的训练策略:从头到尾的端到端训练、使用冻结的预训练视觉编码器,以及微调预训练视觉编码器(与策略网络相比,学习率降低10倍)。我们对ResNet使用ImageNet-21k(Ridnik et al., 2021)进行预训练,对ViT-B/16使用CLIP(Radford et al., 2021)进行预训练。在表5中,我们展示了基于熟练人类(PH)数据集的方块任务的定量比较。


在这里插入图片描述

表5. 视觉编码器比较 所有模型在Robomimic方块(PH)任务上使用基于CNN的Diffusion Policy进行训练。每个模型训练500个周期,并在50个不同的环境初始条件下每50个周期进行评估。


我们发现,从头开始训练ViT的挑战性很大(成功率仅为22%),这可能是由于数据量有限。我们还发现使用冻结的预训练视觉编码器训练性能较差,这表明Diffusion Policy更倾向于不同于流行预训练方法所提供的视觉表征。然而,我们发现以较小的学习率(比Diffusion Policy网络小10倍)微调预训练视觉编码器整体表现最佳。尤其是对于CLIP训练的ViT-B/16,在仅进行50个周期的训练后,其成功率达到了98%。总体而言,尽管不同架构之间存在显著的理论能力差距,但它们的最佳表现差异并不大。我们预计在复杂任务中,这种表现差距可能会更加明显。


在这里插入图片描述

表6. 真实世界Push-T实验。 a) 硬件设置。b) 任务示意图。机器人需要①将T形块推入目标区域,并②精确移动末端执行器到达终点区域。c) 用于计算本表中IoU指标的真实最终状态。表: 成功的定义是最终状态 IoU 大于演示数据集中的最小 IoU。平均事件持续时间以秒为单位。T-E2E 代表端到端训练有素的基于变压器的扩散策略



6 真实世界评估

我们在两个硬件设置下对Diffusion Policy在四个任务中的真实世界性能进行了评估,每个设置的训练数据来自不同的演示者。在真实世界的Push-T任务中,我们进行了消融研究,考察了Diffusion Policy在两种架构选项和三种视觉编码器选项上的表现;同时与两种基线方法进行了基准测试,包括位置控制和速度控制动作空间。在所有任务中,使用CNN骨干网络和端到端训练的视觉编码器的Diffusion Policy变体表现最佳。关于任务设置和参数的更多细节可以在补充材料中找到。

6.1 真实世界Push-T任务

真实世界的Push-T任务比模拟版本难得多,主要有三个修改:1. 真实世界的Push-T任务是多阶段的,要求机器人①将T形块推入目标,然后②将末端执行器移动到指定的终点区域以避免遮挡。2. 策略需要进行细微调整,确保T形块完全在目标区域内,然后才能前往终点区域,增加了短期多模态性。3. IoU指标在最后一步测量,而不是在所有步骤中取最大值。我们通过人类演示数据集中达到的最小IoU阈值来确定成功率。我们的UR5实验设置如图6所示。Diffusion Policy以10 Hz预测机器人指令,并将这些指令线性插值到125 Hz以供机器人执行。

结果分析
与表现最好的 IBC 和 LSTM-GMM 变体的 0% 和 20% 成功率相比,扩散策略的表现接近人类水平,成功率为 95%,平均 IoU 为 0.8 v.s. 0.84。图7定性展示了每种方法从相同初始条件开始的行为。我们观察到,在阶段之间的过渡期间,基线方法的常见失败案例是性能较差,因为在这些部分存在较高的多模态性和模糊的决策边界。在20次评估中,LSTM-GMM在8次中卡在T形块附近(第三行),而IBC在6次中过早离开了T形块(第四行)。由于任务要求,我们没有遵循常见的从训练数据中删除空闲动作的做法,这也导致LSTM和IBC在小动作上过拟合并在任务中卡住。可以通过补充材料中的视频更好地欣赏结果。


在这里插入图片描述

图 7. 真实世界的 Push-T 比较。 第 1-4 列显示的是基于关键事件的行动轨迹。最后一列显示最终状态的平均图像。A:扩散策略(End2End)实现了更准确、更一致的结束状态。B: 扩散策略(R3M)最初会卡住,但后来恢复并完成了任务。C: LSTM-GMM 在调整 T 区块时无法到达终点区域,阻挡了评估摄像机视图。D: IBC 提前结束了推动阶段。


端到端与预训练视觉编码器的比较 我们测试了使用预训练视觉编码器的Diffusion Policy(ImageNet(Deng et al., 2009)和R3M(Nair et al., 2022)),如表6所示。使用R3M的Diffusion Policy达到了80%的成功率,但预测的动作抖动且更容易卡住,与端到端训练的版本相比。使用ImageNet的Diffusion Policy结果不尽如人意,动作突兀且性能差。我们发现,端到端训练仍然是将视觉观察融入Diffusion Policy的最有效方式,我们表现最佳的模型均为端到端训练。

对扰动的鲁棒性 Diffusion Policy对视觉和物理扰动的鲁棒性在与表6中的实验不同的一次实验中进行了评估。如图8所示,施加了三种类型的扰动:1)前摄像头被挥动的手阻挡3秒(左列),尽管Diffusion Policy表现出一些抖动,但仍保持在正确轨道上并将T形块推入位置。2)在Diffusion Policy对T形块位置进行微调时,我们移动了T形块,Diffusion Policy立即重新规划,从相反方向推,消除了扰动的影响。3)在第一阶段完成后,机器人前往终点区域时,我们移动了T形块。Diffusion Policy立即改变路线,将T形块调整回目标位置,然后继续前往终点区域。这次实验表明,Diffusion Policy可能能够对未见观察进行合成新行为。


在这里插入图片描述

图 8. 扩散策略的鲁棒性测试。 左图: 在摄像头前挥手 3 秒钟会导致轻微抖动,但预测动作仍能按预期运行。中图: 在推动阶段,扩散策略会立即将移动的木块位置修正到目标状态。右图: 策略在检测到区块移动时,会立即中止向终点区的前进,将区块恢复到目标状态。这一新颖行为从未演示过。请查看补充材料中的视频。


6.2 杯子翻转任务

杯子翻转任务旨在测试扩散策略在接近硬件运动学极限时处理复杂三维旋转的能力。目标是将随机放置的杯子重新定向,使其①杯口朝下② 把手指向左侧,如图9所示。根据杯子的初始姿态,演示者可能会直接将杯子放置到所需的方向,或者可能需要额外推动把手来旋转杯子。因此,演示数据集具有高度的多模态性:握取与推动、不同类型的握取(正手握与反手握)或局部握取调整(围绕杯子主轴的旋转),这些都对基线方法的捕捉能力提出了特别的挑战。

结果分析
扩散策略能够以90%的成功率完成此任务,基于20次试验。捕获行为的丰富性最好通过视频进行展示。尽管从未演示过,该策略也能够在必要时为把手对齐进行多个推动序列或重新抓取掉落的杯子。为了进行比较,我们还训练了一个使用相同数据子集的LSTM-GMM策略。在20个同类初始条件下,LSTM-GMM策略在与杯子对齐方面始终失败,并且在所有试验中均未能成功抓取。


在这里插入图片描述

图9. 六自由度杯子翻转任务。机器人需要 1 拿起随机放置的杯子并将其放置杯口朝下(标记为橙色)。2 旋转杯子,使其把手指向左侧。


6.3 酱汁倒入和涂抹任务

酱汁倒入和涂抹任务旨在测试扩散策略处理非刚性物体、六自由度动作空间和真实环境中周期性动作的能力。我们的Franka Panda设置和任务如图10所示。六自由度倒入任务的目标是将一勺满的酱汁倒在披萨面团的中心,性能通过倒入的酱汁掩码与披萨面团中心的名义圆形之间的交并比(IoU)来衡量(如图10中的绿色圆圈所示)。周期性涂抹任务的目标是在披萨面团上涂抹酱汁,性能通过酱汁覆盖率来衡量。评估过程中,面团和酱汁碗的位置随机变化。成功率通过与最低人类性能的阈值进行计算。结果最好通过补充视频观看。这两个任务均使用相同的Push-T超参数进行训练,并在第一次尝试中实现了成功的策略。


在这里插入图片描述

图10. 真实世界的酱汁操作。[左] 六自由度倒入任务。机器人需要 ① 将勺子浸入碗中舀取酱汁,②接近披萨面团的中心,③倒入酱汁,④提起勺子完成任务。[右] 周期性涂抹任务。机器人需要 ① 用抓住的汤匙接近酱汁中心,② 按螺旋模式涂抹酱汁覆盖披萨,③ 提起汤匙完成任务。


酱汁倒入任务要求机器人在一段时间内保持静止,以便用粘稠的番茄酱填充勺子。由于产生的空闲动作被认为对行为克隆算法具有挑战性,因此通常会被避免或过滤。在倒入过程中,需要进行细微调整以确保覆盖并达到所需形状。

演示的酱汁涂抹策略受人类厨师技术的启发,要求长时间的周期性模式以最大化覆盖率,以及短时间的反馈以实现均匀分布(因为使用的番茄酱通常会以不可预测的大小滴落)。周期性动作被认为难以学习,因此通常通过专门的动作表示来解决。两个任务都要求策略通过提起勺子/汤匙来自我终止。

结果分析
扩散策略在两个任务上都达到了接近人类的表现,倒入任务的覆盖率为0.74,对比0.79,涂抹任务的覆盖率为0.77,对比0.79。扩散策略在倒入和涂抹过程中优雅地应对了外部扰动,例如手动移动披萨面团。结果最好通过补充材料中的视频进行欣赏。

LSTM-GMM在酱汁倒入和涂抹任务上的表现较差。在20次倒入试验中,有15次未能成功提起勺子。即使成功提起勺子,酱汁的倒入也偏离了中心。LSTM-GMM在所有试验中未能自我终止。我们怀疑LSTM-GMM的隐藏状态未能捕获足够长的历史,以区分任务中的勺子浸入和提起阶段。在酱汁涂抹任务中,LSTM-GMM在开始后总是立即提起汤匙,并且在20次实验中未能与酱汁接触。


7. 实际双臂任务

除了单臂设置之外,我们还展示了在几个具有挑战性的双臂任务中应用扩散策略。为了实现双臂任务,大部分工作集中在扩展我们的机器人技术栈,以支持多臂远程操作和控制。扩散策略在这些任务中无需超参数调整就能直接使用。

7.1 观察空间与动作空间

本体感知的观察空间扩展为包括两个末端执行器的姿态以及两个夹爪的宽度。我们还扩展了观察空间,涵盖这些量的实际值和期望值。图像观察空间包括两个场景摄像头和两个腕部摄像头,每个摄像头分别安装在一只手臂上。动作空间则扩展为包括两个末端执行器的期望姿态以及两个夹爪的期望宽度。

7.2 远程操作

在这些协调的双臂任务中,我们发现同时使用两个SpaceMouse进行操作对演示者来说非常具有挑战性。因此,我们实施了两种新的远程操作模式:使用Meta Quest Pro VR设备和两个手持控制器,或使用两台带有双边位置耦合的Haption Virtuose™ 6D HF TAO触觉设备进行控制(如Siciliano等人(2008)的触觉部分简要描述的)。这种耦合是在Haption设备和Franka Panda手臂之间进行的。关于控制器本身的更多详细信息可在附录D.1节中找到。以下为每个任务及策略性能的详细说明。

7.3 双臂打蛋器任务

双臂打蛋器任务的演示如图11所示,使用的是OXO™打蛋器和Room Essentials™塑料碗。我们选择此任务来说明触觉反馈在远程操作双臂操作中的重要性,即使是像工具协调使用这样的日常任务也是如此。没有触觉反馈的情况下,专家在10次尝试中一次也未能成功完成任务。5次失败是因为机器人将打蛋器的曲柄拔出,3次失败是因为机器人失去了对曲柄的抓握,2次失败是因为机器人触发了扭矩限制。相比之下,同一位操作员在有触觉反馈的情况下能够轻松完成任务,10次尝试均成功。使用触觉反馈使演示速度更快,质量也高于没有反馈时。


在这里插入图片描述

图11. 双臂打蛋器操作
机器人需要完成以下步骤:

  1. 将碗推到合适位置(仅在碗离左臂太近时需要);
  2. 右臂靠近并抓取打蛋器;
  3. 将打蛋器放入碗中;
  4. 靠近并抓住打蛋器的曲柄手柄;
  5. 转动曲柄至少三圈。

结果分析
扩散策略在20次试验中成功率为55%,通过210次演示训练得出。主要失败模式是打蛋器初始位置超出了策略的操作范围,或者未能抓住打蛋器的曲柄或失去了抓握。所有实验的初始状态和最终状态如图18和19所示。


在这里插入图片描述
图18. 打蛋器任务的初始状态
图19. 打蛋器任务的最终状态


## 7.4 双臂铺垫任务 铺垫任务如图12所示,使用的是XXL Dog Buddy™狗垫。由于该任务不需要丰富的触觉反馈,因此通过VR设备进行远程操作。我们教授该技能为双手通用的,意味着根据初始条件,机器人可以向左或向右铺开垫子。

在这里插入图片描述

图12. 双臂卷垫子任务
机器人需要完成以下步骤:

  1. 使用左臂或右臂抓起垫子的一侧(如有需要);
  2. 提起并展开垫子(如有需要);
  3. 确保同时抓住垫子的两侧;
  4. 提起垫子;
  5. 将垫子放置在桌面上,基本保持居中;
  6. 松开垫子。

结果分析
扩散策略在20次试验中成功率为75%,通过162次演示训练得出。主要失败模式是在初次抓取垫子时错过抓取,导致策略无法纠正自身,从而陷入重复同一行为的困境。所有实验的初始状态和最终状态如图16和17所示。


在这里插入图片描述
图 16. 垫子展开的初始状态
图 17. 垫子展开的最终状态


7.5 双臂折叠衬衫任务

如图13所示,衬衫折叠任务使用了一件短袖T恤。该任务同样通过VR设备进行远程操作,因为不需要丰富的反馈来完成任务。由于运动学和工作空间的限制,该任务明显更耗时,可能需要多达九个离散步骤。最后几步要求两个夹爪非常靠近,这时我们的中层控制器需要明确处理碰撞避免,这对于远程操作和策略展开都非常重要。


在这里插入图片描述

图13. 双臂折叠衬衫任务
机器人需要完成以下步骤:

  1. 靠近并同时抓住最靠近的袖子;
  2. 折叠袖子并松开;
  3. 如有需要,拖动衬衫使其更靠近;
  4. 靠近并同时抓住另一只袖子;
  5. 折叠袖子并松开;
  6. 将衬衫调整到适合折叠的位置;
  7. 抓住衬衫的领口并将其折叠一半;
  8. 拖动衬衫;
  9. 整理衬衫并将两臂移开。

结果分析
扩散策略在20次试验中成功率为75%,通过284次演示训练得出。主要的失败模式包括初始折叠时错过抓取(例如袖子和衣领部分),以及策略在任务最后无法停止调整衬衫。所有实验的初始状态和最终状态如图20和21所示。


在这里插入图片描述

图20. 叠衣任务的初始状态
图21. 叠衣任务的最终状态



8. 相关工作

在无需显式编程行为的情况下创造出能力强大的机器人,是机器人领域的长期挑战【Atkeson和Schaal (1997); Argall等人 (2009); Ravichandar等人 (2020)】。尽管概念上简单,但行为克隆(Behavior Cloning,BC)在一系列真实世界的机器人任务中展现了令人惊讶的潜力,包括操控任务【Zhang等人 (2018); Florence等人 (2019); Mandlekar等人 (2020b,a); Zeng等人 (2021); Rahmatizadeh等人 (2018); Avigal等人 (2022)】和自动驾驶任务【Pomerleau (1988); Bojarski等人 (2016)】。当前的行为克隆方法可以根据策略的结构分为两类。

显式策略(Explicit Policy)
显式策略的最简单形式是直接将世界状态或观测值映射为动作【Pomerleau (1988); Zhang等人 (2018); Florence等人 (2019); Ross等人 (2011); Toyer等人 (2020); Rahmatizadeh等人 (2018); Bojarski等人 (2016)】。它们可以通过直接的回归损失进行监督学习,并通过一次前向传播实现高效推理时间。然而,这种类型的策略不适合处理多模态的演示行为,并且在高精度任务中表现不佳【Florence等人 (2021)】。一种流行的解决方案是在保持动作直接映射简洁性的前提下,将回归任务转化为分类任务,方法是将动作空间离散化【Zeng等人 (2021); Wu等人 (2020); Avigal等人 (2022)】。然而,随着维度的增加,近似连续动作空间所需的桶(bins)数量呈指数增长。另一种方法是结合分类分布和高斯分布,通过使用MDN(混合密度网络)【Bishop (1994); Mandlekar等人 (2021)】或聚类与偏移预测【Shafiullah等人 (2022); Sharma等人 (2018)】来表示连续多模态分布。然而,这些模型往往对超参数调优非常敏感,容易出现模式崩溃(mode collapse),并且仍然难以表现出高精度的行为【Florence等人 (2021)】。

隐式策略(Implicit Policy)
隐式策略【Florence等人 (2021); Jarrett等人 (2020)】通过使用能量基模型(EBM)【LeCun等人 (2006); Du和Mordatch (2019); Dai等人 (2019); Grathwohl等人 (2020); Du等人 (2020)】为动作定义分布。在这种设置中,每个动作都会被分配一个能量值,动作预测对应于寻找最小能量动作的优化问题。由于不同的动作可能会被分配低能量值,隐式策略自然可以表示多模态分布。然而,现有的隐式策略【Florence等人 (2021)】在训练中不稳定,因为在计算底层的Info-NCE损失时需要抽取负样本。

扩散模型(Diffusion Models)
扩散模型是概率生成模型,通过逐步从随机采样的噪声中提取潜在分布样本来进行预测。它们也可以从概念上理解为学习隐式动作分数的梯度场,并在推理过程中优化该梯度。扩散模型【Sohl-Dickstein等人 (2015); Ho等人 (2020)】最近被应用于解决各种控制任务【Janner等人 (2022a); Urain等人 (2022); Ajay等人 (2022)】。

特别地,Janner等人【(2022a)】和Huang等人【(2023)】探讨了如何在规划中使用扩散模型,推导出可以在给定环境中执行的动作轨迹。在强化学习的背景下,Wang等人【(2022)】使用扩散模型进行策略表示和正则化处理基于状态的观测。与此相对,在这项工作中,我们探索了如何在行为克隆的背景下有效应用扩散模型,从而实现高效的视觉运动控制策略。为构建有效的视觉运动控制策略,我们提出将DDPM的高维动作序列预测能力与闭环控制相结合,提出了一种新的基于变压器的动作扩散架构,并提出了将视觉输入整合到动作扩散模型中的方法。

Wang等人【(2023)】探讨了如何使用从专家演示中学习的扩散模型来增强经典显式策略,而不直接利用扩散模型作为策略表示。

与我们工作同时进行的,Pearce等人【(2023)】、Reuss等人【(2023)】和Hansen-Estruch等人【(2023)】对模拟环境中的扩散策略进行了互补的分析。虽然他们更侧重于有效的采样策略,利用无分类器指导的目标条件方法及其在强化学习中的应用,但我们更关注有效的动作空间。我们的经验发现与模拟环境中的结果大致一致。此外,我们的大量真实世界实验为一系列重要设计决策提供了强有力的证据,包括回缩预测方案、速度和位置控制的选择,以及实时推理的优化等,这对于物理机器人系统来说至关重要。


9. 限制与未来工作

尽管我们在模拟和真实系统中展示了扩散策略的有效性,但未来的工作仍可改进其局限性。首先,我们的实现继承了行为克隆的局限性,例如在示范数据不足时的次优表现。扩散策略可以应用于其他范式,例如强化学习【Wang等人 (2023); Hansen-Estruch等人 (2023)】,以利用次优和负面数据。其次,扩散策略相比于简单的方法(如LSTM-GMM)具有更高的计算成本和推理延迟。我们提出的动作序列预测方法部分减轻了这个问题,但可能不足以应对需要高频率控制的任务。未来的工作可以利用扩散模型加速方法的最新进展,减少所需的推理步骤,如新的噪声计划【Chen (2023)】、推理求解器【Karras等人 (2022)】和一致性模型【Song等人 (2023)】。


10. 结论

在这项工作中,我们评估了基于扩散模型的策略在机器人行为中的可行性。通过对15项任务在模拟和真实世界中的全面评估,我们展示了基于扩散模型的视觉运动策略在各方面都明显优于现有方法,并且具有稳定性和易于训练的特点。我们的结果还突出了关键的设计因素,包括回缩动作预测、末端执行器位置控制以及高效的视觉调节,这些对于充分发挥扩散模型策略的潜力至关重要。尽管行为克隆策略的最终质量受多种因素影响——包括演示的质量与数量、机器人的物理能力、策略架构和预训练机制——我们的实验结果强烈表明,策略结构在行为克隆过程中是性能瓶颈的一个重要因素。我们希望这项工作能够推动该领域的进一步探索,并强调在行为克隆过程中需要全面考虑的各个方面,而不仅仅是用于策略训练的数据。


11. 致谢

我们要感谢Naveen Kuppuswamy、Hongkai Dai、Aykut Onol、Terry Suh、Tao Pang、Huy Ha、Samir Gadre、Kevin Zakka和Brandon Amos的深入讨论。感谢Jarod Wilson的3D打印支持,感谢Huy Ha提供摄影和灯光建议。我们感谢Xiang Li在GitHub上发现了评估代码中的错误。
资金支持
本研究得到了丰田研究所、NSF CMMI-2037101和NSF IIS-2132519的支持。我们还要感谢Google提供的UR5机器人硬件。本文所包含的观点和结论仅代表作者个人观点,不应被解释为赞助商的官方政策。


A 扩散政策实施细则

A.1 归一化

适当地归一化动作数据对 Diffusion Policy 的最佳性能至关重要。将每个动作维度独立地缩放到 ([-1, 1]) 在大多数任务中效果良好。由于 DDPM 在每次迭代中将预测值裁剪到 ([-1, 1]) 以确保稳定性,因此常见的零均值单位方差归一化会导致某些区域的动作空间无法访问。当数据方差较小(例如,接近常数值)时,将数据移至零均值而不进行缩放,以防止数值问题。与旋转表示(例如四元数)对应的动作维度保持不变。

A.2 旋转表示

对于所有具有速度控制动作空间的环境,我们遵循 Mandlekar 等(2021)的标准做法,使用 3D 轴角表示法来处理动作的旋转组件。由于速度动作命令通常接近于 0,轴角表示的奇异性和不连续性通常不会造成问题。我们对所有具有位置控制动作空间的环境(包括真实世界和模拟环境)使用 Zhou 等(2019)提出的 6D 旋转表示法。

A.3 图像增强

遵循 Mandlekar 等(2021)的做法,我们在训练期间使用随机裁剪增强。每个任务的裁剪大小在表 7 中列出。在推理阶段,我们采用与训练阶段相同大小的静态中心裁剪。

A.4 超参数

表 7 和表 8 中展示了在模拟和真实世界基准测试中用于 Diffusion Policy 的超参数。由于 Block Push 任务使用马尔可夫脚本化的 Oracle 策略生成示例数据,我们发现其观察和动作时间范围的最佳超参数与其他使用人类远程操作示例的任务非常不同。


在这里插入图片描述

表7. 基于CNN的扩散策略控制的超参数:位置或速度控制

  • To: 观测时间范围
  • Ta: 动作时间范围
  • Tp: 动作预测时间范围
  • ImgRes: 环境观测分辨率(相机视角宽x高)
  • CropRes: 随机裁剪分辨率
  • #D-Params: 扩散网络参数数量(以百万为单位)
  • #V-Params: 视觉编码器参数数量(以百万为单位)
  • Lr: 学习率
  • WDecay: 权重衰减
  • D-ItersTrain: 训练扩散的迭代次数
  • D-ItersEval: 推理扩散的迭代次数(由DDIM等人提出,2021年)

在这里插入图片描述

表8. 基于Transformer的扩散策略控制的超参数:位置或速度控制

  • To: 观测时间范围
  • Ta: 动作时间范围
  • Tp: 动作预测时间范围
  • #D-Params: 扩散网络参数数量(以百万为单位)
  • #V-Params: 视觉编码器参数数量(以百万为单位)
  • EmbDim: Transformer的令牌嵌入维度
  • AttnDrp: Transformer的注意力丢弃概率
  • Lr: 学习率
  • WDecay: 权重衰减(仅针对Transformer)
  • D-ItersTrain: 训练扩散的迭代次数
  • D-ItersEval: 推理扩散的迭代次数(由DDIM等人提出,2021年)

我们发现 CNN 基于的 Diffusion Policy 的最佳超参数在各任务中是一致的。相比之下,基于变压器的 Diffusion Policy 的最佳注意力 dropout 率和权重衰减在不同任务间变化很大。在调整过程中,我们发现增加 CNN 基于的 Diffusion Policy 的参数数量总能提高性能,因此最佳模型大小受到可用计算和内存容量的限制。另一方面,增加基于变压器的 Diffusion Policy 的模型大小(特别是层数)有时会损害性能。对于基于 CNN 的 Diffusion Policy,我们发现使用 FiLM 条件来传递观察比在所有任务中进行图像修复效果更好,除了 Push-T。在表 1 中报告的 Push-T 上的 DiffusionPolicy-C 性能使用了图像修复而不是 FiLM。

对于模拟基准测试,我们使用了 iDDPM 算法(Nichol 和 Dhariwal,2021),在训练和推理中都使用相同的 100 次去噪扩散迭代。我们在真实世界基准测试中使用 DDIM(Song 等,2021)将推理去噪迭代减少到 16,从而减少推理延迟。对于所有基于状态的实验,

我们使用批大小为 256,所有基于图像的实验使用批大小为 64。学习率调度使用余弦调度和线性预热。基于 CNN 的 Diffusion Policy 预热 500 步,而基于变压器的 Diffusion Policy 预热 1000 步。

A.5 数据效率

我们发现 Diffusion Policy 在每个训练数据集大小上均优于 LSTM-GMM(Mandlekar 等,2021),如图 15 所示。


在这里插入图片描述

图15. 数据效率消融研究。 Diffusion Policy在每个训练数据集规模下的表现都优于LSTM-GMM Mandlekar等人(2021年)。



B 附加消融结果

B.1 观察范围

我们发现基于状态的扩散策略对观察范围不敏感,如图14所示。然而,基于视觉的扩散策略,特别是使用CNN骨干网的变体,随着观察范围的增加,其性能有所下降。在实际应用中,我们发现观察范围为2对大多数任务来说适合,无论是状态观察还是图像观察。


在这里插入图片描述

图14. 观察视野消融研究。基于状态的扩散策略对观察视野不敏感。基于视觉的扩散策略更倾向于选择低于但大于1的观察视野,2是大多数任务的良好折衷。


B.2 性能提升计算

对于表1、表2和表4中报告的每个任务i(忽略mh结果),我们找到基线方法的最大性能 m a x _ b a s e l i n e i {max\_baseline}_i max_baselinei和扩散策略变体(CNN与Transformer)的最大性能 m a x _ o u r s i {max\_ours}_i max_oursi。对于每个任务,性能提升计算为:

i m p r o v e m e n t i = m a x _ o u r s i − m a x _ b a s e l i n e i m a x _ b a s e l i n e i {improvement}_i = \frac{{max\_ours}_i - {max\_baseline}_i}{{max\_baseline}_i} improvementi=max_baselineimax_oursimax_baselinei

(对所有任务均为正值)。最后,平均提升计算为:

a v g _ i m p r o v e m e n t = 1 N ∑ N i i m p r o v e m e n t i = 0.46858 ≈ 46.9 % {avg\_improvement} = \frac{1}{N} \sum_{N}^{i}{improvement}_i = 0.46858 \approx 46.9\% avg_improvement=N1Niimprovementi=0.4685846.9%


C 现实世界任务细节

C.1 推块任务

C.1.1 演示

收集了136个演示样本,用于训练。初始条件通过随机推或扔T块到桌子上进行变化。在这次数据收集之前,操作者已经执行了这个任务很多小时,应该被视为该任务的熟练者。

C.1.2 评估

我们为每种方法使用了固定的训练时间12小时,并选择了每种方法的最后一个检查点,除了IBC,由于IBC的训练稳定性问题,选择了具有最低训练集动作预测均方误差(MSE)的检查点。训练和检查点选择的难度在主文本图7中展示。每种方法评估20个回合,所有回合都从相同的初始条件集开始。为了确保初始条件的一致性,我们根据从顶视相机获取的叠加图像仔细调整了T块和机器人的姿态。每个评估回合在以下任一情况下终止:末端执行器在终点区域内保持超过0.5秒,或达到60秒的时间限制。IoU指标直接在顶视相机像素空间中计算。

C.2 酱料倒入和涂抹

C.2.1 演示

收集了50个演示样本,其中90%用于每个任务的训练。对于倒入任务,披萨面团和酱料碗的初始位置会有所变化。每次演示后,酱料会倒回碗中,面团会被擦拭干净。对于涂抹任务,披萨面团的位置以及倒入酱料的形状会有所变化。重置时,我们手动将酱料聚集到面团中心,并擦拭干净剩余的面团。在涂抹和酱料转移过程中,丢弃了远程操作命令的旋转成分,以避免意外地舀起或洒落酱料。

C.2.2 评估

Diffusion Policy和LSTM-GMM均训练了1000个周期。使用最后一个检查点进行评估。

每种方法从相同的一组随机初始条件中评估,其中披萨面团和酱料碗的位置会有所变化。我们使用与推块任务相似的协议来设置初始条件。我们不尝试匹配涂抹的初始酱料形状,而是确保在所有实验中酱料的数量是固定的。

评估回合通过将勺子向上移动(远离面团)0.5秒,或当操作者认为策略的行为不安全时终止。

覆盖度指标首先通过单应性将来自左侧和右侧相机的RGB图像投影到桌面空间,然后计算每个投影图像中的覆盖度。报告左侧和右侧相机之间的最大覆盖度。


D 实际实验设置细节

D.0.1 UR5 机器人站

对Push-T任务的实验是在UR5机器人站上进行的。

UR5机器人接受末端执行器空间的位置信息指令,频率为125Hz,该指令由来自人类演示或策略的10Hz命令线性插值得出。插值控制器将末端执行器的速度限制在0.43 m/s以下,并出于安全考虑将其位置限制在距离桌面1cm以上。位置控制的策略直接预测所需的末端执行器姿态,而速度控制的策略则预测当前位置设定点和先前设定点之间的差异。

UR5机器人站配备了5个Realsense D415深度摄像头,以30fps的帧率录制720p RGB视频。其中仅使用2个摄像头进行策略观察,图像被下采样到320x240像素,并以10fps的帧率输入。

在演示过程中,操作员通过3dconnexion SpaceMouse以10Hz的频率远程操作机器人。

D.1 Franka 机器人站

Sauce Pouring(倒酱汁和涂抹任务)、Bimanual Egg Beater(双手打蛋器任务)、Bimanual Mat Unrolling(双手铺开垫子任务)和Bimanual Shirt Folding(双手叠衣任务)的实验是在Franka机器人站上进行的。

对于非触觉控制,我们实现了一个自定义的中层控制器,以从学习到的策略生成的末端执行器姿态推导出期望的关节位置。在每个时间步中,我们通过求解微分运动学问题(以二次规划(Quadratic Program, QP)形式表示)来计算期望的关节速度,以跟踪期望的末端执行器速度。计算得到的关节速度通过欧拉积分转化为关节位置,并由机器人上的关节级控制器进行跟踪。这种控制方式允许我们施加诸如双臂与桌面的碰撞避免、末端执行器安全区域及关节限位等约束。它还使我们能够在末端执行器命令的冗余自由度空间中进行调节。在硬件部署期间,该中层控制器对于保护学习策略尤为重要。

对于触觉遥控控制,我们实现了另一个自定义的中层控制器,但它以纯扭矩控制器的形式设计。该控制器使用操作空间控制(Operational Space Control, Khatib (1987))作为二次规划(QP),以200Hz的频率运行,其中位置、速度和扭矩限制作为约束条件,主要的空间目标和次要的冗余姿态目标则作为损失函数。这种方式,加上对Franka Panda机械臂良好的建模(包括反射转子的惯量),使我们能够在纯空间反馈下实现良好的跟踪效果,结合前馈空间加速度还能实现更好的跟踪效果。目前此控制模式尚未启用碰撞避免功能。

需要注意的是,在推理过程中,我们使用的是非触觉控制。未来的工作打算简化这一控制策略,并仅使用单一控制器来满足我们的目标。

操作员使用SpaceMouse或VR控制器输入设备来控制机器人的末端执行器,夹爪由相应设备上的触发按钮控制。远程操作和学习策略以10Hz的频率运行,中层控制器则以约1kHz的频率运行。中层控制器对期望的末端执行器姿态命令进行插值处理。
该工作站配备了2个Realsense D415 RGBD摄像头,以30fps的帧率输出VGA RGB图像,这些图像被下采样至320x240像素,以10fps的帧率作为学习策略的输入。

D.2 双手任务的初始和最终状态

以下图像展示了四个双手任务的初始和最终状态。绿色和红色框分别表示成功和失败的回合。由于垫子和衬衫是非常扁平的物体,我们使用了单应投影(homographic projection)来更好地可视化初始和最终状态。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | Matlab基于SABO-SVR减法平均算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SABO-SVR减法平均算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SABO-SVR减法平均算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SABO-SVR减法平均算法优化…

【api连接ChatGPT的最简单方式】

通过api连接ChatGPT的最简单方式 建立client 其中base_url为代理,若连接官网可省略;配置环境变量 from openai import OpenAI client OpenAI(base_url"https://api.chatanywhere.tech/v1" )或给出api和base_url client OpenAI(api_key&…

数据仓库简介(一)

数据仓库概述 1. 什么是数据仓库? 数据仓库(Data Warehouse,简称 DW)是由 Bill Inmon 于 1990 年提出的一种用于数据分析和挖掘的系统。它的主要目标是通过分析和挖掘数据,为不同层级的决策提供支持,构成…

wordpress源码资源站整站打包32GB数据,含6.7W条资源数据

源码太大了,足足32gb,先分享给大家。新手建立资源站,直接用这个代码部署一下,数据就够用了。辅助简单做下seo,一个新站就OK了。 温馨提示:必须按照顺序安装 代码下载

【word脚注】双栏设置word脚注,脚注仅位于左栏,右栏不留白

【word脚注】双栏设置word脚注,脚注仅位于左栏,右栏不留白 调整前效果解决方法调整后效果参考文献 调整前效果 调整前:脚注位于左下角,但右栏与左栏内容对其,未填充右下角的空白区域 解决方法 备份源文件复制脚注内…

【HTML|第1期】HTML5视频(Video)元素详解:从起源到应用

日期:2024年9月9日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉在这里插入代码片得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对…

【机器学习】探索GRU:深度学习中门控循环单元的魅力

目录 🍔 GRU介绍 🍔 GRU的内部结构图 2.1 GRU结构分析 2.2 GRU工作原理 2.4 Bi-GRU介绍 2.3 使用Pytorch构建GRU模型 2.5 GRU优缺点 🍔 小结 学习目标 🍀 了解GRU内部结构及计算公式. 🍀 掌握Pytorch中GRU工具…

MySQL--数据库约束(详解)

目录 一、前言二、概念三、数据库约束3.1 约束类型3.1.1 NOT NULL 约束3.1.2 UNIQUE (唯一)3.1.3 DEFAULT(默认)3.1.4 PRIMARY KEY(主键)3.1.5 FOREIGN KEY(外键)3.1.6 CHECK 四、总结 一、前言…

[Linux#61][UDP] port | netstat | udp缓冲区 | stm32

目录 0. 预备知识 1. 端口号的划分范围 2. 认识知名端口号 3. netstat 命令 4. pidof 命令 二.UDP 0.协议的学习思路 1. UDP 协议报文格式 报头与端口映射: 2. UDP 的特点 面向数据报: 3. UDP 的缓冲区 4. UDP 使用注意事项 5. 基于 UDP 的…

基于Keras的U-Net模型在图像分割与计数中的应用

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色&a…

11. 异步编程

计算机的核心部分,即执行构成我们程序的各个步骤的部分,称为处理器。我们迄今为止看到的程序都会让处理器忙个不停,直到它们完成工作。像操作数字的循环这样的程序的执行速度几乎完全取决于计算机处理器和内存的速度。但是,许多程…

相机基础概念

景深: 景深的定义 DOF:depth of filed 是指在摄影机镜头或其他成像器前沿能够取得清晰图像的成像所测定的被摄物体前后距离范围。光圈、镜头、及焦平面到拍摄物的距离是影响景深的重要因素。定义3:在镜头前方(焦点的前、后)有一…

螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下docker学习02(yum源切换及docker安装配置)

2 前期工作 2.1 切换yum源并更新 删除/etc/yum.repos.d/原有repo文件,将Centos-7.repo库文件拷贝到该目录下。 然后清楚原有缓存yum clean all 生成新的缓存yum makecache 更新yum update –y 然后再确认/etc/yum.repos.d/不会有其他库文件,只留下…

气象大模型天气预测对物流的影响

随着科技的进步,气象大模型(GFM, Global Forecast Model)的广泛应用大大提升了天气预测的精度和时效性。这些模型基于大数据、机器学习、人工智能等技术,能够模拟大气环流,预测未来的天气状况。对于物流行业而言&#…

Pikachu-暴力破解-验证码绕过(on client)

访问页面, 从burpsuite 上看到返回的源代码; 验证码生成时通过 createCode 方法生成,在前端页面生成; 同时也是在前端做的校验; 直接验证;F12 -- 网络,随便输入个账号、密码、验证码&#xff0…

C初阶(八)选择结构(分支结构)--if、else、switch

前言: C语言是用来解决问题的,除了必要的数据输入与输出(见前文),还要有逻辑结构。其中基本可以归为三类:顺序结构、选择结构、循环结构。今天,杰哥提笔写的是关于选择结构(又叫“分…

CSP-J Day 5 模拟赛补题报告

姓名:王胤皓,校区:和谐校区,考试时间: 2024 2024 2024 年 10 10 10 月 5 5 5 日 9 : 00 : 00 9:00:00 9:00:00~ 12 : 30 : 00 12:30:00 12:30:00,学号: S 07738 S07738 S07738 请关注作者的…

9.30学习记录(补)

手撕线程池: 1.进程:进程就是运行中的程序 2.线程的最大数量取决于CPU的核数 3.创建线程 thread t1; 在使用多线程时,由于线程是由上至下走的,所以主程序要等待线程全部执行完才能结束否则就会发生报错。通过thread.join()来实现 但是如果在一个比…

CentOS 替换 yum源 经验分享

视频教程在bilibili:CentOS 替换 yum源 经验分享_哔哩哔哩_bilibili问题原因 解决方法 1. 进入镜像目录 [rootlocalhost ~]# cd /etc/yum.repos.d/ 2.备份文件 [rootlocalhost yum.repos.d]# rename repo bak * 3.寻找阿里镜像源复制 https://developer.aliyun.com/mirror/ …

Redis基础三(redis的高级配置)

Redis进阶配置 一、Redis持久化操作 ​ 持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。(Redis 数据都放在内存中。如果机器挂掉,内存的数据就不存在。所以需要做持久化,将内存中的数据保存在磁盘&#xff0c…