一句话定位
3D Diffuser Actor 把「动作扩散」和「3D 场景表征」两条线合并:给定语言指令,用 CLIP 提图特征、靠深度把 2D patch 抬升成一堆带 3D 坐标的场景 token,再用一个带旋转位置编码(RoPE)相对注意力的 3D 去噪 Transformer,对末端执行器的一整段未来 6-DoF 轨迹(平移+旋转)做条件扩散去噪。它在 RLBench 多视角设定上把平均成功率从 Act3D 的 63.2% 抬到 81.3%(+18.1),单视角 +13.1,CALVIN 零样本泛化超过此前 SOTA GR-1——「tokenized 3D 表征 + 动作扩散 + 相对注意力」自此成为 3D 操作策略里被反复复现的强基线(CoRL 2024)。
背景与定位
论文站在两条已被验证有效、但此前没被合并的路线交叉口:
- 动作扩散(diffusion policy):Diffusion Policy(Chi 2023)用条件 DDPM 对一段动作序列去噪,天然建模模仿学习里的多模态动作分布(同一状态可有多条最优动作),比确定性回归 / VAE / GMM / 能量模型(EBM)更能覆盖模式、精度更高。但这类工作要么用低维 oracle 状态、要么用 2D 图像做场景表征。
- 3D 机器人策略:C2F-ARM、PerAct(体素化)、Act3D(采样 ghost point + 相对交叉注意力做 3D action map)、RVT(多视角重投影)等,把特征按深度和相机外参「抬升」到 3D 工作空间,跨相机视角泛化明显好于 2D 策略——因为视觉 token 和机器人动作在同一个 3D 空间里交互,不用网络隐式学 2D→3D 映射。但它们用分类 / 回归目标,处理多模态弱。
本文的立意就是「联姻」:用扩散处理动作多模态、用 tokenized 3D 表征做空间推理。它明确区分于两个近邻工作——(1) ChainedDiffuser(Xian 2023)只把扩散当作运动规划器的替代品,去噪连接两个已给定的关键位姿,关键位姿本身仍靠 Act3D 预测;本文则同时预测下一个 3D 关键位姿和连接轨迹,是更难的任务。(2) 并行工作 3D Diffusion Policy(DP3, Ze 2024)同样合并 3D + 扩散,但用 PointNeXt 把点云池化成一个 1D 整体向量做条件;本文用tokenized 场景表征(每个 patch 一个带 3D 坐标的 token),场景局部变化只影响对应子集 token,空间解耦、泛化更好。作者 Tsung-Wei Ke、Nikolaos Gkanatsios、Katerina Fragkiadaki(CMU),代码基于 Act3D / CALVIN 改写。
模型架构
总体形式:时刻 t,策略把观测 o_t(一路或多路带位姿 RGB-D)、语言指令 l、本体感知 c_t(末端当前位姿)和带噪轨迹估计 τ_t^i 一起喂进去噪网络 ε_θ,一次性(非自回归)预测整段轨迹的噪声。动作分解为三部分:a^loc ∈ R³(平移)、a^rot ∈ R⁶(6D 旋转表征,用 Zhou 2020 的连续表示避开四元数不连续)、a^open ∈ {0,1}(开合)。轨迹 τ_t = (a_{t:t+T}^loc, a_{t:t+T}^rot),时域长度 T。
3D tokenization(把所有输入变成带 3D 坐标的 token):
- 场景 token:每路图像用预训练 CLIP ResNet50 提 2D 特征图 F ∈ R^{H×W×c};对每个 H×W patch 取深度均值,用相机内外参 + 针孔模型算出其 (X,Y,Z),得到基数 H×W 的 3D 场景 token 集合(token = patch 特征 + 3D 坐标)。多视角则把各视角 token 汇总。
- 本体感知 token:一个可学习 latent + 末端当前 3D 位置的位置编码。
- 轨迹 token:把带噪位姿经 MLP 映射成 latent,3D 位置取自带噪平移分量 a^{loc,i}。
- 语言 token:预训练 CLIP 语言编码器;因为给语言定义 3D 坐标无意义,语言只参与普通交叉注意力、不进相对自注意力。
3D 相对去噪 Transformer:所有 3D token 之间做相对自注意力,对语言 token 做交叉注意力。相对注意力用旋转位置编码 RoPE(Su 2021)编码相对位置:注意力权重 e_{q,k} ∝ x_q^T · M(p_q − p_k) · x_k,M 只依赖 query/key 的相对 3D 位置——由此得到平移等变性(translation equivariance),帮助泛化。工程细节:对视觉 token 用最远点采样 FPS下采样(RLBench 采 20%、CALVIN 采 33%)降算力;注意力用 adaptive layer normalization + FiLM 调制(吸收扩散步 i 与条件)。最后轨迹 token 过 MLP 输出三支:平移噪声 ε^loc、旋转噪声 ε^rot、开合概率 f^open ∈ [0,1]^T。
两个变体:标准版;以及「增强语言条件」版——把「视觉/位姿 token → 语言 token」的交叉注意力层穿插进位姿-视觉注意力层之间,此版在 CALVIN 上拿到 SOTA。
关键超参(Table 7,多视角 RLBench / 单视角 RLBench / CALVIN):
- image_size:256 / 256 / 200;embedding_dim:120 / 120 / 192;camera_views:4 / 1 / 2
- FPS 采样比例:20% / 20% / 33%;扩散步数:100 / 100 / 25
- action_space:绝对位姿 / 绝对位姿 / 相对位移
- 噪声调度:位置一律 scaled_linear,旋转一律 squaredcos(平方余弦)——位置与旋转用不同调度器是本文的关键经验发现
数据
纯从示范做模仿学习,不采集额外数据;三处评测各自的数据规模与来源:
- RLBench 多视角(沿用 PerAct 设定):CoppeliaSim 仿真、Franka Panda 机械臂,18 个任务、每任务 2–60 个变体(物体位姿 / 外观 / 语义变化),4 路 RGB-D 相机(front、wrist、左肩、右肩,腕部相机随操作移动)。训练用从专家示范里抽出的关键位姿(keypose)。
- RLBench 单视角(沿用 GNFactor 设定):10 个任务,仅 front 一路 RGB-D。
- CALVIN:PyBullet 仿真、Franka Panda,34 个任务、4 个环境(A/B/C/D,桌面纹理与物体位置不同)。提供 24 小时遥操作无结构 play 数据,其中 35% 带语言标注。评测零样本泛化:在 A/B/C 上训练、在 D 上测;本文只用语言标注子集训练(而 MCIL/HULC/SuSIE 等分层方法可用全部 play 数据训练低层策略)。每条指令链含 5 条需顺序执行的子指令。CALVIN 无运动规划器,模型须预测完整位姿轨迹。
- 真实世界:12 个任务,Franka Emika + 前视 Azure Kinect RGB-D,图像原始 1280×720 下采样到 256×256。每任务仅 15 条示范,示范天然含噪与多模态(如从两只鸭子里挑一只、把 peg 插两个孔之一、三串葡萄挑一串);每任务测 10 个 episode。
关键位姿发现(keypose discovery):RLBench 用启发式——末端开合状态变化,或速度幅值趋零(预抓取 / 任务新阶段)。CALVIN 因是人类 play 数据、关键位姿噪声大且随机,作者自写算法:追踪开合状态变化 + 速度与加速度的显著变化(取加速度局部极大的 top 20%,再按最小间隔稀疏化),并把开合前一帧和末帧也计入。轨迹按关键位姿切段、重采样到统一长度 T。
训练方法
目标函数:随机采时刻 t 和扩散步 i,给干净轨迹 τ_t^0 加噪 ε=(ε^loc, ε^rot),网络预测噪声。损失为平移/旋转噪声的 L1 重建 + 开合的 BCE:
L = w1·‖ε_θ^loc − ε^loc‖ + w2·‖ε_θ^rot − ε^rot‖ + BCE(f_θ^open, a^open),其中 w1=30、w2=10(交叉验证选出,三套设定一致)。
扩散过程:标准条件 DDPM,方差调度 {β^i},τ^i = √(ᾱ^i)·τ^0 + √(1−ᾱ^i)·ε。推理从 τ^N ∼ 𝒩(0,1) 出发迭代去噪 N 步。分通道噪声调度:位置用 scaled-linear、旋转用 square-cosine——作者可视化 6D 旋转(拆成两个三维单位向量)发现平方余弦调度把噪声铺得更满、去噪更准(附录 B.7,以旋转误差 < 0.025 的比例衡量)。开合分支在 i=1(近乎干净)时取其预测。
训练配置:Adam 优化器;batch 240(RLBench)/ 5400(CALVIN);lr 1e-4(RLBench)/ 3e-4(CALVIN);weight_decay 5e-4(RLBench)/ 5e-3(CALVIN,因过拟合而调高、并缩短 epoch);total_epochs 1.6e4(多视角 RLBench)/ 8e5(单视角)/ 90(CALVIN)。
推理两种模式:既可预测并执行到下一个关键位姿的完整动作轨迹(含关键位姿),也可只预测下一个关键位姿、再用基于采样的运动规划器去到达——RLBench 用其自带 BiRRT,真实世界用 MoveIt! 的 BiRRT;CALVIN 无规划器故直接执行轨迹并逐段重规划(平均 ~10 个轨迹推理步完成一个任务)。
Infra(训练 / 推理工程)
- 训练 GPU 型号与卡数、GPU-hours、并行策略、精度:均未披露(论文与 README 未给训练算力)。代码依赖 flash-attention 2.5.9、dgl 1.1.3(cu116),可作为独立 pip 包
diffuser_actor使用。 - 推理 / 控制频率(CALVIN 上、单张 NVIDIA 2080 Ti,与两个扩散基线同台对比):
- 3D Diffuser Actor:600 ms 执行 6 个末端位姿 → 10 Hz 控制频率
- ChainedDiffuser:1170 ms 执行 6 个位姿(50 ms 关键位姿检测 + 1120 ms 轨迹优化)→ 5.1 Hz
- 3D Diffusion Policy(DP3):581 ms 执行 4 个位姿 → 5.2 Hz
- 作者自陈平均比非扩散策略慢,可用「减少扩散步数」的后续技术改善(列为局限)。
评测 benchmark
所有数字取自论文正文表格(arXiv 版)。
RLBench 多视角(18 任务,平均成功率,Table 1):3D Diffuser Actor 81.3%,绝对超过前 SOTA Act3D 63.2%(+18.1)、RVT 62.9%、PerAct 49.4%、PolarNet 46%、HiveFormer 45%、C2F-ARM-BC 20.1%。在多模态长时程高精度任务上是断层领先:stack blocks 68.3 vs Act3D 4.0、stack cups 47.2 vs 9.6、place cups 24.0 vs 3.2、insert peg 65.6 vs Act3D 24.0。
RLBench 单视角(10 任务,Table 2):3D Diffuser Actor 78.4% vs Act3D 65.3%(+13.1)、GNFactor 31.7%(+46.7)。作者指出 Act3D 也远超 GNFactor,说明「3D 场景表征的选择」比「3D 特征补全」更关键;而 Act3D 与本文场景 tokenization 相似,二者差距凸显扩散相对分类/回归在处理多模态上的价值。
CALVIN 零样本长时程(train ABC / test D,3 seed,Table 4):连续完成 1/2/3/4/5 个任务的成功率 3D Diffuser Actor 为 93.8 / 80.3 / 66.2 / 53.3 / 41.2,平均完成长度 Avg.Len = 3.35,超过 GR-1 3.06、SuSIE 2.69、RoboFlamingo 2.48、RT-1 0.90、HULC 0.67、ChainedDiffuser 0.84、DP3 0.31。作者注:允许更长时域后性能显著提升,说明模型学会了失败后重试。
消融(多视角 RLBench 平均,Table 3):完整模型 81.3;去掉 3D 场景表征(退化为 2D Diffuser Actor / 复刻 Diffusion Policy)→ 47.0;把相对注意力换成绝对注意力(w/o RelAttn)→ 71.3。即:3D 表征贡献巨大,相对注意力(平移等变)再加约 10 个点;且即便只用绝对注意力的版本也已超过表 1 所有先前方法。
深度噪声鲁棒性(单视角 RLBench,Table 6):清晰深度 78.4 → 加方差 0.01 高斯噪声 72.4(仅掉 6 个点)→ 方差 0.03 降到 50.1;尽管只用干净深度训练,仍相对稳健。
真实世界(12 任务,各测 10 episode,Table 5,部分):close box 100、put duck 100、insert peg into hole 50、into torus 30、put mouse 80、open pen 100、press stapler 90、put grapes 90、sort rectangle 50、stack blocks 20、stack cups 40、put block in triangle 90。
失败模式分析(单视角 RLBench):主要失败是位姿精度不足(stack blocks / open drawer / turn tap 等高精度任务),其次是语言指令混淆(多物体场景抓错目标),再者运动规划器找不到路径、长时程中间步失败。
版本口径提示:arXiv 摘要写「多视角 +18.1%、CALVIN 相对 +9%」,而 CoRL 2024 相机就绪版 / 项目主页摘要写「多视角 +16.3%、CALVIN matches SOTA」。正文表格数字(81.3 vs 63.2 = +18.1、Avg.Len 3.35 vs GR-1 3.06)为本页采用口径。
创新点与影响
- 首个把 tokenized 3D 场景表征与动作扩散合并的操作策略:相对并行工作 DP3 的「1D 整体池化」,本文保留每个 patch 一个带 3D 坐标的 token,局部场景变化只扰动对应 token,空间解耦带来更好泛化——这一「tokenized vs holistic」的论断被后续 3D 操作工作反复引用。
- 3D 相对注意力(RoPE)带来平移等变:消融显示它稳定贡献约 10 个点,成为 3D 操作 Transformer 的常见配置。
- 位置 / 旋转分通道噪声调度:位置 scaled-linear、旋转 square-cosine,是可迁移的实用经验。
- 与 ChainedDiffuser 的分工澄清:本文联合预测「关键位姿 + 连接轨迹」,而非像 ChainedDiffuser 那样只在两个给定位姿间去噪;在人类 play 数据(CALVIN)上,ChainedDiffuser 的确定性关键位姿模块因多模态而失效,凸显扩散端到端预测关键位姿的必要性。
- 影响:成为 RLBench / CALVIN 上被广泛复用的 3D 扩散强基线(PapersWithCode 上 CALVIN 零样本泛化与 RLBench 操作两个榜单的参照点),官方放出 4 套权重(RLBench-PerAct / RLBench-GNFactor / CALVIN 含历史 / CALVIN 不含历史)。
- 作者自陈局限:(1) 依赖相机标定与深度(所有 3D 策略通病);(2) RLBench/CALVIN 任务都是准静态(quasi-static),扩展到动态任务与速度控制是直接方向;(3) 平均比非扩散策略慢,可用减少扩散步的技术改进。
原始链接
- 论文(arXiv abs):https://arxiv.org/abs/2402.10885
- 论文 PDF:https://arxiv.org/pdf/2402.10885
- 项目主页(CoRL 2024):https://3d-diffuser-actor.github.io/
- GitHub(官方实现,含 Act3D 复刻):https://github.com/nickgkan/3d_diffuser_actor
- 模型权重(Hugging Face,katefgroup):https://huggingface.co/katefgroup/3d_diffuser_actor
一手源存档(sources/)
- 3d-diffuser-actor—github-readme — GitHub README 快照(sources/embodied/2024/3d-diffuser-actor—github-readme.md)
- 3d-diffuser-actor—project-page — 项目主页快照(sources/embodied/2024/3d-diffuser-actor—project-page.md)
- arXiv 2402.10885 全文(HTML v3)已通读,原文 PDF 不入 git,引用见上方 arXiv 链接