DexMimicGen:60 个人 demo「变」出 21K 条双臂灵巧手训练数据
🎯 为什么重要:人形/双臂灵巧手的"数据荒"
2024 年起人形机器人兴起,可训练数据从哪来成了最大的拦路虎:
- 真机遥操采数:双手 + 多指 = 需要 Apple Vision Pro + VisionProTeleop + OmniH2O retargeting 一整套专门接口,单条 demo 采集成本远高于单臂 iPhone + RoboTurk;
- 纯 RL 探索:双臂 + 多指带来高维动作空间(论文实验使用 Fourier GR1 + 两只 6-DoF Inspire 灵巧手),接触丰富,reward shaping 几乎写不出来;
- 已有的 MimicGen 范式用不上:它假设"任务 = 单一固定子任务序列",但双臂任务里两只手的子任务节奏根本不对齐(一只手先抓完、另一只手还在调整)。
DexMimicGen 的解法是承认双臂子任务有三种基本类型,给每类写最小必要的执行约束,其它一切照搬 MimicGen。这种"分层最小改动"的工程哲学让整套系统立刻能用——论文报告 60 条源 demo 放大到 21K 条(350×),真机 Can Sorting 把 4 条人 demo 放大到 40 条就让 Diffusion Policy 从 0% → 90%。
💡 核心思想:双臂子任务的三分类 + 三种执行约束
把"双臂协调"按"是否需要时序对齐、是否需要顺序依赖"两个正交维度拆开,正好三类,每类一种最小解法:
这套分类法本身有方法论价值:它把"双臂协调问题"归约到两个正交维度——是否需要时序对齐(同步 vs 异步)、是否需要顺序依赖(并行 vs 串行)。任何新的双臂任务都可以用这三类组合描述。
🛠️ 怎么做:三阶段生成 + 三种本体 + 真机 real2sim2real
三阶段数据生成流程(以 Tray Lift 为例)
| 阶段 | 做了什么 | 关键 trick |
|---|---|---|
| ① Source demo segmentation | 把人 demo 按臂分别切分成 object-centric 子任务段;记录每段的参考物体位姿;末段标为 coordination | 人工标注或启发式;coordination 段必须强制两臂同一时刻结束,否则后续 synchronization 失效 |
| ② 场景随机化 + 源 demo 选择 | 论文难度档 0/1/2 三种 reset 分布(默认/更广/位置交换);每次随机选一条源 demo | 档 1/2 让数据覆盖到源 demo 没见过的初始配置 |
| ③ 迭代生成 | 双臂并行维护各自的 action queue:空了就用 MimicGen 等变换把源段变换到当前物体位姿填进队列;dequeue 一个动作执行;遇 coordination 等对方对齐;遇 sequential post 阻塞等 pre | 指关节动作直接 replay——指动作相对末端无需重变换 |
| ④ 成功过滤 | 全部子任务都成功执行才保留 demo;否则 reset 重来 | 仿真开环 replay + 物理过滤保证每条 demo 都可行 |
三种本体 + 三种控制器(Fig.4 · 9 个任务)
| 本体 | 控制器 | 遥操接口 | 典型任务 |
|---|---|---|---|
| 双臂 Panda + parallel-jaw 夹爪 | OSC(操作空间控制) | iPhone + RoboTurk | Threading / Piece Assembly / Transport |
| 双臂 Panda + 灵巧手 | OSC + 指关节位置控制 | Apple Vision Pro + VisionProTeleop + OmniH2O retargeting | Box Cleanup / Drawer Cleanup / Tray Lift |
| GR-1 humanoid + 灵巧手 | IK 控制(基于 mink 库)——humanoid 双臂共享 torso,OSC 不稳 | 同上 + 人→机校准(固定初始 pose 算相对变换) | Pouring / Coffee / Can Sorting |
coordination 段的两种变换方案
| 方案 | 怎么做 | 适用 |
|---|---|---|
| Transform(默认) | 取"第一只手开始此段时的物体位姿" $T_W^{o'}$ 与源段物体位姿 $T_W^{o_i}$,两臂共用 $T_{o'}^W (T_W^{o_i})^{-1}$ | 一般 coordination 段 |
| Replay | 直接 replay 源轨迹不做变换,保运动学可行 | handover 阶段(Can Sorting / Transport)——保证两臂交接不出界 |
📊 关键结果:60 → 21K,0% → 90%
| 任务 | source demo (DP) | DexMG 1000 最佳 | 最佳 policy |
|---|---|---|---|
| Can Sorting | 0.7 | 97.3 | DP |
| Tray Lift | 3.3 | 88.7 | DP |
| Transport | 52.7 | 83.3 | DP |
| Box Cleanup | 62.0 | 94.7 | BC-RNN |
| Coffee | 14.7 | 84.7 | BC-RNN |
| Drawer Cleanup | 0.7 | 80.0 | BC-RNN |
| Piece Assembly | 3.3 | 80.7 | DP |
| Threading | 1.3 | 69.3 | DP |
| Pouring | 0.7 | 79.3 | DP |
四个关键消融
| 实验 | 对比 | 结果 | 说明 |
|---|---|---|---|
| vs DemoNoise 基线 (同源 demo + 加噪 replay) | DexMG 1000 vs DemoNoise 1000 | DexMG 高出 52.6 ~ 61.3 pp (Pouring +52.6 / Tray Lift +58.6 / Piece Assembly +61.3) | 不只是"加噪",等变换机制是核心;DemoNoise 还无法生成档 1/2 |
| 数据规模效应 (Fig.5) | 100 / 500 / 1000 / 5000 demos | 100→1000 提升显著;1000→5000 diminishing returns(任务相关) | 1000 条/任务是性价比拐点 |
| coordination 方案对比 | Transport 任务 Replay vs Transform | Replay 63.3% vs Transform 46.0%;Can Sorting 相当(97.3% vs 98.6%) | handover 类任务默认选 Replay |
| sequential 约束消融 | Drawer Cleanup 有约束 vs 无约束 vs 同源 demo | 50.7% / 48.0% / 56.7% Pouring 88.7% / 76.7% / 79.3% | 使用不同源 demo 时约束有效 |
policy 架构反直觉发现
真机 real2sim2real:Can Sorting(Sec.VI.D)
| 维度 | 配置 / 数字 |
|---|---|
| 硬件 | Fourier GR1 + 两个 6-DoF Inspire 灵巧手;2 个 Intel RealSense D435i(头戴第一人称 + 前方第三人称) |
| Digital twin 初始化 | 头戴 RGB-D 初始帧 + GroundingDINO 分割物体 RGB mask → mask 内深度均值定位物体 $x,y$ → 初始化 sim 物体位姿 |
| 流程 | 4 条真机源 demo → 仿真中 replay 当 source → DexMG 生成新轨迹 → 成功则控制动作序列发回真机执行 |
| 生成数据量 | 40 条真机 demo(除环境 reset 外全自动) |
| 结果 | Diffusion Policy 在 40 条 DexMG 数据上 90% 成功率,对比 4 条源 demo 训练的 policy 0% |
跨 benchmark 泛化:BiGym
把 DexMG 应用到 BiGym 的 3 个 humanoid 移动操作任务,每任务生成 1000 demo,生成成功率:
| BiGym 任务 | 生成成功率 |
|---|---|
| FlipCup | 29.1% |
| DishwasherLoadPlates | 43.6% |
| CupBoardsCloseAll | 76.4% |
🌐 在领域中的位置:NVIDIA 合成数据栈的中间一阶
DexMimicGen 是 NVIDIA 「合成数据栈」从「轨迹变换」过渡到「生成式轨迹」的中间一阶——把上一代单臂 MimicGen 工程化到双臂灵巧手,给下一代 HumanoidMimicGen / GR00T Mimic 留下了相同的 task description language 与代码底座。同期它也是双臂灵巧 IL 论文的标准实验基线之一(配合 MimicGen、BiGym、RoboCasa)。关联线索:T02 dataset infrastructure、T11 dexterous manipulation。
❓ 常见误区
DexMimicGen 是新算法吗?
不是。它不是新 policy,也不是新 RL 算法,而是一个数据生成系统。policy 还是 BC-RNN / BC-RNN-GMM / DiffusionPolicy 这些现成的——DexMG 只负责把 5-10 条人 demo 放大成 1000 条训练数据。论文的创新全部在「如何正确编排双臂子任务」这一层。
为什么不直接用自动重放(DemoNoise)?
重放只在源 demo 见过的位姿上有效,无法覆盖档 1/2 这种新初始配置。DexMG 的 SE(3) 等变换把"动作对物体的相对几何"显式解耦出来,所以能投射到新位姿。论文 Table III 显示 DexMG 比 DemoNoise 高 52.6 ~ 61.3 个百分点。
coordination 段为什么要"两臂同时结束"?
因为 coordination 的定义就是"两臂末端相对位姿与源 demo 对齐"。如果两臂结束时刻错开,"相对位姿"就没有对应时刻——同步就无从谈起。所以这个约束必须在 segmentation 阶段就强制做好,是后续 synchronization 策略的前提。
humanoid 为什么用 IK 不用 OSC?
因为 GR-1 humanoid 的双臂共享同一个 torso,运动学树比双臂 Panda 复杂——OSC 在每只手上独立算 delta → joint torque 会耦合出错。IK 直接把全局 target end-effector pose 翻译成 joint positions,绕开耦合。论文用了 mink 库的 IK 实现。
真机 pipeline 真的全自动吗?
除了环境 reset 都自动。流程是:每次 reset 物体后,头戴相机拍一帧 RGB-D → GroundingDINO 分割 → 物体 $x,y$ 输入仿真 → DexMG 在 digital twin 中生成新轨迹 → 成功则动作序列发真机执行。Digital twin 充当真机数据生成的安全层——失败的不发。
DexMG 的边界在哪?
(1) 依赖人工 segmentation——每加一个新任务都要人手标子任务边界或写启发式;(2) 依赖源 demo 质量 + teleop 接口——双臂 + 多指 teleop 仍需 AVP + OmniH2O,硬件门槛高;(3) 开环 replay——若新场景几何与源 demo 差异大(更窄间隙),不重新规划会失败;(4) BiGym 上 29-76% 生成成功率——长程 mobile manipulation 的边界明显。这些都留给 HumanoidMimicGen、GR00T Mimic 等后续工作。