GenHOI: Towards Object-Consistent Hand-Object Interaction with Temporally Balanced and Spatially Selective Object Injection¶
会议: CVPR 2026
论文: CVF Open Access
代码: 项目页(未开源代码)
领域: 视频生成 / 数字人 / 手物交互
关键词: 手物交互, 视频重演, Head-Sliding RoPE, 空间注意力门控, 物体一致性
一句话总结¶
GenHOI 给预训练视频生成大模型(Wan-14B-I2V)外挂一个仅 157M 参数(约 0.95%)的轻量模块,用 Head-Sliding RoPE(时间上把参考物体 token 的影响均摊到每一帧)+ 空间注意力门控(空间上把物体条件注意力聚焦到手物交互区),在不破坏底模泛化能力的前提下,让野外场景下的手-物交互视频既动作自然又跨帧保持物体外观一致,在自重演/跨重演各指标上显著超过 VACE、HOI-Swap 等 SOTA。
研究背景与动机¶
领域现状:数字人视频合成(电商带货、在线教育里的"主播拿着产品演示")里,手-物交互(Hand–Object Interaction, HOI)是核心难点:模型既要生成物理上说得通的手-物接触,又要在整段视频里保住参考物体的颜色、纹理、logo 等身份信息。目前两条主流路线——专门的 HOI 重演方法(HOI-Swap 的逐帧 warp、Re-HOLD 的布局引导扩散)和通用的"全能"视频编辑模型(VACE)。
现有痛点:HOI 专用方法基本都是 in-domain 训练和评测,换到真实野外场景就垮(论文里 HOI-Swap 自重演 PSNR 只有 24.29),因为它们重度依赖任务先验、对底模做了大量魔改,泛化丢了。全能编辑模型靠互联网级数据预训练,泛化强、鲁棒,但偏偏栽在 HOI 最关键的"物体一致性"上——同一个杯子越往后帧越走样。
核心矛盾:要泛化就得尽量少动预训练大模型、少灌任务先验;但少动模型又压不住 HOI 特有的"物体跨帧退化"。两者难以兼得。作者进一步把"退化"拆出两个具体根因:①时间维——把参考物体 token 塞进自注意力后,3D RoPE 的天然性质让"位置越远注意力越弱",给参考 token 固定一个帧坐标(如 −1)会导致它对最早帧响应最强、对最晚帧最弱,于是后面的帧物体逐渐糊掉;②空间维——参考物体信息如果无差别地灌向整张图,会污染本该保持原样的背景,引入伪影。
本文目标:在尽量保留底模能力的前提下,把参考物体信息"温柔地"注入——时间上别厚此薄彼,空间上别越界污染。
核心 idea:不重训、不加分支,只给自注意力做两处外科手术——用 Head-Sliding RoPE 让参考 token 的帧坐标在不同注意力头之间"滑动",从而把它对各帧的影响均摊开;用 空间注意力门控 硬性切断参考 token → 背景的信息流、再软性调制注入强度。
方法详解¶
整体框架¶
给定一段源视频 \(V=\{I_1,\dots,I_F\}\) 和一张物体参考图 \(I_{ref}\),目标是重演出手与该目标物体之间真实的交互。训练用自监督重建:从源视频里派生出参考视频 \(V_r\)、二值掩码视频 \(V_{mask}\) 和参考图 \(I_{ref}\),让模型从随机噪声 \(X_{rand}\) 出发、以这三者为条件把 \(V\) 重建回来:
其中 \((E,D)\) 是预训练 VAE 编解码器,\(M\) 是 DiT 去噪器,\(\psi\) 是平均池化。整条 pipeline 分三步:先用 HOI Condition Unit (HCU) 把"参考视频 + 掩码"按底模原有的输入组织方式拼进 latent,把生成任务改写成"首帧条件下的视频 inpainting";再在 DiT 的自注意力里同时插入 Head-Sliding RoPE(管时间)和 空间注意力门控(管空间),完成时间均衡、空间选择性的物体信息注入;最后 VAE 解码出视频。推理时只需换一张新的物体参考图,即可把目标视频里的物体替换重演。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["源视频 + 物体参考图<br/>+ 掩码视频"] --> B["HOI Condition Unit<br/>拼成首帧条件 inpainting"]
B --> C["DiT 自注意力"]
C --> D["Head-Sliding RoPE<br/>参考 token 帧坐标按头滑动"]
C --> E["空间注意力门控<br/>硬掩码门 + 软流量门"]
D --> F["VAE 解码<br/>生成重演视频"]
E --> F
关键设计¶
1. HOI Condition Unit:把"换物体"重写成首帧条件下的视频 inpainting
直接拿通用视频生成模型做 HOI,要么得加新分支、加参数(伤泛化),要么没法告诉模型"哪里该改、哪里该留"。HCU 的做法是不加任何分支/参数,把 HOI 线索直接揉进 latent 输入流。具体先按掩码构造参考视频 \(V_r\):首帧(\(F=0\))保留原始 \(V\) 作为外观锚点,其余帧把交互区抠掉填常数 \(\lambda=127\)(归一化后变 0),背景区保留:
然后把噪声目标 latent \(X_t\)、参考视频 latent \(E(V_r)\)、池化后的掩码 \(\psi(V_{mask})\) 沿通道维拼接成 DiT 输入 \(L_v=\mathrm{Concat}(X_t, E(V_r), \psi(V_{mask}))\)。这样一来,生成问题被改写成"首帧条件的视频 inpainting":\(E(V_r)\) 提供背景上下文,\(\psi(V_{mask})\) 告诉模型该在哪改。它解决的是"如何零侵入地把 HOI 任务接到预训练底模上",是后续两个注意力设计能生效的容器。
2. Head-Sliding RoPE:让参考物体 token 的影响在帧间被均摊,治住时间退化
这一条针对前面"时间维退化":RoPE 下位置越远注意力越弱,给参考 token 钉死一个帧坐标会让它前强后弱。已有做法(Stand-In、OminiControl 的 "separate RoPE")把条件 token 放到单独坐标空间、固定帧索引(如 −1),帧维分量形如 \(e^{j(-1)\theta}\),后果就是物体到后面帧逐渐失真。GenHOI 改成让参考 token 的帧坐标随注意力头编号 \(n_{head}\) 滑动:
其中 \(N_f\) 是 latent 视频总帧数、\(N_{head}\) 是注意力头总数。直观说:第 1 个头让参考 token"站在"第 0 帧附近,第 2 个头让它站到更靠后的帧……跨所有头平均下来,参考 token 对整段视频每一帧的注意力响应被拉平,同时仍保留各自不同的空间坐标(高/宽维不动),模型既能区分"这是参考 token 不是视频 token",又不会偏心任何一帧。消融里它比 separate RoPE 提了 1.15 dB PSNR、比 ref-in-bbox 提 0.54 dB。
3. 空间注意力门控:硬掩码门切断越界、软流量门调制强度,把容量聚到交互区
这一条针对"空间维污染"。门控分两级。硬掩码门 (Hard Mask Gate):把视频 token 分成 HOI 区 \(T_{V_{HOI}}\) 和背景区 \(T_{V_B}\),连同参考 token 一起构成 \(Q,K,V\),再用一个二值掩码 \(M\) 控制注意力里谁能看谁:
含义是:背景 query 不准去看参考物体 key(参考视频 \(V_r\) 已给背景足够上下文,再看参考物体只会引入伪影),参考 query 也不准回看视频 key(保持自我正则),于是参考信息只单向流进 HOI 区。论文可视化里参考 key 对背景 query 响应为 0、对 HOI 区 query 激活很强,验证了这点。⚠️ 注意原文公式(式 8/9)里 \(M=0\) 表示"屏蔽"、\(M=1\) 表示"放行",且式 9 写成 \(M\odot QK^\top\)(按位相乘),但图 4 标注又写"1=masked, 0=allowed",两处约定相反——按机制理解应取"\(0\) 屏蔽、\(1\) 放行",掩码作用于打分而非简单乘零(实现上通常加 \(-\infty\)),以原文为准。
软流量门 (Soft Flow Gate) 在硬截断之上再做逐 token 的动态调制(思路借鉴 LLM 里的门控):取出更新后的视频 token \(T'_v\),过 LayerNorm + 全连接 + sigmoid 得每 token 门控系数,再逐元素相乘:
它按内容放大信息量大的区域、抑制冗余响应。两者互补——硬掩码门管"信息能不能流",软流量门管"流多强",合起来就是空间注意力门控:聚焦 HOI 区、保护背景、稳健注入参考线索。
训练策略¶
基于预训练 Wan-14B-I2V,自监督重建训练:约 19,000 段视频、16× H100 (80GB) 训 3 天,学习率 \(1\times10^{-5}\)。训练时参考物体图与首帧都从原视频取;推理时参考图由用户给、首帧用图像编辑方法生成。新增可学习参数仅 157M,约占底模 16.5B 的 0.95%。
实验关键数据¶
主实验¶
评测集为重整后的 AnchorCrafter HOI(≥720p,50 段自重演 + 50 段跨重演)。指标含 PSNR/SSIM/LPIPS(保真)、FID/FVD(感知真实度)、Object CLIP(OC,物体框内 CLIP 相似度,衡量物体一致性),跨重演无 GT 故加 30 人用户研究(VQ 视频质量、RF 参考保真度,1–5 分)。
短视频生成(81 帧)自重演 + 跨重演 + 用户研究主结果:
| 设置 | 方法 | PSNR↑ | SSIM↑ | LPIPS↓ | OC↑ | 跨重演FVD↓ | 用户RF↑ |
|---|---|---|---|---|---|---|---|
| 短视频 | HOI-Swap | 24.29 | 0.843 | 0.173 | 0.787 | 570.5 | 1.20 |
| 短视频 | MimicMotion | 20.13 | 0.685 | 0.206 | 0.777 | 608.5 | 2.09 |
| 短视频 | UniAnimate-DiT | 22.20 | 0.754 | 0.179 | 0.846 | 640.5 | 2.97 |
| 短视频 | VACE(次优) | 28.60 | 0.937 | 0.056 | 0.880 | 524.7 | 2.80 |
| 短视频 | GenHOI | 31.71 | 0.952 | 0.036 | 0.937 | 429.5 | 4.64 |
GenHOI 在所有指标上明显领先最强对手 VACE,物体一致性(OC 0.937 vs 0.880)和参考保真度(RF 4.64 vs 2.80)差距尤其大。长视频生成(401 帧)领先幅度进一步拉大:自重演 PSNR 差从 3.11 扩到 4.37,跨重演 FVD 差从 95.2 扩到 267,用户 VQ 差从 0.5 扩到 1.3——印证它在长序列里物体抗退化的优势。
消融实验¶
自重演设置下逐组件消融(HCU 为基线):
| 配置 | PSNR↑ | LPIPS↓ | FVD↓ | OC↑ | 说明 |
|---|---|---|---|---|---|
| HCU | 28.25 | 0.058 | 248.6 | 0.907 | 基线:底模 + HOI 条件单元 |
| HCU + separate RoPE | 29.73 | 0.050 | 223.8 | 0.908 | 固定帧坐标的条件 RoPE |
| HCU + ref-in-bbox | 30.34 | 0.044 | 101.9 | 0.919 | 把参考图直接贴进掩码区 |
| HCU + HS RoPE | 30.88 | 0.039 | 103.9 | 0.915 | 换成 Head-Sliding RoPE |
| HCU + HS RoPE + SAG | 31.21 | 0.038 | 98.09 | 0.920 | 加空间注意力门控 |
| Full (+ FLF) | 31.71 | 0.036 | 67.95 | 0.937 | 再加首尾帧条件 |
关键发现¶
- Head-Sliding RoPE 是物体一致性的主力:相比 separate RoPE 提 1.15 dB、相比 ref-in-bbox 提 0.54 dB;ref-in-bbox 虽然能保住外观,但会把模型带偏成"贴图"而非"交互",生成不出自然接触——说明时间均摊比直接贴图更对路。
- 空间注意力门控贡献稳健但偏小:加 SAG 后 PSNR 31.21(⚠️ 正文写 31.12,与表 2 略有出入,以表为准),FVD 从 103.9 降到 98.09,主要价值在抑制背景污染、把容量约束到交互区。
- 首尾帧 (FLF) 条件锦上添花:PSNR 31.21→31.71,FVD 98.09→67.95,边界帧锚定明显提了整体质量(FVD 跌幅最大)。
- 极轻量:仅 +157M 参数(0.95%),既保住底模泛化、又几乎不增推理开销,这是它能在仅 ~19k 视频上训出 SOTA 的关键。
亮点与洞察¶
- 把"3D RoPE 远距离衰减"从 bug 当 feature 治:别人用固定坐标区分 token 类型,作者发现固定坐标恰恰造成时间偏心,于是让坐标"跨头滑动"做时间均摊——一个几乎零成本的位置编码改动就治住了长视频物体退化,很巧。
- 硬门 + 软门的分工很清晰:硬掩码门负责"能不能流"(拓扑级切断背景污染),软流量门负责"流多强"(内容级调制),把"空间选择性"这个模糊目标拆成两个正交可控的旋钮,可迁移到任何"条件信息要注入但别越界"的注入式生成任务。
- 外挂式适配范式:不重训、不加分支、只动自注意力的 0.95% 参数,就把通用视频底模特化成 HOI 专家——这套"轻量外挂保泛化"的思路对其他想复用大底模的细分任务(换装、换背景、局部编辑)都有借鉴价值。
局限与展望¶
- 依赖外部首帧编辑:推理首帧靠现成图像编辑方法生成,首帧质量/编辑能力会直接影响整段重演,论文未深入分析首帧失败时的鲁棒性。
- 掩码约定表述不一致(⚠️):式 8/9 与图 4 对"1/0 谁屏蔽"的标注相反,复现时需谨慎核对实现。
- 评测集偏窄:只在 AnchorCrafter HOI(电商/主播类场景,各 50 段)上评,物体类别、交互复杂度的覆盖有限;对更剧烈的双手操作、遮挡严重的交互是否仍稳未知。
- 硬掩码依赖准确的 HOI 区划分:硬门要先知道哪些是 HOI token、哪些是背景 token,掩码不准时(手物边界模糊)门控可能失效,作者未讨论该敏感性。
相关工作与启发¶
- vs VACE(全能视频编辑):VACE 靠互联网级数据泛化强、支持多条件,但维持物体一致性差(OC 0.880、RF 2.80);GenHOI 不追求"全能",只在自注意力里做时间/空间两处定向注入,专攻物体一致性,全指标反超。区别在于 GenHOI 把"物体退化"显式拆成时间偏心 + 空间污染并各个击破。
- vs HOI-Swap(HOI 重演专用):HOI-Swap 用逐帧 warp 把图像级 inpainting 扩到视频,in-domain 还行但野外彻底失效(PSNR 24.29);GenHOI 靠"轻量外挂保住底模泛化",野外场景 PSNR 31.71,泛化是分水岭。
- vs Stand-In / OminiControl(separate RoPE 注入条件 token):它们给条件 token 单列坐标空间但固定帧索引,导致时间响应不均;GenHOI 的 Head-Sliding RoPE 正是对这一系列方法的针对性修正。
评分¶
- 新颖性: ⭐⭐⭐⭐ Head-Sliding RoPE 用"跨头滑动帧坐标"治时间退化、硬+软双门治空间污染,切口刁钻且具体,非堆模块。
- 实验充分度: ⭐⭐⭐⭐ 短/长视频 + 自/跨重演 + 用户研究 + 逐组件消融齐全;但仅一个评测集、物体类别覆盖偏窄。
- 写作质量: ⭐⭐⭐⭐ 动机—机制—验证链条清晰,公式到位;掩码 1/0 约定与正文 PSNR 数字有小出入。
- 价值: ⭐⭐⭐⭐ 仅 0.95% 参数外挂即达 SOTA,电商/数字人换物体落地价值高,"轻量外挂保泛化"范式可迁移。