为什么Sora如此惊艳?
解决了痛点:
1. 让长视频生成成为可能,之前都是短视频4s左右进行拓展,Sora支持60s视频生成
2. 生成的长视频仍保持人物/场景的高度一致性
带来了惊喜:
1. 具备丝滑过渡视频融合能力
2. 具备同一场景多角度/镜头的生成能力
3. 文生视频的涌现现象:具有动态摄像机运动的视频,随着摄像机的移动和旋转,任何其他场景元素在三维空间一致移动
4. 支持任意分辨率、宽高比的视频输出
失败例子:
1. 对物理规律的理解仍然十分有限
Sora模型训练流程
1. 原始视频数据切分成Patches,通过VAE编码器压缩成低维空间表示
2. 基于Diffusion Transformer完成从文本语义到图像语义的再映射
3. DiT生成的低维空间表示,通过VAE解码器恢复成像素级的视频数据
具体技术分析
统一标识不同类型的视频数据
技术难点:VAE的压缩率,Encoder的复杂度,时空交互的range还需要进一步探索和实验
基于Diffusion Model的训练流程进行视频生成
参考论文:Stable Diffusion
Sora的两个主要改进:
1. 输入加入了视频信息辅助生成
2. 使用的backbone网络由原来的Unet结构改成了ViT,更可能是基于DiT
关键技术拆解
时空编码 Spacetime latent patches:
1. 取样:
? ? - 切片:输入视频剪辑中均匀采样n_t帧,每一帧按照ViT的2D图片采样方式采样
? ? - 切块:输入的视频划分成若干个3D tuplet(若干张2D图片构成的3D块的其中一个小块),经过Spatial Temporal Attention进行空间/时间建模
2. 不同长度、不同分辨率的输入(主要基于NaViT技术):
? ? - 多个patches打包成一个单一序列实现可变分辨率
? ? - 根据一些相似度计算的方法和阈值的设定去除重复的语义相似的的patches,降低计算量
? ? - 训练时使用不同分辨率、不同时长的视频
存在问题:带来大量的计算负载不均衡
Diffusion Transformer, DiT = VAE + ViT + DDPM + VAE
技术难点:
- 训练数据如何构建
- Transformer的scale up
- 从头训练到收敛的trick
- 如何实现长上下文的支持
- 如何保证视频中实体的高质量和一致性