一句话定位
DP3 把 单视角稀疏点云 + 一个极简 MLP 点编码器(DP3 Encoder) 塞进 diffusion-policy 的条件里:不用彩色、不用大编码器、不用多相机,仅 10 条演示就能在 72 个仿真任务上把 2D Diffusion Policy 相对提升 55.3%,4 个真机任务 40 条演示做到 85% 成功率,并且几乎零安全违规——由此开创了「3D 点云 diffusion policy」这一路线(后续 iDP3 / ManiCM / Mamba Policy / PointVLA 等一大批工作的祖师爷)。
背景与定位
范式:point-cloud-conditioned diffusion policy(3D 视觉模仿学习)。 作者把视觉模仿学习的痛点定为「样本效率」——SOTA 的 diffusion-policy(Chi et al. RSS 2023)每个真机任务要 100200 条人工演示,采集要好几天。在线学习(RL 微调)又有安全、自动复位、人工干预、硬件成本等问题。DP3 走离线模仿路线,靠换掉视觉模态(2D 图像 → 3D 点云)来把演示需求压到 1040 条。
DP3 与两类 3D 策略明确划清界限:
- 相对 keyframe-planning 类 3D 策略(PerAct、GNFactor、RVT、Act3D、3d-diffuser-actor):这些方法把模仿学习转成「预测关键帧位姿 + 运动规划」,只适合低维控制、且推理慢(论文点名 PerAct 2.23 FPS、3D Diffuser Actor 1.67 FPS)。DP3 要做「通用 + 快」的稠密控制策略,既能低维 gripper 也能高维灵巧手(最高 52 维动作)。
- 2D diffusion policy:DP3 的主 baseline,只是把图像条件换成点云条件,其余(conv-UNet 扩散骨干)几乎照搬 Diffusion Policy 官方实现,以此隔离出「3D 模态」本身的贡献。
作者阵容:Yanjie Ze、Gu Zhang(共一),Kangning Zhang、Chenyuan Hu、Muhan Wang,导师 Huazhe Xu(徐华哲,Shanghai Qizhi / 清华 IIIS / 上海 AI Lab)。RSS 2024 收录。
模型架构
DP3 = 感知模块(点云 → 紧凑 3D 表征) + 决策模块(条件扩散生成动作),两模块端到端联合训练。
感知:DP3 Encoder(本文核心,极简)
- 输入:单相机 84×84 深度图 → 用相机内外参转成点云 → 裁掉桌面/地面等冗余点(bounding-box crop) → FPS 最远点采样降到 512 或 1024 个点 → 只保留 xyz、丢弃颜色通道(为外观泛化)。
- 编码器结构(论文附录给了 PyTorch 源码):
Linear(3→64) → LayerNorm → ReLU → Linear(64→128) → LayerNorm → ReLU → Linear(128→256) → LayerNorm → ReLU,再对 N 个点做max-pool(阶等变池化),最后projection: Linear(256→64) → LayerNorm。最终 3D 特征 v 只有 64 维。 - 机器人本体位姿 q 单独过一个 MLP(
Linear(DimRobo→64) → ReLU → Linear(64→64))→ 64 维。 - 两者拼接成 128 维 条件向量喂给扩散骨干。
决策:conv-UNet 条件扩散策略
- 直接复用 Diffusion Policy 官方(real-stanford/diffusion_policy)的卷积 UNet 骨干,把随机高斯噪声去噪成动作序列,条件是 (v, q)。
- 动作分块(chunking):预测 H 个动作、基于 N_obs 个观测步、推理时只执行最后 N_act 个。DP3 与所有扩散 baseline 统一用 H=4, N_obs=2, N_act=3 的短 horizon(比 DP 原版 H=16/N_act=8 短,为真机可被人打断时能立即换动作;附录 Table XVI 证明短/长 horizon 精度几乎无差:63.2 vs 64.2)。
- 采样器 DDIM,用 sample prediction(预测 a⁰)而非 epsilon prediction(利于高维动作生成、收敛更快)。
- 归一化:每个动作维、每个观测维独立缩放到 [-1,1](DDPM/DDIM 会 clip 到 [-1,1],动作归一化是必须的)。
一句话:除了「点云 + 64 维 MLP 编码器」,其余全是 Diffusion Policy 原装——这正是作者要证明的「3D 模态本身有效」的干净对照。
数据
仿真基准(自建,72 任务 / 7 个 domain,横跨 4 个仿真器):
| Domain | 机器人 | 对象 | 仿真器 | 最高动作维 | 任务 | 任务 |
|---|---|---|---|---|---|---|
| Adroit | Shadow 手 | 刚体/铰接 | MuJoCo | 28 | 3 | 10 |
| Bi-DexHands | Shadow 双手 | 刚体/铰接 | IsaacGym | 52 | 6 | 10 |
| DexArt | Allegro 手 | 铰接 | Sapien | 22 | 4 | 100 |
| DexDeform | Shadow 手 | 可变形 | PlasticineLab | 52 | 6 | 10 |
| DexMV | Shadow 手 | 刚体/流体 | Sapien | 30 | 2 | 10 |
| HORA | Allegro 手 | 刚体 | IsaacGym | 16 | 1 | 100 |
| MetaWorld | Gripper | 刚体/铰接 | MuJoCo | 4 | 50 | 10 |
- MetaWorld 50 任务按难度分 Easy(28)/Medium(11)/Hard(6)/Very Hard(5)。项目页口径:72 个任务中 67 个只用 10 条演示(DexArt、HORA 用 100)。
- 动作标注(专家来源):绝大多数由 RL 智能体生成成功轨迹——VRL3 跑 Adroit、BAC 跑 MetaWorld、PPO 跑其余所有 domain;唯 DexDeform 用人类遥操作数据。所有模仿学习算法共用同一批演示。
- 作者还做了「不同专家来源」的对照(Table VIII):MetaWorld 50 任务,脚本专家 GT 96.8 → DP3 训得 79.9 / DP 45.0;BAC 专家 GT 86.6 → DP3 72.4 / DP 39.7。结论:更好的专家能训出更好的策略,但 DP3 与 GT 之间仍有 gap。
真机基准(4 任务,各 40 条人工演示):
| 任务 | 机器人 | 对象 | 动作维 | 演示均长 | 描述 |
|---|---|---|---|---|---|
| Roll-Up | Allegro 手 | 可变形 | 22 | 79.9 | 反复卷橡皮泥成卷 |
| Dumpling | Allegro 手 | 可变形 | 22 | 113.5 | 卷橡皮泥再捏褶(包饺子) |
| Drill | Allegro 手 | 刚体 | 22 | 71.4 | 抓起电钻去碰绿方块 |
| Pour | Gripper | 刚体 | 7 | 83.6 | 抓碗、倒肉松、放回 |
- 相机:单个 RealSense L515(README 强调 D435 点云质量太低会导致 DP3 失败)。机器人:Franka 臂 + Allegro 手 / gripper。
- 遥操作:Franka + gripper 用键盘遥操;Allegro 手用基于视觉的 retargeting(AnyTeleop / DexPilot 系)。因多阶段 + 灵巧手 + 可变形物体,采集极耗时,故每任务只给 40 条。
- 真机数据格式(README):每条 episode 存 point_cloud (T,Np,6 含 rgb)、image、depth、agent_pos (T,22 = 6D EEF 位姿 + 16D 关节角)、action;臂用相对 EEF 位置控制、手用相对关节角位置控制。强烈建议裁掉桌面/背景只留有用点云。
训练方法
- 目标函数:标准 DDPM 去噪,预测加到原动作上的噪声,MSE loss:
L = MSE(ε^k, ε_θ(ᾱ_k·a⁰ + β̄_k·ε^k, k, v, q))。感知 + 决策端到端联合优化(不用预训练点编码器)。 - 单阶段行为克隆,无 RL、无蒸馏。所有算法(DP3 + baselines)统一训 3000 epochs、batch size 128 以保证收敛;实测 DP3 约 500 epochs 就收敛,而 DP 收敛慢或收敛到次优。
- 扩散时间步:训练 100 步、推理 10 步(DDIM)。
- 关键设计消融(Table VII,6 任务均值 63.2 为基线):
- 裁剪点云很重要:去掉 crop → 51.3(掉 12 点)。
- LayerNorm 稳定跨任务训练:去掉 → 61.3。
- sample prediction 收敛更快:换 epsilon prediction → 59.0。
- projection head 不掉点还加速推理(把特征降到低维):去掉 → 62.2。
- 去颜色保外观泛化:加回 color → 63.7(精度几乎不变但牺牲泛化)。
- 采样器 DDIM → DPM-solver++:低维任务尚可,但高维任务崩(均值掉到 34.8)。
- 评测协议:每实验 3 个种子(seed 0/1/2),每 200 epoch 评 20 episode,取最高 5 次成功率的均值,再报 3 seed 的 mean±std。
Infra(训练 / 推理工程)
- 训练硬件:单张 Nvidia A40,DP3 约占 10 GB 显存、单任务训练 ~3 小时(README 披露);Simple DP3 更快,1~2 小时。作者强调「对大多数研究者可行」。训练卡数/GPU-hours 总量、并行策略、精度均未在论文/README 披露(单卡单任务,无分布式)。
- 推理速度(Table XX,FPS):Diffusion Policy 12.3 / DP3 12.7 / Simple DP3 25.3(↑99%,近 2×)。DP3 靠稀疏点云 + 紧凑表征做到「3D 策略反而不慢、略快于 2D DP」,颠覆「3D 策略必慢」的成见(对比 PerAct 2.23 FPS、3D Diffuser Actor 1.67 FPS)。测速所用 GPU 型号论文未明确写出。
- Simple DP3:删掉 UNet 骨干中的冗余组件,2× 推理速度、精度仅掉 2%(65.3 → 64.2),作者更推荐机器人研究者用它。真机部署代码作者建议参考后续 iDP3 仓库。
- 控制频率 / 端到端延迟 / 边缘硬件:未披露(真机跑在 Franka + Allegro 标准控制栈上,episode 长度不定,靠人工判定终止)。
评测 benchmark
仿真主结果(Table I,72 任务均值成功率):
| 算法 | Adroit(3) | Bi-DexHands(6) | DexArt(4) | DexDeform(6) | DexMV(2) | HORA(1) | MW-Easy(28) | MW-Med(11) | MW-Hard(6) | MW-VHard(5) | 均值(72) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Diffusion Policy | 31.7 | 61.3 | 49.0 | 90.5 | 95.0 | 49.0 | 59.7 | 26.9 | 9.8 | 17.8 | 47.6±32.9 |
| DP3 | 68.3 | 70.2 | 68.5 | 87.8 | 99.5 | 71.0 | 90.1 | 61.0 | 43.2 | 56.6 | 73.9±24.9(↑55.3%) |
- DP3 在近 30 个任务成功率 >90%(DP 不到 15 个);DP3 无一任务 <10%(DP 有 10+ 任务 <10%)。学习效率上 DP3 ~500 epoch 收敛,DP 慢得多。
- 更多 baseline(Table II,10 任务均值):DP3 65.3 > DP 36.8 > BCRNN+3D 18.8 > IBC+3D 18.7 > IBC 5.2 > BCRNN 1.8。加 3D 对 BCRNN/IBC 有帮助但远不如 DP3——证明「不只是用了 3D,而是 DP3 的精心设计」。
真机主结果(Table X,各任务 10 次试验):
| 算法 | Roll-Up | Dumpling | Drill | Pour | 均值 |
|---|---|---|---|---|---|
| Diffusion Policy | 0 | 30 | 70 | 40 | 35.0±25.0 |
| Diffusion Policy (Depth) | 40 | 20 | 10 | 10 | 20.0±12.2 |
| DP3 | 90 | 70 | 80 | 100 | 85.0±11.2 |
泛化(真机,baseline 基本全挂,DP3 大多成功):空间泛化(Pour 放 5 个未见位置,DP3 4/5)、外观泛化(Drill 训绿方块测 5 色,DP3 5/5)、实例泛化(Drill 换鼠标/杯子/马克杯等 5 物,DP3 5/5)、视角泛化(Roll-Up 3 个新视角,DP3 3/3)。DP3 全靠点云无颜色 + 下采样的天然属性,不用任何数据增强。
安全违规率(Table XV,↓ 越低越好):DP3 0% vs DP 32.5% / DP-Depth 25%。2D 策略常给出乱指令需人工急停,DP3 几乎不违规——真机友好。
关键消融:
- 3D 表征选择(Table IV,均值):点云 63.2 > voxel 39.5 > depth 42.0 > image 28.7 > RGB-D 27.8。点云最省最强;RGB-D/图像反被纯深度打败,说明任务偏低层控制而非场景理解。
- 点编码器选择(Table V):DP3 Encoder 63.2 碾压 PointNet 17.7 / PointNet++ 2.2 / PointNeXt 2.3 / Point Transformer 1.0,连预训练版(PointNet++ 6.8、PointNeXt 8.8)也远不如——「精心设计的小编码器 > 预训练大编码器」。
- 逐步把 PointNet 改成 DP3 风格(Table VI):T-Net 与 BatchNorm 是主要拖累,去掉这两者 PointNet 达 59.5(Turnaround!),全去掉达 61.0,逼近 DP3 的 63.2。作者推测固定相机的控制任务不需要 T-Net 的特征变换。
- 图像分辨率(Table IX):给 DP 提到 128/256 分辨率均值仍 ~30(vs DP3 63.2),再证 3D 表征的必要性。
创新点与影响
贡献:
- 首次把 3D 点云条件 引入 diffusion policy,并证明「一个 64 维 MLP 点编码器 + 稀疏点云 + 去颜色」这套极简配方,就能在样本效率、泛化、安全、推理速度四方面全面超越 2D Diffusion Policy。
- 自建 72 任务 / 7 domain / 4 仿真器 的大规模灵巧操作模仿学习基准(含高维灵巧手到低维 gripper),补上了「大规模多样化仿真 benchmark」的缺口,并承诺开源任务套件与专家策略。
- 用大量消融把「3D 有效」拆解到具体设计(裁剪、LayerNorm、sample prediction、去 T-Net/BatchNorm、去颜色),给出可迁移的工程经验。
改变了什么: DP3 开创了「3D 点云 diffusion policy」路线,成为社区高频 baseline 与被改进对象。README 自列的衍生工作就有一长串:ManiCM(consistency model 加速)、Mamba Policy(Mamba 骨干)、iDP3 / 人形泛化操作(改进版上人形)、PointVLA(把 DP3 Encoder 注入 3D VLA)、RoboTwin(双臂 benchmark)、EquiBot、DemoGen、H3DP、FP3、ManiFlow(flow matching 改进)、RL-100(offline+online RL 微调后 100% 成功率)等。它把「3D 表征在真实机器人学习中的关键性」这一论点立了起来。
作者自陈局限:
- 「最优的控制用 3D 表征」尚未找到(点云只是当前较好的选择,不是终点)。
- 本工作未涉及极长 horizon 任务,留作未来。
- (隐含)单视角 + 需手工设定 crop bounding box;视角泛化时要手动调整裁剪空间。
原始链接
- arXiv 摘要:https://arxiv.org/abs/2403.03954
- arXiv PDF:https://arxiv.org/pdf/2403.03954
- 项目主页:https://3d-diffusion-policy.github.io
- 代码(RSS 2024,MIT):https://github.com/YanjieZe/3D-Diffusion-Policy
- 改进版(真机部署参考):https://github.com/YanjieZe/Improved-3D-Diffusion-Policy
一手源存档(sources/)
- dp3-3d-diffusion-policy—github-readme — GitHub README 快照(含 A40 训练 ~3h/10GB、Simple DP3 25 FPS、真机硬件与数据格式、社区衍生工作清单)
- dp3-3d-diffusion-policy—project-page — 项目主页快照(注:主页摘要写的是早期版本口径「24.2% 相对提升」,与论文正文 Table I 的 55.3%(73.9 vs 47.6)不一致,以论文正文为准)
- arXiv 全文(2403.03954):正文 + 附录 A–D 已通读,PDF/HTML 原文不入 git,见上方 arXiv 链接