本文由「无忆研习社」精心整理,深入剖析快手可灵团队最新开源的 UniVideo 统一视频多模态模型,从技术原理到实战部署,手把手带你玩转这款集视频生成、编辑、理解于一体的开源利器。
前言:为什么 UniVideo 值得关注?
在 AI 视频生成领域,我们常常面临这样的困境:想要生成一段视频,需要用到文生视频模型;想要编辑视频内容,又得切换到专门的视频编辑工具;而如果想让 AI 理解视频内容并进行问答,还得再找一个视频理解模型。三个不同的模型,三套不同的环境配置,三种不同的使用方式——这无疑大大增加了开发和使用的复杂度。
如今,快手可灵团队联合滑铁卢大学开源的 UniVideo 模型,正式打破了这一壁垒。这是一个真正实现了「大一统」的视频多模态模型,用一个模型就能搞定视频生成、视频编辑、视频理解三大核心任务。对于内容创作者、AI 开发者、研究人员而言,这无疑是一个重磅福音。
本文由「无忆研习社」倾情整理,将从技术原理、模型架构、功能特性、本地部署、实际应用等多个维度,为你全方位解读这款开源神器,并提供详尽的本地部署教程,即使是零基础的小白也能轻松上手。
第一章:UniVideo 是什么?
1.1 项目基本信息
UniVideo 是由快手可灵团队(Kling Team)与加拿大滑铁卢大学联合研发并开源的统一视频多模态模型。该项目于 2025 年 10 月首次发布论文预印本,并于 2026 年 1 月正式开源代码和模型权重。
项目核心资源:
- GitHub 仓库:https://github.com/KlingTeam/UniVideo
- 论文地址:https://arxiv.org/abs/2510.08377
- 项目主页:https://congwei1230.github.io/UniVideo/
- 模型权重:https://huggingface.co/KlingTeam/UniVideo
- 开源协议:Apache-2.0(支持个人和商业使用)
1.2 核心特性概览
UniVideo 最大的亮点在于其「三合一」的统一能力,具体包括:
第一,文生视频(Text-to-Video)能力
给模型一段文字描述,它就能生成对应的高清视频。例如输入「一只金毛犬在海滩上奔跑,阳光洒在海面上」,模型就能凭空创造出这样一段生动的视频内容。
第二,视频编辑(Video Editing)能力
给模型一段现有视频和修改指令,它能精准地按照你的要求进行调整。比如「把视频中人物的红色衣服改成蓝色」、「将背景从城市换成森林」等,模型都能准确执行。
第三,视频理解(Video Understanding)能力
给模型一段视频,它不仅能写出详细的内容描述,还能回答你关于视频内容的各种问题,甚至支持多轮对话深入探讨视频中的剧情细节。
这三种能力的统一整合,意味着开发者和用户无需在多个不同的模型之间来回切换,大大简化了工作流程。
1.3 与其他视频模型的对比
相比于市面上其他视频生成模型(如 Sora、Runway、Pika 等),UniVideo 具有以下独特优势:
|
特性 |
UniVideo |
Sora/Runway/Pika |
|
开源程度 |
完全开源(代码+权重) |
闭源/部分开源 |
|
功能统一性 |
生成+编辑+理解三合一 |
通常只专注单一任务 |
|
部署方式 |
支持本地部署 |
大多只提供云端 API |
|
商业使用 |
Apache-2.0 许可证支持 |
通常有使用限制 |
|
任务组合 |
支持任务组合(如编辑+风格迁移) |
不支持 |
|
零样本泛化 |
图像编辑能力可迁移至视频编辑 |
通常需要专门训练 |
第二章:技术原理深度剖析
要真正理解 UniVideo 的强大之处,我们需要深入了解其背后的技术架构。本章由「无忆研习社」为你详细解读 UniVideo 的核心技术原理。
2.1 双流架构设计(Dual-Stream Architecture)
UniVideo 采用了创新的「双流架构」设计,这是其能够统一多种视频任务的关键所在。
理解流(Understanding Stream)
理解流的核心是一个多模态大语言模型(MLLM),具体采用的是阿里通义千问团队开源的 Qwen2.5-VL-7B-Instruct 模型。这个模型负责:
- 处理和理解文本指令
- 解析图像和视频输入的语义信息
- 进行复杂的多模态推理
- 生成高级语义特征供生成流使用
Qwen2.5-VL 是目前开源界最强大的多模态大语言模型之一,它采用了动态分辨率技术,能够处理任意尺寸的图像,并且支持超过一小时的长视频理解。在 UniVideo 中,Qwen2.5-VL 就像是给模型装上了一双「洞察秋毫的眼睛」和一颗「聪明的大脑」。
生成流(Generation Stream)
生成流的核心是一个多模态扩散 Transformer(MMDiT),基于腾讯开源的 HunyuanVideo 视频生成模型构建。HunyuanVideo 是目前开源领域最大的视频生成模型之一,拥有约 130 亿参数,能够生成电影级画质的视频内容。在 UniVideo 中,它负责:
- 根据理解流提供的语义特征生成视频
- 保持视频的时间一致性和空间一致性
- 处理精细的视觉细节
这种「最强大脑 + 最快画手」的组合,让 UniVideo 在理解力和表现力上都达到了开源界的顶峰。
2.2 连接器设计(Connector Design)
理解流和生成流之间通过一个可训练的 MLP(多层感知机)连接器进行桥接。具体来说:
- Qwen2.5-VL 处理多模态输入后,输出最后一层的隐藏状态(hidden states)
- MLP 连接器将这些隐藏状态转换到 MMDiT 能够理解的特征空间
- 转换后的特征与 VAE 编码的视觉潜在表示一起输入到 MMDiT
这种设计的巧妙之处在于:
- 保留了 MLLM 原有的文本生成能力
- 实现了语义信息和视觉细节的双重传递
- 连接器参数量小,训练效率高
2.3 双路径视觉输入
UniVideo 对视觉输入采用了独特的双路径处理方式:
语义路径(Semantic Path)
视觉输入(图像或视频)首先经过 Qwen2.5-VL 的语义编码器处理,提取高级语义特征。这些特征包含了对内容的理解,如「这是一个人」、「他穿着红色衣服」、「背景是海滩」等抽象概念。
视觉路径(Visual Path)
同时,视觉输入也会经过 VAE(变分自编码器)编码,生成低级视觉潜在表示。这些表示保留了精细的视觉细节,如纹理、颜色、边缘等。
双路径的结合确保了模型既能理解「是什么」,又能保持「看起来如何」,这对于视频编辑和身份保持任务尤为重要。
2.4 统一指令范式
UniVideo 将所有任务统一到一个多模态指令范式下,通过为视觉输入分配 ID 标签(如 <Image 1>、<Video 1>)来实现。这种设计的优势包括:
- 模型可以自动区分不同任务
- 支持任务组合(如「编辑+风格迁移」可以在单个指令中完成)
- 简化了用户使用方式
2.5 三阶段训练策略
UniVideo 的训练分为三个阶段,每个阶段都有特定的目标:
第一阶段:连接器对齐
- 冻结 MLLM 和 MMDiT,只训练 MLP 连接器
- 使用约 4000 万文生图和 1000 万文生视频数据
- 目标是让连接器学会如何将 MLLM 的语义特征转换到 MMDiT 的输入空间
第二阶段:生成器微调
- 冻结 MLLM,微调连接器和 MMDiT
- 使用约 1 万高质量文生图和文生视频数据
- 目标是提升生成质量,使其达到 MMDiT 原有的性能水平
第三阶段:多任务训练
- 继续冻结 MLLM,训练连接器和 MMDiT
- 引入上下文生成、视频编辑、图像编辑、图生视频等多种任务
- 目标是让模型掌握统一的多任务能力
这种渐进式训练策略确保了模型能够稳定地学习各种能力,同时避免了灾难性遗忘。
2.6 零样本泛化能力
UniVideo 的一个重要特性是其零样本泛化能力,具体表现在:
任务组合
即使没有专门训练过「编辑+风格迁移」的组合任务,模型也能在单个指令中同时完成这两个操作,比如「将视频中的人物换成卡通风格,同时把背景改成星空」。
图像到视频的能力迁移
虽然 UniVideo 没有在大规模自由形式视频编辑数据上训练,但它可以将从图像编辑数据中学到的能力迁移到视频编辑任务上,处理诸如「绿幕抠图」、「材质更换」等未见过的编辑指令。
第三章:功能模块详解
本章由「无忆研习社」为你详细介绍 UniVideo 支持的各种功能模块,帮助你全面了解这款模型的实际能力。
3.1 视频理解(Video Understanding)
视频理解是 UniVideo 的核心能力之一,它可以:
视频描述生成
给定一段视频,模型能够生成详细的文字描述,包括场景、人物、动作、情绪等各个方面。
视觉问答(VQA)
用户可以针对视频内容提出问题,模型会根据视频内容给出准确的回答。支持的问题类型包括:
- 事实性问题:「视频中有几个人?」
- 描述性问题:「主角穿的是什么颜色的衣服?」
- 推理性问题:「为什么那个人看起来很开心?」
- 时序性问题:「事件发生的顺序是怎样的?」
多轮对话
UniVideo 支持多轮对话式的视频理解,用户可以不断追问、深入探讨视频中的细节。
3.2 文生视频(Text-to-Video)
文生视频是视频生成的基础能力,用户只需提供文字描述,模型就能生成对应的视频内容。
使用示例:
输入:A cat playing piano in a jazz bar, cinematic lighting, 4K quality
输出:[生成的视频]
技术特点:
- 支持复杂的场景描述
- 生成的视频具有良好的时间连贯性
- 支持各种风格和场景类型
3.3 图生视频(Image-to-Video)
给定一张图片和描述,模型可以将静态图片「动起来」,生成以该图片为起始帧的视频。
应用场景:
- 将产品图片转化为动态展示
- 将人像照片生成动态视频
- 将风景照片添加动态效果
3.4 视频编辑(Video Editing)
视频编辑是 UniVideo 的特色能力,支持多种编辑类型:
纯文本编辑(V2V Edit)
只通过文字指令对视频进行编辑,例如:
输入视频:一个人在跑步
编辑指令:将他的运动服改成宇航服
输出:[编辑后的视频]
图文结合编辑(I+V2V Edit)
同时提供参考图片和文字指令进行编辑,例如:
输入视频:一个人在唱歌
参考图片:一件红色礼服
编辑指令:将她的衣服换成参考图片中的红色礼服
输出:[编辑后的视频]
上下文视频编辑(In-Context Video Editing)
支持更复杂的编辑操作,包括:
- 身份替换(ID Swap):将视频中的某个人换成另一个人
- 身份添加(ID Addition):在视频中添加新的人物
- 身份删除(ID Deletion):从视频中移除某个人物
- 风格化(Stylization):改变视频的整体风格
3.5 图像编辑(Image Editing)
除了视频任务,UniVideo 也支持图像编辑:
输入图片:一张咖啡杯的照片
编辑指令:将咖啡杯改成陶瓷材质
输出:[编辑后的图片]
3.6 多身份生成(Multi-ID Generation)
这是一个高级功能,允许用户同时指定多个参考身份来生成视频:
参考图片1:人物A的照片
参考图片2:人物B的照片
文字描述:两个人在公园里散步聊天
输出:[包含人物A和B的视频]
3.7 视觉提示生成(Visual Prompt Generation)
UniVideo 支持通过视觉提示来指导视频生成,用户可以提供:
- 手绘草图
- 标注图
- 示意图
- 流程图
模型会理解这些视觉提示的含义,并据此生成相应的视频内容,无需编写复杂的文字描述。
第四章:环境配置与依赖安装
本章开始进入实战环节,「无忆研习社」将手把手教你配置 UniVideo 的运行环境。
4.1 硬件要求
在开始之前,请确保你的设备满足以下最低硬件要求:
显卡要求:
|
任务类型 |
最低显存 |
推荐显存 |
|
视频理解 |
16GB |
24GB+ |
|
图像生成/编辑 |
24GB |
40GB+ |
|
视频生成/编辑 |
40GB |
80GB+ |
推荐显卡:
- NVIDIA RTX 4090(24GB):可运行基础任务
- NVIDIA A100(40GB/80GB):可运行完整功能
- NVIDIA H100/H20:最佳体验
其他硬件:
- CPU:建议 8 核心以上
- 内存:建议 64GB 以上
- 硬盘:模型权重约 50GB,建议 SSD
4.2 操作系统要求
- 推荐使用 Ubuntu 22.04 或 Ubuntu 24.04
- 也支持其他 Linux 发行版(如 CentOS、Debian)
- Windows 用户建议使用 WSL2
4.3 创建 Conda 环境
首先,我们需要创建一个独立的 Python 虚拟环境:
# 如果还没有安装 Conda,请先安装 Miniconda 或 Anaconda
# wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# bash Miniconda3-latest-Linux-x86_64.sh
# 克隆项目仓库
git clone https://github.com/KlingTeam/UniVideo.git
cd UniVideo
# 使用官方提供的环境配置文件创建环境
conda env create -f environment.yml
# 激活环境
conda activate univideo
官方的 environment.yml 文件会自动安装以下核心依赖:
- Python 3.11
- PyTorch 2.4.1 + CUDA 12.1
- diffusers 0.34.0
- transformers 4.51.3
4.4 手动安装依赖(备选方案)
如果上述方法遇到问题,你也可以手动创建环境并安装依赖:
# 创建新环境
conda create -n univideo python=3.11 -y
conda activate univideo
# 安装 PyTorch(根据你的 CUDA 版本选择)
# CUDA 12.1
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu121
# 安装 Flash Attention 2(加速注意力计算)
pip install flash-attn --no-build-isolation
# 安装其他依赖
pip install -r requirements.txt
# 安装 Gradio(用于 Web 演示界面)
pip install gradio
4.5 依赖说明
以下是 UniVideo 使用的主要依赖库及其作用:
|
依赖库 |
版本 |
作用 |
|
torch |
2.4.1 |
深度学习框架 |
|
transformers |
4.51.3 |
Hugging Face 模型库 |
|
diffusers |
0.34.0 |
扩散模型库 |
|
flash-attn |
>=2.0 |
高效注意力实现 |
|
gradio |
最新 |
Web 演示界面 |
|
accelerate |
最新 |
分布式训练加速 |
|
safetensors |
最新 |
安全的模型权重格式 |
4.6 验证安装
安装完成后,可以运行以下命令验证环境是否配置正确:
# 检查 Python 版本
python --version
# 应输出:Python 3.11.x
# 检查 PyTorch 和 CUDA
python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}'); print(f'CUDA version: {torch.version.cuda}')"
# 检查 transformers
python -c "import transformers; print(f'Transformers: {transformers.__version__}')"
# 检查 diffusers
python -c "import diffusers; print(f'Diffusers: {diffusers.__version__}')"
如果所有检查都通过,说明环境配置成功,可以继续下一步。
第五章:模型权重下载与配置
本章由「无忆研习社」详细介绍如何下载和配置 UniVideo 所需的模型权重。
5.1 需要下载的模型
UniVideo 需要下载以下三个核心组件:
- UniVideo 核心权重:模型的核心参数,包括连接器和微调后的权重
- Qwen2.5-VL-7B-Instruct:理解流使用的多模态大语言模型
- HunyuanVideo:生成流使用的视频生成模型
5.2 使用官方脚本下载
官方提供了一键下载脚本,可以自动下载所有需要的模型:
# 确保在 UniVideo 项目目录下
cd UniVideo
# 运行下载脚本
python download_ckpt.py
下载的模型将保存到 ckpts/ 目录下。
5.3 手动下载(备选方案)
如果官方脚本下载速度较慢,你也可以手动下载:
方法一:从 Hugging Face 下载
# 安装 huggingface_hub
pip install huggingface_hub
# 下载 UniVideo 权重
huggingface-cli download KlingTeam/UniVideo --local-dir ckpts/univideo
# 下载 Qwen2.5-VL
huggingface-cli download Qwen/Qwen2.5-VL-7B-Instruct --local-dir ckpts/qwen2.5-vl-7b
# 下载 HunyuanVideo
huggingface-cli download tencent/HunyuanVideo --local-dir ckpts/hunyuanvideo
方法二:从 ModelScope 下载(国内推荐)
# 安装 modelscope
pip install modelscope
# 使用 Python 下载
from modelscope import snapshot_download
# 下载模型(以 Qwen2.5-VL 为例)
snapshot_download('qwen/Qwen2.5-VL-7B-Instruct', cache_dir='./ckpts')
5.4 模型权重变体说明
UniVideo 提供了两种权重变体,对应论文中描述的两种架构设计:
变体 1(hidden)
img, video, txt -> MLLM -> last layer hidden -> MMDiT
图像、视频和文本输入经过 MLLM 处理,最后一层的隐藏状态直接输入到 MMDiT。
变体 2(queries)
img, video, txt, queries -> MLLM -> txt + queries last layer hidden -> MMDiT
除了图像、视频和文本,还引入了可学习的查询令牌(queries),最终将文本和查询的隐藏状态输入到 MMDiT。
两种变体各有优劣:
- 变体 1 更简洁,计算效率更高
- 变体 2 在某些任务上可能有更好的效果
5.5 检查模型文件
下载完成后,你的目录结构应该类似于:
UniVideo/
├── ckpts/
│ ├── univideo/
│ │ ├── univideo_hidden.safetensors # 变体1权重
│ │ └── univideo_queries.safetensors # 变体2权重
│ ├── qwen2.5-vl-7b/
│ │ ├── config.json
│ │ ├── model.safetensors
│ │ └── ...
│ └── hunyuanvideo/
│ ├── config.json
│ ├── diffusion_pytorch_model.safetensors
│ └── ...
├── configs/
│ ├── univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml
│ └── univideo_qwen2p5vl7b_queries_hunyuanvideo.yaml
├── demo/
├── univideo_inference.py
└── ...
5.6 配置文件说明
UniVideo 使用 YAML 格式的配置文件来指定模型路径和参数,主要配置项包括:
# 示例配置结构
model:
mllm_path: "ckpts/qwen2.5-vl-7b" # MLLM 模型路径
mmdit_path: "ckpts/hunyuanvideo" # MMDiT 模型路径
univideo_ckpt: "ckpts/univideo/univideo_hidden.safetensors" # UniVideo 权重
generation:
num_inference_steps: 50 # 推理步数
guidance_scale: 7.5 # 引导强度
height: 480 # 输出高度
width: 640 # 输出宽度
num_frames: 16 # 输出帧数
如果你的模型下载到了其他位置,需要修改配置文件中的相应路径。
第六章:推理与使用教程
环境和模型都准备好了,现在「无忆研习社」带你进入实际使用环节。
6.1 使用命令行推理
UniVideo 提供了统一的推理脚本 univideo_inference.py,支持所有任务类型。
视频理解任务
cd UniVideo
python univideo_inference.py \
--task understanding \
--config configs/univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml
文生视频任务
python univideo_inference.py \
--task t2v \
--config configs/univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml
图生视频任务
python univideo_inference.py \
--task i2v \
--config configs/univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml
视频编辑任务
# 纯文本编辑
python univideo_inference.py \
--task v2v_edit \
--config configs/univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml
# 图文结合编辑
python univideo_inference.py \
--task i+v2v_edit \
--config configs/univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml
图像编辑任务
python univideo_inference.py \
--task i2i_edit \
--config configs/univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml
多身份生成任务
python univideo_inference.py \
--task multiid \
--config configs/univideo_qwen2p5vl7b_hidden_hunyuanvideo.yaml
文生图任务
python univideo_inference.py \
--task t2i \
--config configs/univideo_qwen2p5vl