论文阅读:CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer

CogVideoX ------ 基于 Expert Transformer 的文本生成视频扩散模型

1. 这篇论文在做什么?

这篇论文提出了 CogVideoX,一个大规模文本生成视频模型。它的目标是生成更长、更清晰、更连贯的视频。

论文中给出的能力是:

  • 可以生成 10 秒连续视频
  • 帧率为 16 fps
  • 分辨率最高达到 768 × 1360
  • 支持文本生成视频,也支持图像生成视频
  • 发布了 2B 和 5B 两个规模的模型

过去很多 text-to-video 模型的问题是:

  1. 视频时间短,通常只有几秒;
  2. 动作幅度小,经常像"动图"而不是真正的视频;
  3. 长时间生成时,主体容易漂移、变形、不一致;
  4. 文本和视频的语义对齐不够好;
  5. 视频训练数据质量差,caption 太短或不准确。

CogVideoX 的核心目标就是解决这些问题:

生成长时长、高分辨率、动作丰富、语义对齐更好的视频。

2. 一句话总结 CogVideoX

CogVideoX 的核心可以概括为:

用 3D VAE 把视频压缩到更短的 latent 序列,用 Expert Transformer 深度融合文本和视频 token,再通过多分辨率、多时长的训练策略,让模型能稳定生成长视频。

它不是单纯把图片扩散模型改成视频模型,而是从以下几个方面都做了专门设计:

  • 视频压缩:3D Causal VAE
  • 主干模型:Expert Transformer
  • 位置编码:3D RoPE
  • 注意力机制:3D Full Attention
  • 训练策略:Multi-Resolution Frame Pack + Progressive Training
  • 数据处理:视频过滤 + 稠密视频 caption 生成
  • 扩散目标:使用 v-prediction + zero SNR

3. 整体架构

CogVideoX 的整体架构如下:

文本和视频 latent 会被拼接成一个长序列,然后一起送进 Transformer 里建模。

这里有两个关键点:

  1. 视频不是直接在像素空间建模,而是先通过 VAE 压缩到 latent space;
  2. 文本和视频 token 不是通过简单 cross-attention 融合,而是在同一个序列里进行深度融合。

4. 3D Causal VAE:为什么视频需要专门的 VAE?

4.1 传统 2D VAE 的问题

在图像生成模型里,常见做法是使用 2D VAE,把图片压缩到 latent space。

但是视频不仅有空间维度,还有时间维度。

如果直接对每一帧使用 2D VAE,就会有两个问题:

  1. 没有利用时间冗余

    相邻帧之间通常很相似,如果只按单帧压缩,会浪费大量计算。

  2. 容易出现闪烁 flickering

    因为每一帧单独编码和解码,帧与帧之间的连续性不一定好。

所以 CogVideoX 使用了 3D Causal VAE

4.2 3D VAE 做了什么?

3D VAE 同时在空间和时间维度上压缩视频。

论文中采用的压缩比例是:

text 复制代码
8 × 8 × 4

也就是:

  • 高度压缩 8 倍
  • 宽度压缩 8 倍
  • 时间维度压缩 4 倍

这样可以显著减少视频 latent 的长度,从而降低 Transformer 的计算压力。

4.3 为什么是 Causal?

CogVideoX 的 VAE 使用了 temporally causal convolution

Causal 的意思是:

当前时刻的表示不能看到未来帧的信息。

这类似语言模型里的 causal attention:

生成当前 token 时不能偷看未来 token。

在视频里这样做的好处是:

  • 保证时间方向上的一致性;
  • 避免未来帧信息泄漏到当前帧;
  • 更适合长视频建模。

4.4 VAE 实验结论

论文比较了不同 3D VAE 设置,发现:

  • 使用 3D 结构后,视频重建的 flickering 明显降低;
  • 增加 latent channel 可以提升重建质量;
  • 但过度压缩,例如 16 × 16 × 8,会让模型很难收敛。

所以 CogVideoX 最终选择了一个折中方案:

text 复制代码
Compression: 8 × 8 × 4
Latent channel: 16

我的理解是:

视频生成模型的 VAE 不只是为了压缩,更重要的是要保证时间连续性。

如果 VAE 本身重建出来的视频就会抖动,那么后面的 diffusion model 再强也会受到影响。

5. Expert Transformer:文本和视频怎么融合?

论文提出了 Expert Transformer

它的核心设计包括:

  1. Patchify
  2. 3D RoPE
  3. Expert Adaptive LayerNorm
  4. 3D Full Attention

6. Patchify:把视频 latent 变成 token 序列

3D VAE 输出的视频 latent 形状可以表示为:

text 复制代码
T × H × W × C

其中:

  • T 是时间长度;
  • HW 是空间尺寸;
  • C 是 latent channel 数。

接着模型会把这个 latent patchify 成一个长序列:

text 复制代码
z_vision

文本则通过 T5 encoder 得到:

text 复制代码
z_text

最后把两者拼接起来:

text 复制代码
[z_text, z_vision]

然后送入 Transformer。

7. 3D RoPE:视频位置编码不能只看二维

普通图像模型只需要处理二维空间位置,例如:

text 复制代码
x, y

但视频还有时间维度,所以每个 video token 的位置其实是:

text 复制代码
x, y, t

CogVideoX 把 RoPE 扩展到了三维,称为 3D-RoPE

它把 hidden dimension 分成三部分,分别建模:

  • x 方向位置
  • y 方向位置
  • t 时间位置

论文中的比例是:

text 复制代码
x : y : t = 3/8 : 3/8 : 2/8

这样模型就能同时知道:

  • 这个 patch 在画面中的哪个位置;
  • 它属于视频的哪一帧;
  • 不同帧之间的相对时间关系。

8. Expert AdaLN:为什么要给文本和视频不同的 LayerNorm?

CogVideoX 把文本 token 和视频 token 拼在同一个序列里,这样可以增强文本和视频的融合。

但问题是:

文本 embedding 和视频 latent embedding 来自完全不同的模态,它们的特征空间和数值分布可能差异很大。

如果直接混在一起过同一个 LayerNorm,可能不够合适。

所以论文提出了 Expert Adaptive LayerNorm

简单理解就是:

text 复制代码
文本 token 用 Text Expert AdaLN
视频 token 用 Vision Expert AdaLN

它们共享 Transformer 的主体结构,但在归一化和调制时分别处理不同模态。

这和 MMDiT 有点像,都是为了处理多模态特征差异。

但 CogVideoX 的做法更轻量,不需要为文本和图像分别搞两套完整 Transformer。

我的理解:

Expert AdaLN 的核心作用是:

保留文本和视频 token 的深度融合,同时又避免两种模态在特征分布上的冲突。

9. 3D Full Attention:为什么不用空间注意力 + 时间注意力拆开做?

很多视频生成模型为了省计算,会把注意力拆成:

text 复制代码
空间注意力 + 时间注意力

也就是先在每一帧内部做空间 attention,再跨帧做 temporal attention。

这种方法计算更省,但论文认为它有一个重要问题:

对于大幅度运动,拆分注意力会让相邻帧中的同一物体难以直接对齐。

比如一个人从左边移动到右边,如果用分离的空间/时间注意力,模型可能需要通过背景 patch 间接传递信息。

这会增加学习难度,也容易导致主体不一致。

所以 CogVideoX 选择使用 3D Full Attention

也就是说,视频 token 在时间和空间维度上一起做 attention。

优点:

  • 更适合大动作视频;
  • 更容易保持主体一致性;
  • 有助于建模复杂动态变化。

缺点也很明显:

  • 计算量更大;
  • 序列长度非常长;
  • 需要 FlashAttention 等优化技术支持。

论文的实验也显示,3D Full Attention 比 2D + 1D attention 更稳定,后者甚至容易训练崩掉。

我的理解:

视频生成不是简单地让图片"动起来",而是要建模时空连续变化。

如果动作幅度很大,拆开的空间/时间注意力可能不够直接,3D Full Attention 虽然贵,但更符合视频建模需求。

10. 训练目标:v-prediction + zero SNR

论文中提到 CogVideoX 采用了:

text 复制代码
v-prediction + zero SNR

在 diffusion 里,如果:

text 复制代码
x_t = α_t x_0 + σ_t ε

那么 v-prediction 通常预测的是:

text 复制代码
v = α_t ε - σ_t x_0

也就是说,模型不直接预测噪声 ε,也不直接预测干净样本 x_0,而是预测二者的一个组合。

这样做的好处是:

  • 在不同噪声强度下训练更稳定;
  • 高噪声和低噪声阶段的目标尺度更平衡;
  • 在图像和视频扩散模型里都比较常见。

11. Multi-Resolution Frame Pack:解决不同时长、不同分辨率视频训练问题

视频数据有一个很麻烦的问题:

  • 有的视频很短;
  • 有的视频很长;
  • 有的是横屏;
  • 有的是竖屏;
  • 分辨率也不一样。

如果训练时固定帧数,就会导致:

  1. 短视频需要 padding;
  2. 长视频需要截断;
  3. 很多视频数据不能被充分利用;
  4. 图像和视频的 token 数差异太大,模型可能学成两种模式。

CogVideoX 提出了 Multi-Resolution Frame Pack

它的思路类似把不同长度、不同分辨率的视频 pack 到同一个 batch 里,让 batch 内的 token 形状更统一。

简单理解:

text 复制代码
image + short video + medium video + long video
        ↓
pack 到一个 batch 里训练

这样做的好处是:

  • 可以同时训练图像和视频;
  • 可以充分利用不同时长的视频;
  • 不需要简单粗暴地裁剪所有视频;
  • 增强模型对不同分辨率和不同时长的泛化能力。

12. Progressive Training:从低分辨率到高分辨率

直接训练高分辨率视频非常贵,而且互联网上很多视频本来质量就不高。

所以 CogVideoX 使用了渐进式训练:

text 复制代码
256px → 512px → 768px

低分辨率阶段主要学习:

  • 语义
  • 动作
  • 粗粒度结构
  • 低频信息

高分辨率阶段主要学习:

  • 细节
  • 纹理
  • 清晰度
  • 高频信息

最后还会用高质量数据进行 fine-tuning。

论文中提到,高质量 fine-tuning 可以减少字幕、水印、低码率视频带来的问题,并略微提升视觉质量。

但同时也观察到语义能力会有轻微下降。

这个现象很有意思:

高质量数据往往更干净,但可能分布更窄,所以模型的语义泛化能力可能会稍微变弱。

13. Explicit Uniform Sampling:让 timestep 采样更均匀

扩散模型训练时需要随机采样 timestep。

通常做法是每个 GPU rank 独立从 [1, T] 中均匀采样。

理论上这是均匀的,但实际训练中,因为每个 batch 样本有限,采样可能不够稳定。

而不同 timestep 的 loss 数值差异比较大,所以如果 timestep 采样波动较大,训练 loss 也会波动。

CogVideoX 提出 Explicit Uniform Sampling

假设有 n 个 data parallel rank,就把 timestep 区间分成 n 段:

text 复制代码
rank 1 采样区间 1
rank 2 采样区间 2
...
rank n 采样区间 n

这样每个 step 里,整体 timestep 覆盖会更加均匀。

论文实验显示,这种方式可以:

  • 让 loss 曲线更稳定;
  • 加速收敛;
  • 在不同 timestep 上都取得更低 loss。

我的理解:

这是一个很工程化但很实用的技巧。

它没有改变 diffusion 的理论目标,而是减少了分布式训练中的采样随机性。

14. 数据处理:视频过滤和视频 Caption 非常重要

我觉得这篇论文另一个很重要的点是:

它不只是讲模型结构,也花了很多篇幅讲数据。

14.1 视频过滤

原始互联网视频质量很复杂,包括:

  • 人工剪辑视频;
  • 静态图片拼接视频;
  • 低清晰度视频;
  • 镜头晃动严重的视频;
  • 讲座、直播类视频;
  • 大量文字或字幕的视频;
  • 手机/电脑录屏视频。

这些数据对视频生成模型不一定有帮助,甚至可能有害。

CogVideoX 定义了多个负面标签:

text 复制代码
Editing
Lack of Motion Connectivity
Low Quality
Lecture Type
Text Dominated
Noisy Screenshots

然后用 Video-LLaMA 训练分类器来过滤低质量视频。

最终得到约:

text 复制代码
35M single-shot clips

平均长度约 6 秒。

此外,它还使用了:

text 复制代码
2B images

来自 LAION-5B 和 COYO-700M,用于辅助训练。

14.2 视频 Caption 生成

视频生成模型高度依赖 text-video pair。

但互联网视频的 caption 往往很短,比如:

text 复制代码
A dog is running.

这种 caption 对训练高质量 text-to-video 模型是不够的,因为它没有描述:

  • 主体外观;
  • 动作过程;
  • 背景环境;
  • 镜头运动;
  • 时间变化;
  • 物体交互。

CogVideoX 构建了一个 dense video caption pipeline:

  1. 使用 Panda70M 模型生成短视频 caption;
  2. 抽取视频帧;
  3. 使用 CogVLM 生成每一帧的详细 image caption;
  4. 使用 GPT-4 总结成最终 video caption;
  5. 再用 GPT-4 生成的数据 fine-tune LLaMA2,加速大规模 caption 生成;
  6. 进一步训练 CogVLM2-Caption,做端到端视频理解和 caption。

15. 实验结果

论文主要从自动指标和人工评估两个方面进行实验。

15.1 自动评估

使用的指标包括:

  • Human Action
  • Scene
  • Dynamic Degree
  • Multiple Objects
  • Appearance Style
  • Dynamic Quality
  • GPT4o-MTScore

这些指标主要关注视频生成中的:

  • 动作能力
  • 场景质量
  • 动态程度
  • 多物体生成
  • 风格表现
  • 时间变化幅度

论文中 CogVideoX-5B 在 7 个指标中的 5 个上达到最优,另外两个也有竞争力。

特别值得注意的是,CogVideoX 在动态相关指标上表现较好。

这说明它不是单纯生成清晰但静态的视频,而是更强调 motion 和 temporal consistency。

15.2 人工评估

论文还和闭源模型 Kling 做了人工对比。

人工评估维度包括:

  • Sensory Quality:感官质量
  • Instruction Following:指令遵循
  • Physics Simulation:物理模拟
  • Cover Quality:封面质量

结果显示 CogVideoX-5B 在这些维度上都优于 Kling。

相关推荐
大连好光景2 小时前
BCELoss + sigmoid 换成 BCEWithLogitsLoss
人工智能·深度学习·机器学习
weixin_468466853 小时前
纳米 AI 搜索新手极速上手指南
人工智能·python·深度学习·搜索引擎·ai·语言模型·自然语言处理
春日见6 小时前
五分钟入门 强化学习---DQN(Deep Q Net)算法与实现
人工智能·python·深度学习·算法·microsoft·机器学习
万俟淋曦7 小时前
【论文速递】2026年第02周(Jan-04-10)(Robotics/Embodied AI/LLM)
人工智能·深度学习·机器人·大模型·论文·robotics·具身智能
apcipot_rain7 小时前
计科八股20260530——文本输入模型步骤、CNN权重共享、Resnet、Transformer、RNN
人工智能·深度学习·神经网络·数学建模·自然语言处理
bonechips9 小时前
深入理解 JavaScript的历史包袱——变量提升(Hoisting)
javascript·深度学习
春日见10 小时前
五分钟入门 强化学习---Q-Learning算法与实现
人工智能·python·深度学习·算法·机器学习·计算机视觉
多年小白10 小时前
【周末消息】2026年5月30日-6月1日
大数据·人工智能·深度学习·机器学习·金融
weixin_4684668510 小时前
图像连通域分析新手实战指南
图像处理·人工智能·深度学习·ai·机器视觉·连通域