ARMFlow: AutoRegressive MeanFlow for Online 3D Human Reaction Generation¶
会议: CVPR 2026
论文: CVF Open Access
代码: https://github.com/ZenGengChin/armflow_official
领域: 3D视觉 / 人体理解 / 动作生成
关键词: 3D人体反应生成, MeanFlow, 自回归生成, 单步推理, 实时动作合成
一句话总结¶
把"单步生成"的 MeanFlow 范式首次引入人体动作领域,用一个"因果上下文编码器 + 轻量 MLP 速度预测器"的自回归结构,配合自举历史训练(BSCE)抑制误差累积,让在线 3D 人体反应生成在单次推理内完成,FID 比已有在线方法降约 30%,速度还最快。
研究背景与动机¶
领域现状:3D 人体反应生成(action–reaction)要根据一个"主动者"(actor)的动作实时合成一个"反应者"(reactor)的动作,典型场景是人机交互、AR/VR。它和文本到动作、人物交互生成不同——条件是连续演化、不可预知的,必须实时响应,容不得秒级延迟。
现有痛点:要在线生成就必须用自回归结构来建模过去/未来动作的时序依赖,但现有自回归方案(CAMDM、HumanX)有两个硬伤。其一是固定长度上下文窗口:CAMDM 只看前 10 帧历史,超出窗口的信息直接丢掉,长序列上语义漂移严重,而且无法从零(t=0、无历史)起步生成。其二是多步去噪太慢:它们基于扩散模型,即便用 DDIM 加速也通常要 ≥8 步,在细粒度时间分辨率下计算开销大。另一类如 R2R 虽然做了全历史编码,却要 50 步推理,效率被拖垮。
核心矛盾:高保真、实时、长程上下文这三者在已有框架里很难同时满足——上下文窗口越长越准但越慢,去噪步数越多越真但越不实时。同时,自回归推理天然会累积误差:模型训练时只见过干净的真值历史,推理时却要吃自己生成的、带噪的历史,越滚越偏。
本文目标:(1) 用单步推理满足实时约束;(2) 编码全量历史而非固定窗口,保住全局语义;(3) 让模型在训练阶段就学会处理"自己生成的不完美历史",抑制误差累积。
切入角度:作者注意到新近提出的 MeanFlow 范式——它不学每个时刻的瞬时速度场,而是直接学整条轨迹上的平均速度,因此一步积分就能从噪声跳到数据。把它接到自回归动作生成上,恰好同时解掉"慢"和"步数多"。
核心 idea:用 MeanFlow 的单步平均速度场替代多步扩散去噪做反应生成,再用一个因果全历史编码器替代固定窗口,并在训练里用模型自己生成的历史(而非真值历史)做条件,让它提前适应误差累积。
方法详解¶
整体框架¶
ARMFlow 要解决的是"给定文本 \(\text{text}\) 和主动者动作序列 \(x^a\in\mathbb{R}^{T,D}\),在线逐帧合成反应者动作 \(x^b\in\mathbb{R}^{T,D}\)"。整套方法分三层:先用一个 1D-CNN VAE 把 actor / reactor 动作压进共享连续隐空间;然后在这个隐空间上做 MeanFlow 生成——离线版 ReMFlow 用一个 DiT 整段一次性出,在线版 ARMFlow 用"DiT 因果上下文编码器 + MLP 速度预测器"逐 token 自回归出;训练阶段对在线模型施加 BSCE,用模型自己生成的历史构造上下文条件,渐进式引入累积误差以提升鲁棒性。
在线推理时是一个自回归回环:起始用一个可学习的 \(\langle sos\rangle\) token 当初始历史,每步把当前 actor token、一个高斯噪声 token 喂给 MLP,单步预测平均速度并解出当前 reactor token,再把它缓存进历史、驱动下一步,直到 actor token 用尽。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入<br/>actor 动作 + 文本"] --> B["CNN-VAE 运动压缩<br/>连续隐 token"]
B --> C["因果上下文编码器<br/>DiT + 因果掩码,编码全历史"]
C -->|上下文 ci + 文本| D["MLP 速度预测器<br/>MeanFlow 单步平均速度"]
D --> E["解出当前 reactor token<br/>b = ε − û"]
E -->|"缓存进历史<br/>(训练时走 BSCE 自举)"| C
E --> F["CNN-VAE 解码<br/>reactor 动作输出"]
关键设计¶
1. MeanFlow 单步生成:把多步去噪压成一次平均速度积分
针对"扩散/流模型要多步去噪太慢"这个痛点,本文不再学瞬时速度场 \(v(z_\tau,\tau)\),而是学任意两个时刻 \(r,t\) 之间的平均速度:
这样从 \(r=0\)(噪声)到 \(t=1\)(数据)只需一步积分就能采样,推理成本骤降。对两边用 Leibniz 法则求导得到训练目标 \(\mathcal{L}(\theta)=\mathbb{E}\lVert u_\theta(z_t,r,t)-\mathrm{sg}(u_{tgt})\rVert_2^2\),其中目标 \(u_{tgt}=v(z_t,t)-(t-r)\big(v(z_t,t)\partial_z u_\theta+\partial_t u_\theta\big)\),\(\mathrm{sg}(\cdot)\) 是 stop-gradient 稳定优化,雅可比–向量积(JVP)由自动微分算、不显式构造雅可比以省显存。作者还用了有偏时间采样:让一部分时间对满足 \(r=t\)(概率设 0.25),专门强化瞬时速度 \(v(z_t,t)\) 的学习,对反应动作里关键的高频成分尤其有帮助。这是首个把 MeanFlow 用到人体动作生成的工作,也是它能"单次推理 + 高保真"的根。
2. 因果上下文编码器 + MLP 速度预测器:全历史自回归替代固定窗口
针对 CAMDM/HumanX 固定窗口"看不远、丢信息、无法从零起步"的痛点,ARMFlow 借鉴 MAR 的结构,把生成拆成"重的上下文编码 + 轻的速度预测"两半。编码器是 DiT 主干:把 actor 与 reactor 历史 token \((a_i,b_i)\) 沿最后一维拼接,前置可学习 \(\langle sos\rangle\) 保证 \(t=0\) 也能推理,文本经归一化层(AdaLN)注入,并施加因果掩码强制只看过去——于是它能从零编码、保留全部历史、不再受窗口长度限制,全局时序语义得以保留。编码出的上下文 \(c_i\) 与上采样后的时间对 \((r,t)\) 一起,作为条件喂给一个 AdaLN 调制的轻量 5 层 MLP 速度预测器;当前从速度场插值得到的 reactor 样本 \(b_i^{r,t}\) 进 MLP,输出平均速度 \(\hat{u}^{r,t}\),反推出 reactor token。由于在线条件里多了"累积历史",做 CFG 时也相应给 null token 配上 null 历史,保持条件接口一致。
3. BSCE 自举上下文编码:训练就喂模型自己生成的历史,提前吃下误差累积
针对自回归"训练见真值、推理吃自带噪历史 → 越滚越偏"的痛点,HumanX 用 history-rollout 渐进替换真值历史,但有三个毛病:为稳训要逐步从生成历史里减去真值、拖慢收敛;模型收敛后生成历史越来越像真值、自增强不足;只换 reactor 历史不换 actor、容易过拟合 actor 动作。BSCE 直接从训练最开始就把 actor 和 reactor 历史双双换成模型生成的样本(见算法 1):每个 iteration 采一条样本,初始化上下文缓冲 \(Z=\{\langle sos\rangle\}\),自回归跑 \(K\) 步,每步编码上下文、采 \((r,t)\) 和噪声、单步预测速度并解出 token 追加进 \(Z\)、累计损失,最后用平均损失更新参数;并按调度逐渐增大自回归步数 \(K\)。随训练推进,生成历史会自然逼近真实轨迹,相当于一条"上下文噪声随时间递减"的自适应课程;而递增的 \(K\) 又主动放大累积误差、把可控噪声注回去,增强对累积误差的鲁棒性。关键是 BSCE 天然契合 MeanFlow——单步推理让"生成增广历史样本"几乎零代价,不像 HumanX 那样 rollout 要跑多步扩散,训练效率大幅提升、收敛也更快。
损失函数 / 训练策略¶
- CNN-VAE:连续隐 token + KL 正则 \(\mathcal{L}_{VAE}=\mathbb{E}_{q(z|x)}[\log p(x|z)]-\mathrm{KL}(q(z|x)\Vert p(z))\),并加逆运动学(IK)loss 约束关节位置、速度 loss 保平滑;用连续而非离散量化是因为 reactor 动作高度动态、缺乏标准化,离散码本会损失精度。
- MeanFlow 主目标:式 (2)(3),时间步取 logit-normal 采样,\(r=t\) 概率 0.25。
- CFG:训练期内置无分类器引导(构造 Ground-Truth Field),ReMFlow 取 \(\omega=1.8\)/2.0(InterHuman/InterX),ARMFlow 取 \(\omega=1.8\)/1.2。
- 超参:DiT 512 维、7 层、8 头带 skip;MLP 5 层;batch 64;AdamW,lr \(1\times10^{-4}\);H100 训练。ARMFlow 在 4 帧粒度上做实时合成。
实验关键数据¶
数据集:InterHuman(7,779 条交互序列,AMASS 22 关节)与 InterX(11,388 条,SMPL-X 55 关节),均带 3 条文本描述。指标:FID(保真)、R-Precision@1/2/3 与 MM Dist(文本-动作语义对齐)、Diversity、MModality。
主实验(在线生成对比)¶
| 数据集 | 模型 | FID ↓ | R-Prec@3 ↑ | MM Dist ↓ |
|---|---|---|---|---|
| InterHuman | CAMDM | 4.000 | 0.587 | 3.828 |
| InterHuman | ReGenNet | 4.176 | 0.600 | 3.817 |
| InterHuman | R2R(次优) | 2.795 | 0.674 | 3.793 |
| InterHuman | ARMFlow | 2.178 | 0.699 | 3.783 |
| InterX | ReGenNet | 0.071 | 0.690 | 3.843 |
| InterX | R2R | 0.063 | 0.704 | 3.745 |
| InterX | ARMFlow | 0.042 | 0.711 | 3.728 |
在线设定下,ARMFlow 在 InterHuman 上 FID 比次优的 R2R 相对降约 28%(2.795→2.178),R-Prec@3 直逼真值(0.699 vs 真值 0.701);InterX 上同样最优。有意思的是,ARMFlow 的在线 FID 甚至略低于自己离线版——说明在线自回归并不必然掉点。速度上,ARMFlow 每个实时步只做一次推理,而 ReGenNet 35–78 ms、CAMDM 45 ms、InterMask(离线)需 ≥20 步约 0.77 s、R2R 需 50 步。
离线版 ReMFlow 也在两数据集上拿到 SOTA:InterHuman FID 2.433(优于 InterMask 3.453、ReGenNet* 2.930),InterX FID 0.058,且仅需单次前向。
消融实验¶
| 配置 | FID ↓ (InterHuman) | FID ↓ (InterX) | 说明 |
|---|---|---|---|
| ARMFlow-GTE(真值历史编码) | 5.136 | 0.548 | 只见真值历史,推理崩 |
| ARMFlow-Rollout(HumanX 策略) | 4.161 | 0.192 | 渐进 rollout,仍明显差 |
| ARMFlow(BSCE) | 2.178 | 0.042 | 自举双历史 |
| 换 DDIM-10 | 3.528 | 0.093 | 同架构改扩散目标 |
| 换 DDIM-50 | 3.449 | 0.064 | 多步扩散仍不及 |
| 换 Rectified Flow-10 | 2.449 | 0.059 | 流匹配也不及 MeanFlow |
关键发现¶
- BSCE 是抗误差累积的关键:相比直接喂真值历史(GTE,FID 5.136)和 HumanX 的 rollout(4.161),BSCE 把 InterHuman FID 压到 2.178、InterX 压到 0.042,提升幅度巨大——印证"训练就让模型吃自己生成的双历史"远比只换 reactor 历史/渐进减真值有效。
- MeanFlow 优于扩散/流匹配:固定架构只换生成目标,MeanFlow 在两数据集、在线/离线四种设置里 FID 与语义对齐全面最好,且单步生成让 BSCE 的历史增广近乎免费、训练大幅加速。
- 离散 vs 连续表示:InterMask 的共享 VQ-VAE 过度压缩动作特征、重建变差,FID 明显偏高——这正是本文坚持用连续隐 token 的理由。
- 短序列上 ReGenNet 更吃香:InterX 序列短,ReGenNet 的短时注意力反而较有效,但仍不及 ARMFlow。
亮点与洞察¶
- 把 MeanFlow"单步平均速度"接到自回归动作生成:一步解决"慢"和"多步",是全文最巧的杠杆点——单步推理不仅省时,还让 BSCE 的"生成历史增广"几乎零成本,二者天然耦合。
- BSCE 的"双历史 + 递增步数"课程:把"生成历史逐渐逼近真值"当作天然降噪课程,又用递增自回归步数主动放大累积误差注回鲁棒性,一减一增的设计很有想法,可迁移到任何自回归序列生成的 exposure bias 问题。
- 重编码器 + 轻预测器的解耦:DiT 编全历史、5 层 MLP 出速度,把"理解上下文"和"快速预测"分到不同算力档位,是兼顾长程语义与实时性的实用工程范式。
局限与展望¶
- 作者承认:当前实现对自回归小窗口没有弹性延迟处理,多智能体交互时可能出现轻微异步;且 MeanFlow 不支持扩散式的事后 classifier guidance,无法做基于优化的后处理修正。
- 自己观察:在线 ARMFlow 的 CFG 强度 \(\omega\) 在两数据集上差异较大(1.8 vs 1.2),暗示对条件强度较敏感、需逐数据集调;消融主要围绕 FID/R-Prec,缺少对"实时延迟稳定性 / 长序列漂移随帧数变化"的定量曲线,⚠️ 端到端实时延迟仅在 Fig.1 定性给出,未列严格 wall-clock 表。
- 改进方向:把弹性延迟/多智能体异步纳入训练目标;探索 MeanFlow 下可用的轻量引导机制以补回后处理修正能力。
相关工作与启发¶
- vs CAMDM / HumanX:它们用固定长度上下文窗口的自回归扩散,看不远、无法从零起步、需多步去噪;本文用因果全历史编码器 + MeanFlow 单步,既保全局语义又实时,FID 大幅领先。
- vs ReGenNet:它是 transformer-decoder 扩散、每步从高斯噪声初始化 reactor 且只条件于 actor 前一帧,时序不连贯;ARMFlow 显式利用 reactor 自身历史做自回归,长序列更稳。
- vs R2R:同样做全历史编码,但 R2R 要 50 步推理效率被拖垮;本文单步推理,在线 FID 还相对再降约 28%。
- vs MAR(图像自回归):借鉴其"上下文编码器 + 轻 MLP"解耦结构,但 MAR 用 MAE 式随机掩码降误差传播,对要求时序一致的实时任务不合适;本文换成因果掩码 + BSCE 这一更贴合有序/实时生成的方案。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首个把 MeanFlow 用于人体动作生成,并用 BSCE 把单步推理与抗误差累积训练自然耦合。
- 实验充分度: ⭐⭐⭐⭐ 在线/离线 × 两数据集 + 生成目标/训练策略双消融充分,但实时延迟缺严格 wall-clock 表。
- 写作质量: ⭐⭐⭐⭐ 三大挑战→两大局限→三点贡献的逻辑清晰,公式与算法完整。
- 价值: ⭐⭐⭐⭐⭐ 实时高保真反应生成对 HRI/AR/VR 有直接落地价值,框架可推广到其他自回归动作任务。