视频理解与光流
一、视频理解任务
| 任务 | 描述 | 代表 |
|---|---|---|
| 动作识别 | 分类视频中的动作 | “打篮球” |
| 时序动作定位 | 定位+分类 | “从00:23到01:15,打篮球” |
| 视频检索 | 文本→视频匹配 | 搜索"跑步的人" |
| 视频分割 | 像素级时空分割 | SAM 2 |
| 视频生成 | 文本→视频 | Sora |
| 视频跟踪 | 多目标/单目标 | ByteTrack |
| 光流估计 | 像素级运动 | RAFT |
二、光流 (Optical Flow) ⭐
2.1 光流约束方程
I(x, y, t) = I(x+dx, y+dy, t+dt) (亮度不变假设)
I_x·u + I_y·v + I_t = 0 (一阶Taylor展开)
↑ ↑ ↑
I_x: 图像梯度X I_t: 时间差分
u = dx/dt: X方向运动
v = dy/dt: Y方向运动
问题: 1个方程2个未知数 → 需要额外约束(孔径问题)
2.2 求解方法
| 方法 | 类型 | 约束 |
|---|---|---|
| Lucas-Kanade | 稀疏 | 局部窗口内运动一致 |
| Horn-Schunck | 稠密 | 全局平滑约束 |
| Farneback | 稠密 | 多项式展开 |
2.3 深度学习光流
| 模型 | 年份 | 说明 |
|---|---|---|
| FlowNet | 2015 | 端到端光流 |
| PWC-Net | 2018 | 金字塔+扭曲+相关 |
| RAFT ⭐ | 2020 | 迭代细化,SOTA |
| GMFlow | 2022 | 全局匹配 |
| FlowFormer | 2022 | Transformer |
三、动作识别 ⭐
3.1 双流网络 (Two-Stream, 2014)
RGB帧 ──→ 2D CNN (空间流) ──┐
├── 融合 → 分类
光流堆叠 → 2D CNN (时序流) ──┘
3.2 3D CNN系列
| 模型 | 年份 | 核心 |
|---|---|---|
| C3D | 2014 | 3×3×3 3D卷积核 |
| I3D ⭐ | 2017 | 2D→3D膨胀(ImageNet预训练) |
| S3D | 2017 | 分离式3D卷积 |
| Non-local | 2018 | 非局部自注意力 |
| SlowFast | 2019 | 慢速帧+快速度双分支 |
| TSM | 2019 | 时序平移模块(高效) |
| TSN | 2016 | 分段采样+稀疏时序 |
3.3 视频Transformer
| 模型 | 年份 | 说明 |
|---|---|---|
| TimeSformer | 2021 | 拆分时空注意力 |
| ViViT | 2021 | Video ViT |
| VideoMAE | 2022 | 视频掩码自编码器 |
| VideoMAE V2 | 2022 | 更大规模 |
| InternVideo2 | 2024 | 多模态视频理解 |
四、视频动作定位
| 模型 | 方法 | 说明 |
|---|---|---|
| TAL-Net | 时序anchor | 2D-TAN |
| ActionFormer | 无锚框 | Transformer定位 |
| TriDet | 时序边界检测 | SOTA时序定位 |
| UniDet | 统一检测 | 空间+时序 |
五、视频生成
| 模型 | 组织 | 年份 | 特点 |
|---|---|---|---|
| Sora | OpenAI | 2024 | 最强文生视频 |
| VideoPoet | 2024 | LLM视频生成 | |
| Stable Video Diffusion | Stability | 2023 | 图生视频 |
| AnimateDiff | 社区 | 2023 | 在文生图上加时间模块 |
| Gen-3 | Runway | 2024 | 商业视频生成 |
| CogVideoX | 智谱 | 2024 | 开源文生视频 |
| Open-Sora | ColossalAI | 2024 | 开源Sora复现 |
📺 推荐视频
- 光流算法详解: B站搜索
- 李飞飞视频理解课程: Stanford CS231n lecture
- 动作识别网络: YouTube/B站
📚 论文必读
| 论文 | 年份 | 推荐度 |
|---|---|---|
| Two-Stream Convolutional Networks for Action Recognition | 2014 | ⭐⭐⭐⭐⭐ |
| Learning Spatiotemporal Features with 3D ConvNets (C3D) | 2014 | ⭐⭐⭐⭐ |
| Quo Vadis, Action Recognition? (I3D) | 2017 | ⭐⭐⭐⭐⭐ |
| Non-local Neural Networks | 2018 | ⭐⭐⭐⭐ |
| SlowFast Networks for Video Recognition | 2019 | ⭐⭐⭐⭐ |
| TSM: Temporal Shift Module | 2019 | ⭐⭐⭐ |
| RAFT: Recurrent All-Pairs Field Transforms | 2020 | ⭐⭐⭐⭐⭐ |
| VideoMAE: Masked Autoencoders | 2022 | ⭐⭐⭐⭐ |
| InternVideo2 (多模态) | 2024 | ⭐⭐⭐ |
🔗 视频链接
- 视频理解基准: https://paperswithcode.com/task/action-recognition-in-videos
- Sora (OpeanAI): https://openai.com/sora
- RAFT: https://github.com/princeton-vl/RAFT
附录:深层补充
一、光流估计深入算法详解
1.1 Lucas-Kanade 光流(局部窗口最小二乘)
Lucas-Kanade 引入局部窗口一致性假设:在像素 ( x , y ) (x,y) (x,y) 周围的小窗口 Ω \Omega Ω(通常 5 × 5 5\times5 5×5 或 7 × 7 7\times7 7×7)内,所有像素的运动矢量 ( u , v ) (u,v) (u,v) 相同。
对于窗口内
n
n
n 个像素,每个像素提供一个约束方程:
[
I
x
(
p
1
)
I
y
(
p
1
)
I
x
(
p
2
)
I
y
(
p
2
)
⋮
⋮
I
x
(
p
n
)
I
y
(
p
n
)
]
[
u
v
]
=
−
[
I
t
(
p
1
)
I
t
(
p
2
)
⋮
I
t
(
p
n
)
]
\begin{bmatrix} I_x(p_1) & I_y(p_1) \\ I_x(p_2) & I_y(p_2) \\ \vdots & \vdots \\ I_x(p_n) & I_y(p_n) \end{bmatrix} \begin{bmatrix} u \\ v \end{bmatrix} = -\begin{bmatrix} I_t(p_1) \\ I_t(p_2) \\ \vdots \\ I_t(p_n) \end{bmatrix}
Ix(p1)Ix(p2)⋮Ix(pn)Iy(p1)Iy(p2)⋮Iy(pn)
[uv]=−
It(p1)It(p2)⋮It(pn)
简写为
A
d
=
b
\mathbf{A}\mathbf{d} = \mathbf{b}
Ad=b。使用最小二乘求解:
A
⊤
A
d
=
A
⊤
b
⟹
d
=
(
A
⊤
A
)
−
1
A
⊤
b
\mathbf{A}^\top\mathbf{A} \mathbf{d} = \mathbf{A}^\top\mathbf{b} \quad\Longrightarrow\quad \mathbf{d} = (\mathbf{A}^\top\mathbf{A})^{-1}\mathbf{A}^\top\mathbf{b}
A⊤Ad=A⊤b⟹d=(A⊤A)−1A⊤b
其中
A
⊤
A
=
[
∑
I
x
2
∑
I
x
I
y
∑
I
x
I
y
∑
I
y
2
]
\mathbf{A}^\top\mathbf{A} = \begin{bmatrix} \sum I_x^2 & \sum I_x I_y \\ \sum I_x I_y & \sum I_y^2 \end{bmatrix}
A⊤A=[∑Ix2∑IxIy∑IxIy∑Iy2] 即为结构张量(structure tensor)。当该矩阵可逆(即两个特征值都足够大)时,可解出
(
u
,
v
)
(u,v)
(u,v)。这对应着图像中存在角点/纹理区域——孔径问题的本质是
A
⊤
A
\mathbf{A}^\top\mathbf{A}
A⊤A 秩亏。
金字塔LK:对大运动,构建图像金字塔(通常4-5层),从顶层粗估计开始逐层向底层细化(coarse-to-fine warping)。
1.2 Horn-Schunck 光流(全局能量函数)
Horn-Schunck 将光流建模为全局能量函数最小化问题:
E
=
∬
[
(
I
x
u
+
I
y
v
+
I
t
)
2
+
α
2
(
∥
∇
u
∥
2
+
∥
∇
v
∥
2
)
]
d
x
d
y
E = \iint \left[ (I_x u + I_y v + I_t)^2 + \alpha^2 (\|\nabla u\|^2 + \|\nabla v\|^2) \right] dxdy
E=∬[(Ixu+Iyv+It)2+α2(∥∇u∥2+∥∇v∥2)]dxdy
- 数据项 ( I x u + I y v + I t ) 2 (I_x u + I_y v + I_t)^2 (Ixu+Iyv+It)2:强制满足光流约束方程
- 平滑项 ∥ ∇ u ∥ 2 + ∥ ∇ v ∥ 2 = ( ∂ u ∂ x ) 2 + ( ∂ u ∂ y ) 2 + ( ∂ v ∂ x ) 2 + ( ∂ v ∂ y ) 2 \|\nabla u\|^2 + \|\nabla v\|^2 = (\frac{\partial u}{\partial x})^2 + (\frac{\partial u}{\partial y})^2 + (\frac{\partial v}{\partial x})^2 + (\frac{\partial v}{\partial y})^2 ∥∇u∥2+∥∇v∥2=(∂x∂u)2+(∂y∂u)2+(∂x∂v)2+(∂y∂v)2:惩罚流场的空间变化
- α \alpha α 控制平滑强度( α \alpha α 越大,流越平滑)
通过变分法导出 Euler-Lagrange 方程,得到迭代求解:
u
(
k
+
1
)
=
u
ˉ
(
k
)
−
I
x
(
I
x
u
ˉ
(
k
)
+
I
y
v
ˉ
(
k
)
+
I
t
)
α
2
+
I
x
2
+
I
y
2
u^{(k+1)} = \bar{u}^{(k)} - \frac{I_x (I_x \bar{u}^{(k)} + I_y \bar{v}^{(k)} + I_t)}{\alpha^2 + I_x^2 + I_y^2}
u(k+1)=uˉ(k)−α2+Ix2+Iy2Ix(Ixuˉ(k)+Iyvˉ(k)+It)
v ( k + 1 ) = v ˉ ( k ) − I y ( I x u ˉ ( k ) + I y v ˉ ( k ) + I t ) α 2 + I x 2 + I y 2 v^{(k+1)} = \bar{v}^{(k)} - \frac{I_y (I_x \bar{u}^{(k)} + I_y \bar{v}^{(k)} + I_t)}{\alpha^2 + I_x^2 + I_y^2} v(k+1)=vˉ(k)−α2+Ix2+Iy2Iy(Ixuˉ(k)+Iyvˉ(k)+It)
其中 u ˉ , v ˉ \bar{u}, \bar{v} uˉ,vˉ 是邻域均值(Laplacian平滑)。
1.3 Farneback 光流(多项式展开)
Farneback 对每个局部邻域用二次多项式近似图像强度:
f
(
x
)
≈
x
⊤
A
x
+
b
⊤
x
+
c
f(x) \approx x^\top \mathbf{A} x + \mathbf{b}^\top x + c
f(x)≈x⊤Ax+b⊤x+c
其中
A
\mathbf{A}
A 是
2
×
2
2\times2
2×2 对称矩阵,
b
\mathbf{b}
b 是
2
×
1
2\times1
2×1 向量,
c
c
c 是标量。系数通过加权最小二乘从邻域像素拟合得到。
对前后两帧分别拟合得到多项式系数
(
A
1
,
b
1
,
c
1
)
(\mathbf{A}_1, \mathbf{b}_1, c_1)
(A1,b1,c1) 和
(
A
2
,
b
2
,
c
2
)
(\mathbf{A}_2, \mathbf{b}_2, c_2)
(A2,b2,c2),在位移
d
d
d 满足
A
1
=
A
2
\mathbf{A}_1 = \mathbf{A}_2
A1=A2(等亮度假设)时,解得:
A
1
d
=
−
1
2
(
b
2
−
b
1
)
⟹
d
=
−
1
2
A
1
−
1
(
b
2
−
b
1
)
\mathbf{A}_1 \mathbf{d} = -\frac{1}{2}(\mathbf{b}_2 - \mathbf{b}_1) \quad\Longrightarrow\quad \mathbf{d} = -\frac{1}{2}\mathbf{A}_1^{-1}(\mathbf{b}_2 - \mathbf{b}_1)
A1d=−21(b2−b1)⟹d=−21A1−1(b2−b1)
实际实现中采用多尺度金字塔 + 迭代加权估计,并用归一化互相关进行可靠性评估。Farneback 精度介于 LK 和 HS 之间,速度较快(OpenCV 中 calcOpticalFlowFarneback)。
1.4 RAFT(Recurrent All-Pairs Field Transforms)
RAFT 是深度学习光流的标志性工作,核心由三部分组成:
1)特征提取:两个孪生网络分别提取参考帧 g θ ( I 1 ) g_\theta(I_1) gθ(I1) 和目标帧 h θ ( I 2 ) h_\theta(I_2) hθ(I2) 的特征图(1/8分辨率)。
2)全对相关体(All-Pairs Correlation Volume):计算
g
θ
(
I
1
)
g_\theta(I_1)
gθ(I1) 和
h
θ
(
I
2
)
h_\theta(I_2)
hθ(I2) 所有位置对的点积相似度,构建 4D 相关体
C
∈
R
H
×
W
×
H
×
W
\mathbf{C} \in \mathbb{R}^{H\times W\times H\times W}
C∈RH×W×H×W。为处理大位移,构造多层金字塔相关体(通过平均池化下采样):
C
k
=
AvgPool
(
C
,
kernel
=
2
k
)
\mathbf{C}^k = \text{AvgPool}(\mathbf{C}, \text{kernel}=2^k)
Ck=AvgPool(C,kernel=2k)
3)迭代更新:基于 GRU 的循环更新算子,每次迭代从相关体中查表(根据当前光流估计
f
t
\mathbf{f}^t
ft 查找对应位置的相似度),产生光流残差
Δ
f
\Delta \mathbf{f}
Δf:
f
t
+
1
=
f
t
+
Δ
f
+
context
+
motion features
\mathbf{f}^{t+1} = \mathbf{f}^t + \Delta \mathbf{f} + \text{context} + \text{motion features}
ft+1=ft+Δf+context+motion features
RAFTA 通常迭代 12 次,初始化为零流,每次迭代修正光流。这种方法端到端可微,在 Sintel 和 KITTI 光流基准上长期保持 SOTA。
二、3D 卷积详解
2.1 C3D 网络
C3D 是最早将 3D 卷积引入视频理解的经典工作。其核心设计是统一的 3 × 3 × 3 3\times3\times3 3×3×3 小卷积核(而非 11 × 11 × 3 11\times11\times3 11×11×3 等不对称核),优势在于:
- 空间和时间维度使用相同感受野,保持时空对称性
- 连续堆叠多个 3 × 3 × 3 3\times3\times3 3×3×3( = 3 =3 =3 层)获得等效 7 × 7 × 7 7\times7\times7 7×7×7 感受野,同时减少参数量
典型架构(8个卷积层 + 5个池化层 + 2个全连接层):
conv1: 64个 3 × 3 × 3 3\times3\times3 3×3×3 核,pool1: 1 × 2 × 2 1\times2\times2 1×2×2(保留时间维度)conv2: 128个 3 × 3 × 3 3\times3\times3 3×3×3conv3a,b: 256个 3 × 3 × 3 3\times3\times3 3×3×3conv4a,b: 512个 3 × 3 × 3 3\times3\times3 3×3×3conv5a,b: 512个 3 × 3 × 3 3\times3\times3 3×3×3,pool5: 2 × 2 × 2 2\times2\times2 2×2×2- 全连接层: 4096 → 4096 → N_classes
参数量分析:一个 3 × 3 × 3 3\times3\times3 3×3×3 卷积层的参数 = C i n × C o u t × 27 + C o u t C_{in} \times C_{out} \times 27 + C_{out} Cin×Cout×27+Cout(bias)。相比之下,2D 3 × 3 3\times3 3×3 的参数 = C i n × C o u t × 9 C_{in} \times C_{out} \times 9 Cin×Cout×9。3D 卷积的参数量是同分辨率 2D 卷积的 3 倍。
计算量分析:对于 C i n C_{in} Cin→ C o u t C_{out} Cout,特征图尺寸 T × H × W T\times H\times W T×H×W:
- FLOPs = C i n × C o u t × 27 × T × H × W C_{in} \times C_{out} \times 27 \times T \times H \times W Cin×Cout×27×T×H×W
2.2 I3D(Inflated 3D ConvNet)
I3D 的核心思想是将 2D ConvNet 膨胀(inflate) 为 3D ConvNet:
- N × N N\times N N×N 2D 卷积核 → N × N × N N\times N\times N N×N×N 3D 卷积核
- 从 ImageNet 预训练的 2D 权重初始化:将 2D 权重沿时间维度重复 N N N 次,再除以 N N N(保持激活值尺度不变)
- 池化层也相应膨胀: 2 × 2 2\times2 2×2 → 1 × 2 × 2 1\times2\times2 1×2×2(保留时间维度)
双流 I3D:RGB 流(空间外观) + 光流流(时序运动),两者独立使用 I3D 网络,最后融合分类。
关键贡献:证明了ImageNet 预训练对 3D 视频理解网络至关重要——2D→3D 膨胀使 3D 网络获得从 2D 预训练中迁移的强初始化,相比随机初始化的 C3D 提升显著。
2.3 SlowFast 双路径设计
SlowFast 设计两个并行路径,以不同帧率处理视频:
Slow 路径:
- 低帧率( τ = 16 \tau=16 τ=16 帧采样一次),高通道数( C C C)
- 捕获高语义内容(what happened)
- 使用 3D ResNet 骨干
Fast 路径:
- 高帧率( τ = 2 \tau=2 τ=2 帧采样一次),低通道数( β C \beta C βC,通常 β = 1 / 8 \beta=1/8 β=1/8)
- 捕获高时间分辨率运动信息(how it moved)
- 不使用时间下采样(保持精细时间结构)
侧向连接(Lateral Connections):Fast 路径的特征通过以下方式融合到 Slow 路径:
X
s
l
o
w
′
=
conv
1
×
1
×
1
(
Unfold
(
X
f
a
s
t
)
)
+
X
s
l
o
w
\mathbf{X}_{slow}' = \text{conv}_{1\times1\times1}\left( \text{Unfold}(\mathbf{X}_{fast}) \right) + \mathbf{X}_{slow}
Xslow′=conv1×1×1(Unfold(Xfast))+Xslow
设计启发:人类视觉系统中存在 Parvocellular(高空间分辨率、低时间分辨率)和 Magnocellular(低空间分辨率、高时间分辨率)两条通路。
2.4 3D 卷积的参数量和计算量深入对比
| 操作 | 参数量 | 计算量 (FLOPs) | 同条件对比 |
|---|---|---|---|
| 2D Conv 3 × 3 3\times3 3×3 | 9 C i n C o u t 9C_{in}C_{out} 9CinCout | 9 C i n C o u t H W 9C_{in}C_{out}HW 9CinCoutHW | 基准 |
| (2+1)D Conv 3 × 3 × 3 3\times3\times3 3×3×3 (分解) | 9 C i n C m + 3 C m C o u t 9C_{in}C_m + 3C_mC_{out} 9CinCm+3CmCout | 9 C i n C m H W + 3 C m C o u t T H W 9C_{in}C_mHW + 3C_mC_{out}THW 9CinCmHW+3CmCoutTHW | 降低为纯 3D 的约 1 / 3 1/3 1/3 |
| 3D Conv 3 × 3 × 3 3\times3\times3 3×3×3 (纯) | 27 C i n C o u t 27C_{in}C_{out} 27CinCout | 27 C i n C o u t T H W 27C_{in}C_{out}THW 27CinCoutTHW | 基准的 3×T 倍 |
| 3D Conv 3 × 1 × 1 3\times1\times1 3×1×1 (时间) | 3 C i n C o u t 3C_{in}C_{out} 3CinCout | 3 C i n C o u t T H W 3C_{in}C_{out}THW 3CinCoutTHW | 仅建模时间 |
(2+1)D 分解(S3D / R(2+1)D):将 3 × 3 × 3 3\times3\times3 3×3×3 分解为 1 × 3 × 3 1\times3\times3 1×3×3(空间)+ 3 × 1 × 1 3\times1\times1 3×1×1(时间),中间插入一个 C m C_m Cm 通道的 bottleneck。这不仅降低了参数量,还引入了额外的 ReLU 非线性,常取得比纯 3D 更好的精度。
三、时序动作定位(Temporal Action Localization)
3.1 ActionFormer
ActionFormer 是时序动作定位领域的 Transformer 无锚框方法。
架构:
- 特征提取:使用预训练视频编码器(如 SlowFast)提取每帧/每片段的特征序列 X ∈ R T × D \mathbf{X} \in \mathbb{R}^{T\times D} X∈RT×D
- 位置编码:使用可学习的位置编码 P ∈ R T × D \mathbf{P} \in \mathbb{R}^{T\times D} P∈RT×D
- Transformer 编码器:多头自注意力(MHSA) + 前馈网络(FFN),堆叠 L L L 层,感受野为整个时序
- 分类头 + 回归头:每个时间位置预测动作类别概率 p ^ t \hat{\mathbf{p}}_t p^t 和动作边界偏移 b ^ t = ( c ^ t , d ^ t ) \hat{\mathbf{b}}_t = (\hat{c}_t, \hat{d}_t) b^t=(c^t,d^t),其中 c t c_t ct 为中心位置偏移, d t d_t dt 为时序长度
训练损失:
- 分类损失:Focal Loss(处理正负样本不平衡)
- 回归损失:GIoU Loss + L1 Loss
L = L c l s + λ ⋅ L r e g \mathcal{L} = \mathcal{L}_{cls} + \lambda \cdot \mathcal{L}_{reg} L=Lcls+λ⋅Lreg
推理:对输出进行阈值过滤 → NMS(Soft-NMS 或针对时序的 NMS)→ 得到最终动作实例。
3.2 One-Stage vs Two-Stage in TAD
| 特性 | Two-Stage(如 BMN, G-TAD) | One-Stage(如 ActionFormer, TriDet) |
|---|---|---|
| 流程 | Proposal 生成 → 分类/回归精调 | 端到端直接输出动作实例 |
| 速度 | 慢(两阶段串行) | 快(单阶段) |
| Proposal质量 | 高(有 refine 阶段) | 依赖特征质量 |
| 召回率 | 受 proposal 生成限制 | 更高(注意力覆盖全时序) |
| 代表方法 | BMN(边界匹配), G-TAD(图卷积) | ActionFormer, TriDet |
| 复杂度 | 多模块联合训练 | 单一 loss 简洁优化 |
当前趋势:随着 Transformer 和无锚框方法成熟,One-stage 方法(如 ActionFormer)在兼顾速度和精度的同时,逐渐成为主流。
四、视频理解中的 Transformer
4.1 TimeSformer(分解时空注意力)
TimeSformer 提出了分解式时空自注意力(Divided Space-Time Attention):将标准的 3D 自注意力分解为两个连续步骤:
- 时间注意力:对每个空间位置,沿时间维度计算自注意力
- 空间注意力:对每个时间帧,沿空间维度计算自注意力
具体地,对输入视频切分为 T × H × W T\times H\times W T×H×W 个 patch(每个 patch 为 16 × 16 16\times16 16×16 像素),加上位置编码和可学习的 class token:
- 时间注意力头:每个 patch 只关注同一空间位置不同时间帧的 T T T 个 patch
- 空间注意力头:每个 patch 关注同一时间帧不同空间位置的 H × W H\times W H×W 个 patch
复杂度分析:
- 朴素 3D 自注意力: O ( T 2 H 2 W 2 ) \mathcal{O}(T^2 H^2 W^2) O(T2H2W2)
- TimeSformer 分解: O ( T 2 H W + T H 2 W 2 ) \mathcal{O}(T^2 HW + TH^2 W^2) O(T2HW+TH2W2),约降低 H W T + H W \frac{HW}{T+HW} T+HWHW 倍
TimeSformer 在 Kinetics-400 上以仅 RGB 输入达到 SOTA,证明了纯 Transformer 架构在视频理解中的潜力。
4.2 VideoMAE(3D 掩码自编码器)
VideoMAE 将 MAE 范式扩展到视频领域,核心创新是极高比例的 3D 掩码策略。
3D 立方体掩码:不同于图像 MAE 的 2D 随机掩码,VideoMAE 使用 3D 立方体掩码——以 16 × 16 × 2 16\times16\times2 16×16×2(空间×时间)为单位的掩码块,掩码比例高达 90%-95%(图像 MAE 仅 75%)。
为什么视频需要更高掩码率?
- 视频帧间存在大量冗余(相邻帧高度相似)
- 高掩码率强制模型学习时序对应关系,而非简单插值
- Tube masking(管状掩码:同一空间位置在多个时间帧上一起掩码)防止模型依赖帧间像素级复制
架构:
- 编码器(仅处理可见 patch,轻量高效)
- 解码器(处理全部 patch,仅在预训练时使用)
- 目标:重建被掩码 patch 的原始像素
4.3 UniFormer(Conv + Attention 混合)
UniFormer 的核心洞察:浅层适合卷积(高效建模局部相关性),深层适合自注意力(捕获全局依赖)。
UniFormer Block 设计:
- 浅层阶段:使用 3 × 3 × 3 3\times3\times3 3×3×3 可分离卷积 + MHSA 的紧凑聚合
- 深层阶段:使用多头自注意力 + FFN 的全局关系建模
关键在于动态切换:每个 stage 根据 token 数量自动决定使用卷积还是注意力操作。当 N t o k e n > N t h r e s h o l d N_{token} > N_{threshold} Ntoken>Nthreshold 时,使用局部卷积(计算量可控);当 N t o k e n ≤ N t h r e s h o l d N_{token} \leq N_{threshold} Ntoken≤Nthreshold 时,使用全局注意力。
这种混合设计在计算效率和建模能力之间取得良好平衡,在 Something-Something V2 和 Kinetics-400 上均取得 SOTA。
五、Video Sora 与视频生成
5.1 DiT(Diffusion Transformer)的空间-时间 Patch
Sora 的技术报告中明确指出其基于 DiT(Diffusion Transformer)架构。DiT 将扩散模型的 U-Net 骨干替换为 Transformer:
空间-时间 Patch 化:
- 原始视频 V ∈ R T × H × W × 3 \mathbf{V} \in \mathbb{R}^{T\times H\times W\times 3} V∈RT×H×W×3 经过 VAE 编码器压缩为隐空间特征 z ∈ R T ′ × H ′ × W ′ × C \mathbf{z} \in \mathbb{R}^{T'\times H'\times W'\times C} z∈RT′×H′×W′×C
- 将 z \mathbf{z} z 划分为 p × p × p p\times p\times p p×p×p 的 3D patch(如 2 × 2 × 2 2\times 2\times 2 2×2×2)
- 每个 patch 线性投影为 token,加上 3D RoPE 位置编码(空间位置 + 时间位置 + 帧索引)
- 所有 token 送入 DiT block(Adaptive Layer Norm + 多头注意力 + MLP)
Conditioning:文本描述通过 T5/CLIP 编码为 text embedding,通过 cross-attention 或 adaptive layer norm(AdaLN-Zero)注入 DiT。
Patch 级别训练:Sora 在原始分辨率和时长上训练(而非固定尺寸),通过对 patch 序列长度进行 attention mask 控制。
5.2 VAE 编码器的帧压缩
视频 VAE 需要将 T × H × W × 3 T\times H\times W\times 3 T×H×W×3 压缩为 T ′ × H ′ × W ′ × C T'\times H'\times W'\times C T′×H′×W′×C,压缩因子通常在 4 × 8 × 8 = 256 × 4\times 8\times 8 = 256\times 4×8×8=256×(时间 4×,空间 8×8)。
因果卷积(Causal Convolution):为保证在线推理时未来帧不影响当前帧编码,使用因果卷积(padding 只在前方填充)。
时间混叠:VAE 在时间维度的下采样通过 3D 卷积或相继 2D 卷积 + frame stacking 实现。时间压缩太大(如 8×)会导致闪烁和时序不连贯——这是 Sora 面临的核心挑战之一。
训练目标:
L
=
L
r
e
c
o
n
+
β
⋅
L
K
L
+
L
p
e
r
c
e
p
t
u
a
l
+
L
G
A
N
\mathcal{L} = \mathcal{L}_{recon} + \beta \cdot \mathcal{L}_{KL} + \mathcal{L}_{perceptual} + \mathcal{L}_{GAN}
L=Lrecon+β⋅LKL+Lperceptual+LGAN
其中
L
r
e
c
o
n
\mathcal{L}_{recon}
Lrecon 为重建 loss(L1 + L2),
L
p
e
r
c
e
p
t
u
a
l
\mathcal{L}_{perceptual}
Lperceptual 为 LPIPS 感知损失,
L
G
A
N
\mathcal{L}_{GAN}
LGAN 为 PatchGAN 判别器。
5.3 视频生成中的时序一致性保持
视频生成区别于图像生成的核心挑战是时序一致性:
| 技术 | 描述 | 代表方法 |
|---|---|---|
| 时序注意力 | 帧间 token 交互捕获全局时序依赖 | Sora, VideoPoet |
| 3D U-Net | 3D 卷积建模局部时序模式 | Stable Video Diffusion |
| 时序 Layer | 插入 1D 时间注意力/时间卷积模块 | AnimateDiff, Video LDM |
| 光流引导 | 利用光流约束帧间运动 | MoCoGAN-HD |
| 隐空间对齐 | 在 VAE 隐空间约束帧间一致性 | VideoCrafter |
| 噪声初始化 | 相邻帧噪声有一定相关性(noise offset) | Align Your Latents |
AnimateDiff 的时序注入方式:
- 在预训练的文本-图像 Stable Diffusion 中插入 1D 时序注意力模块(Motion Module)
- Motion Module 在固定空间层权重的情况下,仅在视频数据上学习时序对应关系
- 推理时,将单张图片作为条件,生成视频帧序列(以噪声 + image condition 为起点)
- 优势:复用海量文生图预训练知识,只需少量视频数据学习时序一致性
更多推荐

所有评论(0)