架构核心解析
Seedance 2.0 是一款面向高保真视频生成任务的双分支扩散变换器(Dual-Branch Diffusion Transformer)。它的核心创新在于解耦了时空建模路径:一条分支专注帧内空间语义重建,另一条则显式建模跨帧时序动态。这种设计摒弃了传统单流 Transformer 对时空维度的粗粒度联合编码,转而通过协同门控机制实现分支间细粒度特征对齐。
双分支协同机制
空间分支采用分层 ViT 结构,以 16×16 patch 嵌入输入,逐级下采样并保留局部细节;时间分支则将同一空间位置在多帧中的 token 沿时间轴堆叠,经轻量级时序注意力模块处理。两分支输出通过 Cross-Gating Fusion(CGF)模块融合,其门控权重由共享的上下文感知投影器动态生成。
class CrossGatingFusion(nn.Module):
def __init__(self, dim):
super().__init__()
self.proj_s = nn.Linear(dim, dim) # 空间分支门控投影
self.proj_t = nn.Linear(dim, dim) # 时间分支门控投影
self.sigmoid = nn.Sigmoid()
def forward(self, x_s, x_t):
# x_s: [B, T, H*W, D], x_t: [B, T, H*W, D]
gate_s = self.sigmoid(self.proj_s(x_t)) # 用时间特征调控空间分支
gate_t = self.sigmoid(self.proj_t(x_s)) # 用空间特征调控时间分支
return x_s * gate_s + x_t * gate_t # 加权融合
性能对比
| 模型 | FVD↓ | PSNR↑ | 参数量(M) |
|---|---|---|---|
| VideoDiffusion | 142.3 | 28.7 | 1240 |
| Seedance 1.0 | 118.9 | 30.2 | 985 |
| Seedance 2.0 | 96.4 | 32.6 | 1052 |
训练流程要点
- 采用渐进式分支解冻策略:前 5K 步仅更新空间分支,后 10K 步联合微调
- 时间分支使用相对时间嵌入(Relative Temporal Embedding),支持任意长度推理
- 损失函数为加权组合:L = 0.6·Ldiffusion + 0.3·Lflow + 0.1·Lperceptual

