一句话定位

Im2Flow2Act(CoRL 2024,代号 Im2Flow2Act)用「物体 flow」——排除背景与本体运动的纯物体运动轨迹——作为连接不同本体(人/机器人)与不同环境(仿真/真实)的统一操作接口:一个只在人类演示视频上训练的 flow 生成网络负责高层任务规划,一个完全在仿真机器人 play data 上训练的 flow-条件模仿学习策略负责底层执行,全程不采集任何真实机器人示教数据,在刚体、铰接、可变形四类真实世界任务上平均成功率达到 81%。

背景与定位

机器人学习规模化的两条主流路径各有短板:跨本体视频学习受本体差异(embodiment gap)制约,仿真数据则面临显著的 sim-to-real gap 以及为每个任务搭建专用仿真环境的高成本。Im2Flow2Act 的策略是把「物体 flow」同时作为两条路径的公共接口:flow 只描述物体状态的变化,与执行动作的本体无关,因此可以从人类视频里学;flow 也是仿真与真实环境之间保持一致的运动概念,因此策略可以完全在仿真 play data 上学、免仿真环境定制。

该工作明确把自己定位在 flow-based manipulation 谱系里,并与三条同期工作直接对照:general-flow(Yuan et al., General Flow,本文中的 “Heuristic” 基线之一)用 3D flow + 启发式姿态估计策略,需要手工挑选抓取接触点;Track2Act(Bharadhwaj et al., 本文中的另一 “Heuristic” 基线)在启发式策略上加了一层残差策略,但仍需额外采集真实机器人数据;any-point-trajectory-model-atm(Wen et al. ATM,本文中的 “GridFlow” 基线)用均匀网格 flow 做行为克隆,但网格 flow 同时会捕捉到本体自身的运动,导致跨本体迁移时策略遇到分布外输入。Im2Flow2Act 相对这三者的核心区别是:(1) 用物体中心而非网格/启发式的 flow 表征,天然对本体不敏感;(2) 用完全学习出的(而非启发式的)flow-to-action 策略,且该策略只需任务无关的仿真 play data、不需要任务专用仿真环境或真实机器人数据。策略中的时序对齐(temporal alignment)模块沿用了同组前作 XSkill(Xu et al. 2023)的技能对齐思想,并将其扩展到更复杂的 flow 域;动作头直接复用 diffusion-policy(Chi et al.)的扩散策略架构。

模型架构

系统由两个独立训练、推理时串联的模块组成:

Flow 生成网络(开环,任务开始时运行一次):

  • 表征:用 Grounding DINO 在初始 RGB 帧上获取物体 bounding box,在框内均匀采样得到矩形 flow ℱ₀∈R^(3×H×W)(H=W=32,前两通道是关键点 u,v 坐标,第三通道是可见性),再用 TAPIR 做点跟踪得到时序 flow 序列 ℱ_{1:T}∈R^(3×T×H×W)(T=32,即 1024 个关键点、32 步)。
  • 骨干:直接复用 Stable Diffusion 的 VQGAN 自编码器(AE)把 flow 压缩进预训练好的、结构良好的图像潜空间(固定 encoder,微调 decoder 使其适配 flow 图像),再在该潜空间上用 AnimateDiff 的运动模块(沿时间轴做自注意力)对 SD U-Net 做时序膨胀,作为 flow 生成模型。训练时运动模块从零训练,同时只向 SD U-Net 插入 rank=128 的 LoRA 层(不全量微调 U-Net)。
  • 条件注入:任务描述经 CLIP 文本编码器;初始帧经 CLIP 图像编码器(openai/clip-vit-large-patch14,冻结)得到逐 patch 嵌入;初始关键点 ℱ₀ 用固定 2D 正弦位置编码;三者经 zero-initialized 线性层后通过 cross-attention 注入去噪过程。
  • 生成的 flow 经运动滤波(moving filter + SAM filter + 深度滤波)后保留物体中心关键点。

Flow-条件模仿学习策略(闭环,逐步执行):策略建模为 p(a_t | ℱ_{0:T}, s_t, ρ_t),输出长度 L=16 的动作序列,单步动作 a_t 为 6-DoF 末端位置 + 1-DoF 夹爪开合。

  • 状态编码器 ϕ:4 层 encoder-only transformer,输入为当前 N=128 个关键点位置(2D 正弦编码,192 维)与其初始 3D 坐标(线性投影,192 维)拼接成的 384 维描述子,用 CLS token 汇总为状态表征 s_t(384 维)。
  • 时序对齐模块 ψ:8 层 transformer,以完整任务 flow ℱ_{0:T}、当前状态 s_t、本体感知 ρ_t 为输入,预测剩余任务 flow 的潜表征 z_t;监督信号 ẑ_t 由另一 4 层 transformer 编码器 ξ 编码真实剩余 flow f_{t:T’} 得到,用 L2 loss ‖ẑ_t − z_t‖² 监督(训练时 detach ẑ_t 以稳定训练)。
  • 扩散动作头:复用 diffusion-policy 架构,DDIM 调度器,训练 50 步扩散步、推理 16 步。

数据

全程不采集任何真实机器人示教数据,训练数据分两类:

  • 仿真 play data(用于训练 flow-条件策略):MuJoCo 引擎,UR5e 机器人通过预定义随机启发式动作探索三类环境,共采集 4800 条随机 play 轨迹
    • 刚体:5 种物体(玩具车、鞋、迷你台灯、平底锅、马克杯),机器人抓取后沿随机 3D 三次贝塞尔曲线(16 个等距路点)运动,每 episode 采样两段连续曲线;
    • 铰接:多种抽屉(均与真实测试用的不同),随机开启到不同程度;
    • 可变形:随机放置的方巾,抓左/右角后随机执行 9 种预定义折叠目标之一,折叠轨迹的抬升高度也随机化。
    • 关键点获取:先在初始帧均匀采样 30×30 网格关键点并用 TAPIR 跟踪,再用移动滤波+SAM 滤波去掉背景点,之后基于 SAM 分割按滤后关键点数量比例补采样,使每个物体最终得到 900 个密集物体关键点,重新跑一次点跟踪得到密集物体 flow。
  • 真实世界人类演示视频(仅用于训练 flow 生成网络):4 个任务(拿放、倾倒、开抽屉、叠布),每任务 100 段人类手部演示,RealSense 相机 720p/30fps 录制,共约 400 段;混合后统一训练一个 flow 生成模型。任务定义:拿放(抓绿杯放红盘)、倾倒(抓绿杯倒向红碗、旋转>30°)、开抽屉(完全打开随机摆放的抽屉)、叠布(33cm×33cm 方巾从一角折向对角)。人类视频里用 Grounding DINO 取 bbox、H=W=32 均匀采样 1024 个初始关键点,每段 episode 再均匀采样 32 帧构成任务 flow。
  • 仿真与真实之间没有图像层面的域适配,唯一桥接介质是 flow 本身;论文明确假设仿真与真实之间物体动力学一致(同一动作应产生同一物体 flow),这一假设在可变形物体(布料)上最弱,也是真实世界表现下降最明显的来源。

训练方法

两阶段完全独立训练(无端到端联合优化,虽然论文指出结构上可行):

  1. Flow 生成网络:先微调 SD 1.5 decoder 400 epoch(学习率 5e-5)以适配 flow 图像重建;再训练 AnimateDiff 运动模块(从零训练)+ SD U-Net 的 rank=128 LoRA 层,4000 epoch,学习率 1e-4,AdamW(weight decay 1e-2,betas (0.9, 0.999),eps 1e-8)。
  2. Flow-条件策略:500 epoch,学习率 1e-4,同样的 AdamW 超参。任务 flow 水平 T=32(与生成网络输出对齐),动作序列长度 L=16;训练样本的 N=128 个关键点每次从全部候选点中随机抽取;构造任务 flow 时从 episode 全长 T’ 中随机采样 T 帧,但强制包含首尾两帧以保证 flow 完整性。
  3. 消融验证 LoRA 预训练价值(附录 B):对比”用预训练 SD 权重 + LoRA”与”U-Net 从零训练”两种方案,在仿真跨本体(球形机器人替代 UR5e 模拟人手演示)设置下评测:Pretrain U-Net 90/95/90/35(Pick&Place/Pour/Drawer/Cloth),U-Net From Scratch 90/90/95/30 —— 两者最终精度接近,预训练主要贡献在训练效率(LoRA vs. 全量重训)而非上限精度。

Infra(训练 / 推理工程)

  • 训练:GitHub 仓库注明用 HuggingFace Accelerate 做多卡训练,mixed_precision='fp16';论文正文与附录均未披露具体 GPU 型号、卡数或训练总 GPU-小时(未披露)。
  • 推理(真实世界部署):单台配备 24GB NVIDIA RTX 4090 的桌面机同时运行 flow 生成网络推理、flow-条件策略推理与在线点跟踪。UR5e 通过 2.5Hz 的策略指令接收末端执行器位置命令(末端速度上限 0.2 m/s,位置下限距桌面 1cm);在线点跟踪(TAPIR)以 5Hz 运行,输入为 RealSense D415 采集的 720p/30Hz RGB 图像下采样到 256×256 后的结果;Grounding DINO 物体检测输入分辨率 480×640,仅在任务开始时调用一次。

评测 benchmark

仿真评测(Table 1,跨本体设置:用球形机器人替代 UR5e 模拟人手演示,为各方法提供 flow;20 episodes/任务/方法):

方法Pick&PlacePourDrawerCloth
GridFlow(ATM 式均匀网格 flow)any-point-trajectory-model-atm30253545
Heuristic(general-flow + Track2Act 式启发式策略,提供 ground-truth 3D flow)7050300
No alignment(去掉时序对齐模块的消融)80859090
Im2Flow2Act100959590

真实世界评测(Table 2,完整系统:用训练好的 flow 生成网络产生的 flow 驱动策略;20 episodes/任务/方法):

方法Pick&PlacePourDrawerCloth
Heuristic(同上,仍提供 ground-truth 3D flow)3020400
No alignment55408060
Im2Flow2Act90808570

真实世界四任务平均成功率 81%((90+80+85+70)/4=81.25%),论文强调相对同任务仿真设置只下降约 15 个百分点。启发式基线(Heuristic)即使被喂入 ground-truth 3D flow 和最优抓取位姿,在铰接/可变形物体上仍严重失败(如开抽屉时若相机视角下点云中心不是好的接触点会把抽屉推回),且在真实世界频繁触发 UR5e 急停(因其无阻抗控制,姿态估计的小误差会被放大);GridFlow 因均匀网格 flow 混入了本体自身运动,在跨本体迁移时产生分布外输入,表现显著更差;No alignment 消融显示去掉时序对齐模块后仿真精度小幅下降但执行不平滑(会出现突然转动等冗余动作),真实世界(尤其拿放和倾倒任务)精度大幅下降,因为人类演示产生的 flow 与仿真 flow 分布有别,策略难以在潜空间中找到相近轨迹。

创新点与影响

  • 贡献:(1) 提出物体中心(而非网格/嵌入本体运动)的 flow 表征作为跨本体、跨环境统一接口,相较 ATM 式网格 flow 更适合跨本体迁移;(2) 复用 Stable Diffusion 预训练自编码器把 flow 压缩进结构良好的潜空间、并用 AnimateDiff+LoRA 做高效时序建模,相较此前直接在原始 flow 空间训练的方法(ATM、General Flow、Track2Act)训练效率更高;(3) 训练出一个完全学习的、闭环的 flow-to-action 策略,且只需任务无关的仿真 play data(不需要任务专用仿真环境,也不需要真实机器人数据),区别于 General Flow / Track2Act 依赖启发式姿态估计策略(且后者仍需额外真实机器人数据做残差策略训练);(4) 时序对齐模块解决了”策略在非结构化 play data 上训练、却要泛化到人类视频生成的、执行节奏不同的任务 flow”这一分布错配问题。
  • 论文自陈局限:系统采用 2D flow 作为动作接口,本质上无法消歧 3D 动作(倾倒任务的主要失败模式即相机 z 轴方向精度不足);框架假设仿真与真实之间物体动力学一致(同一动作产生同一 flow),但可变形物体仿真本身就困难,导致布料折叠任务真实部署时成功率下降最明显;系统假设仿真中的相机视角已与真实测试环境标定一致,且动作在相机视野内可见(flow 生成阶段的视角不受此约束);用 flow 做动作抽象会丢弃部分动作细节,可能不足以支持如手内操作(in-hand manipulation)等灵巧任务。

原始链接

一手源存档(sources/)

  • im2flow2act—project-page — 项目主页(摘要、系统流程图解、任务视频说明、BibTeX)
  • im2flow2act—github-readme — GitHub README(安装、数据集/checkpoint 下载清单、训练命令、数据字段说明、多卡训练配置)
  • arXiv 原文 PDF(2407.15208),不入 git