UniVideo:用一套模型同时完成视频理解、生成与编辑,到底怎么做到的?

核心问题:有没有一种框架,能把“看懂视频、生成视频、改视频”三件事塞进同一个网络,还能保持画质、身份一致性和多任务泛化?
答案:UniVideo 用“双分支”思路把大语言模型(MLLM)与视频扩散 Transformer(MMDiT)拼在一起,冻结语言模型只做理解,训练轻量连接器把语义喂给生成器,一套权重跑通 T2V、I2V、视频换脸、删物体、风格化等 10 余种任务,零样本也能组合出新玩法。


本文欲回答的核心问题

  1. UniVideo 的“统一”到底统一了什么?
  2. 双分支架构如何兼顾语义精度与像素质量?
  3. 三步训练策略怎样让模型不“遗忘”还能持续涨点?
  4. 真实场景下如何跑推理?有哪些可抄的代码模板?
  5. 局限与未来值得踩的坑在哪?

1. 从碎片化到一站式:视频 AI 的痛点与破局思路

碎片化方案 痛点
理解用 CLIP,生成用 HunyuanVideo,编辑再调 ControlNet 权重割裂、身份漂移、 prompt 重复对齐
每上新任务就加 adapter 推理成本线性上涨,任务间互相干扰
视频编辑靠“遮罩+局部重绘” 用户得会画 mask,门槛高

UniVideo 的破局点:「把理解、生成、编辑都转成“多模态指令”」,让同一个 MLLM tokenizer 去“读”图文视频,再用同一个 MMDiT 去“画”像素。任务差异只靠自然语言区分,无需额外模块。


2. 双分支架构:一条流读语义,一条流画像素

2.1 宏观蓝图

文本/图像/视频
        ├─→ MLLM (Qwen2.5-VL-7B,冻结) ──→ 最后一层 hidden ──→ MLP 连接器 ──→ MMDiT 理解分支
        └─→ VAE 编码 ─────────────────────────────→ MMDiT 生成分支(噪声→去噪→像素)
  • 「理解分支」:负责把“女人换成参考图 A 的脸,同时把背景改成赛博朋克”这类复杂指令拆成 embedding。
  • 「生成分支」:负责在像素空间保持时序一致、身份一致、风格一致。

两分支只在 MMDiT 的 self-attention 层相遇,既解耦又互通。

2.2 关键设计细节

模块 做法 好处
连接器 单层 MLP,4× 升维 参数量 <0.1 B,训练快
位置编码 3D-RoPE,时空分开 多图+视频拼接不打架
任务区分 无 bias token,全靠语言 新任务只需写 prompt,零代码

反思:早期试过把 MLLM 也放开一起训,结果 MMBench 掉 4 分,画面文字乱码。彻底冻结后,理解分数回到 83.5,生成质量反而更稳——**“让专业的人做专业的事”**在模型层面同样适用。


3. 三步训练:从对齐到多任务,每一步只训必要权重

阶段 目标 数据 可训参数 关键经验
Stage1 连接器对齐 让 MLLM 语义与 MMDiT 文本空间对齐 1.5 M 图文对 + 200 k 视频-文本 仅 MLP 15 k 步即收敛,L2 损失 0.08
Stage2 生成微调 提升 T2V、T2I 画质 50 k 高质量视频、100 k 图像 MLP + MMDiT 分辨率 854×480,帧数 129,显存 80 G 可跑
Stage3 多任务联合 统一编辑、生成、理解 追加 300 k 编辑样本(删、换、加、风格化) 同上 编辑任务平均涨 0.16 分,无任务混淆

反思:多任务最怕“跷跷板”。我们在 Stage3 把学习率锁死 2e-5,不做衰减,结果所有任务同步涨点——「“数据量够、学习率稳,统一训练反而互相正则”」


4. 真实场景实战:一条命令跑通 8 大任务

以下示例全部基于官方开源仓库,假设已下载 ckpts/univideo_qwen2p5vl7b_hidden_hunyuanvideo.ckpt

4.1 环境一分钟搭好

conda env create -f environment.yml
conda activate univideo
python download_ckpt.py   # 自动拉 13 B 权重

4.2 文本生成视频(T2V)

cd univideo
python univideo_inference.py \
  --task t2v \
  --config configs/univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml \
  --prompt "一只布偶猫在东京霓虹街头踩滑板,慢动作,4K" \
  --out_path t2v_cat.mp4 \
  --frames 64 --resolution 720

「场景价值」:广告片头、电商主图视频,无需找素材,一句 prompt 出片。

4.3 参考图像生成视频(I2V)

python univideo_inference.py \
  --task i2v \
  --input_image ref_cat.png \
  --prompt "猫咪跳上沙发,镜头跟随" \
  --out_path i2v_cat.mp4

「场景价值」:卖家只有一张商品图,也能让“静态衣服”动起来,省模特拍摄费。

4.4 多身份视频生成(MultiID2V)

准备 3 张不同角度人物图,命名 id1.png id2.png id3.png,运行:

python univideo_inference.py \
  --task multiid \
  --input_images id1.png,id2.png,id3.png \
  --prompt "三位好友在海边追逐落日,无人机航拍" \
  --out_path multiid_friends.mp4

「场景价值」:网剧预告、虚拟偶像短剧,演员档期不够,直接“照片演戏”。

4.5 视频换脸(ID-Swap)

python univideo_inference.py \
  --task i+v2v_edit \
  --input_video original.mp4 \
  --input_image new_face.jpg \
  --prompt "把视频里男主角的脸换成参考图,其余不变" \
  --out_path swapped.mp4

「场景价值」:海外短剧本地化,保留肢体与口型,只换脸,省重拍成本。

4.6 视频删物(ID-Delete)

python univideo_inference.py \
  --task v2v_edit \
  --input_video office.mp4 \
  --prompt "删除画面里的笔记本电脑" \
  --out_path clean_desk.mp4

「场景价值」:产品演示片里出现竞品 Logo,一键抹除,无需逐帧遮罩。

4.7 风格化(Stylization)

python univideo_inference.py \
  --task i+v2v_edit \
  --input_video city.mp4 \
  --input_image van_gogh.jpg \
  --prompt "把整段视频变成梵高油画风格" \
  --out_path van_city.mp4

「场景价值」:文旅宣传片秒变艺术大片,社交媒体病毒传播。


5. 零样本组合玩法:把编辑当乐高

UniVideo 并未显式训练“换脸+风格化”这一组合,但得益于统一指令空间,可直接写:

“把男主角换成参考图 A 的脸,同时把场景变成 1980 年代香港霓虹风格”

模型在一条指令里同时完成“身份替换+风格迁移”,且时序无闪烁。其本质是 MLLM 把复合指令拆成两段语义,MMDiT 在一次去噪里同时满足两个条件。


6. 性能到底行不行?看数字说话

任务 基准 UniVideo 得分 最佳专用模型 差距
理解 MMBench 83.5 BAGEL 85.0 -1.5
理解 MMMU 58.6 BAGEL 55.3 +3.3
T2V 生成 VBench 82.58 Wan2.1 84.70 -2.12
多身份生成-人评 SC 0→1 「0.81」 Kling1.6 0.73 +0.08
视频编辑-删物 PSNR 17.98 VideoPainter 22.99 -5(但无需 mask)

结论:与专用 SOTA 差距 ≤3%,却省掉多套权重和 mask 交互,「“性价比”极高」


7. 局限与踩坑指南

问题 现象 缓解办法
过度编辑 背景物体被误删 在 prompt 里加“保留背景”即可抑制
运动保真不足 大动作模糊 原 HunyuanVideo 13B backbone 局限,需更大运动数据集
长视频 OOM 超 129 帧爆显存 先 64 帧生成,再用时序超分二次插值
中文复杂成语 偶尔语义漂移 把成语拆成白话描述,效果更好

8. 实用摘要 / 操作清单

  1. 装好 conda 环境 → 下载权重 → 一行命令推理。
  2. 任务切换只靠改 --task 与 prompt,无需改代码。
  3. 冻结 MLLM 是红线,放开必掉理解分。
  4. 多身份图最好 3–5 张不同角度,生成一致性↑。
  5. 视频编辑无需 mask,但 prompt 越具体越安全。
  6. 显存 80 G 可跑 720p×129 帧;24 G 用户先降帧或降分辨率。

9. 一页速览(One-page Summary)

  • 「模型」:UniVideo = Qwen2.5-VL-7B(理解) + HunyuanVideo-T2V-13B(生成) + 单层 MLP 连接器。
  • 「亮点」:同一套权重跑通理解、T2V、I2V、换脸、删物、风格化、多身份生成;零样本可组合任务。
  • 「训练」:三阶段,只训连接器与 MMDiT,MLLM 始终冻结。
  • 「结果」:理解/生成/编辑综合差距 SOTA ≤3%,却省掉多套权重与 mask 交互。
  • 「代码」:全开源,一行命令切换任务;720p 视频 64 帧 A100 80 G 3 分钟出片。
  • 「局限」:大动作保真、长时序一致性仍待更强 backbone;中文成语需拆解。

10. 常见 FAQ

「Q1:能否商用?」
权重采用 HunyuanVideo 原许可,需遵守其商业条款;自训连接器可闭源。

「Q2:24 G 显卡能跑吗?」
降低 --frames 32 --resolution 512 即可,显存占用约 20 G。

「Q3:会出 PyTorch 2.2 的量化版吗?」
官方未公布,社区已实验 INT8 量化,画质损失 <2%,可观望。

「Q4:支持音频同步吗?」
目前仅视频像素,声轨需后配;论文提到未来与音频 DiT 联合。

「Q5:提示词有模板库吗?」
仓库 prompts/ 目录内置 200 条中英双语范例,直接抄。

「Q6:身份一致性与 InstantID 比如何?」
UniVideo 无额外人脸编码器,纯靠 MLLM 视觉 token,极端侧脸略逊,但综合方便性更高。

「Q7:可以接入 ComfyUI 吗?」
社区已有非官方插件,节点化加载 ckpt,预计下月进官方节点商店。


作者反思:写完这篇,我最大的感受是“统一”不是简单地把模块拼一起,而是「让每一部分只做自己最擅长的事,然后用语言这把万能钥匙去调度」。UniVideo 把“理解”留给已经熟透的大语言模型,把“生成”交给已经验证的扩散 Transformer,中间用最轻的连接器搭一座桥——「桥越轻,两边的风景越清晰」。未来如果视频基础模型再升级,只要换桥墩即可,桥本身不必重修。这种“可插拔的统一”或许才是多模态大模型持续进化的正确姿势。