MovieGen A Cast of Media Foundation Models技术报告整理

本文最后更新于:2024年10月23日 晚上

简单总结

  • 模型大小:30B

  • 训练数据:2B低分辨率图像,400M低分辨率视频, 70M高分辨率视频

  • 训练资源:最高使用6144张H100

  • 支持的视频时长和FPS: 可以生成16s视频,每秒16帧;最高可生成1080p画质(通过超分,视频本身最高到768分辨率)

  • 三阶段训练:

    • 1.图片和视频是联合训练,图片被视为只有1帧的视频来生成。预训练三个阶段用的是原始的FPS,后面fine-tune的时候只使用16和24两个fps的videos
    • 2.预训练阶段分为三个部分,首先只训练256分辨率的图片,然后是256分辨率图片和视频一起训练,最后768分辨率的图片和视频一起训练。后面则是是fine-tune 和 个性化生成与视频编辑的训练

预训练模型设计

对于TAE的解释,可以看看这个

temporal autoencoder model (TAE)

  • VAE上增加了 惩罚异常项的loss 来避免 dot artifacts 。其中损失函数中 r : 是一个比例因子,表示潜在值需要超出标准偏差多远才能收到惩罚(实践中:r=4和loss weight=1e5作为异常值损失)
  • 图像和视频在训练的比例为 1:3
  • 和SD3一样,训练是(对数正态分布)logit-normal distribution 进行采样。
    • 对数正态分布:任意随机变量的对数服从正态分布,则这个随机变量服从的分布称为对数正态分布

视频生成backbone

  • patchify 的时候采取的是3D 卷积,空间上2*2大小,时间上大小为1
  • pos embed用的是factorized learnable positional embedding,factorized 指的是x和y分开编码。位置编码为绝对位置编码,直接用绝对index去映射embeddings。和navit一样,作者最后加起来两个编码。此外,作者发现,在图像编辑训练期间单纯使用第一帧的pos embed会导致在视频编辑上测试模型时输出完全失真。通过使用随机采样的时间pos embed作为图像的pos embed来解决这个问题,可以有效地减少时间维度上的 __变形和失真__(distortion and morphing artifacts)
  • Transformer 和 llama3 一样,RMSNorm + SwiGLU,只不过这里不再是 causal的了。此外text的注入是cross attention方式,timestep的注入是 Adaptive Layer Norm (adaLN) 方式,这个和已有的sd模型一样。
    • Movie Gen Video Transformer 主干
    • causal:LLM 使用结构化的因果注意掩码来强制执行标记因果关系,让模型在预测当前token时不能看到未来的token
  • 作者没有使用因果掩码的注意力,采用bi-directional attention(完全双向注意力),文中提到该注意力要比causal attention快2倍,同时降低峰值内存需求。

text encoder

UL2 + ByT5 + Long-prompt MetaCLIP 直接投影后 concat起来

  • UL2 是以文本的方式思考文本,Long-prompt MetaCLIP 用于多模态的方式思考文本,ByT5 用于理解字母来生成特定的文本。
  • FPS以文本的方式插入到text prompt中,比如直接 “FPS-16” 这样
  • 预训练阶段的image数据有10%-15%的带有文字的图片用于训练生成文字,如果我们想生成 hello world这样,那么captions里面一定要用引号专门括起来。

视频超分

  • 训练了一个 7B 的视频超分模型(文中提到空间上采样模型),也是(Diffusion Transformer)DIT架构,从一个已有的text-to-image 微调出来的。
  • 文中提到的空间上采样器可以预测视频的潜在值,然后使用 VAE 逐帧编码和解码
  • 低分辨率视频首先通过 bilinear 方式在size上对齐,然后chennel维度上和噪声一起 concat 当作model 输入模型来输出高分辨率视频
  • 在~400K,24FPS的高清视频上进行的模型训练微调,长视频是一段一段的进行超分,每个clip的frame为 14,clip之间 overlap 的部分为4
  • 在造低分辨率视频的时候,用的是 second-order degradation(二阶退化) 方法。为了减少训练和测试的差距,作者把视频VAE生成出来的一些坏结果也会随机替换成低分辨率视频去训练空间上采样模型
  • 超分只要20步就可以很好
  • 由于是一段一段的超分,他们也碰到的内存限制的情况,由于资源限制,不可能训特别长的,所以超分的时候在时序上也做了overlap生成,模仿 multi-diffusion的操作。具体而言,在每个去噪步骤中使用重叠帧的潜在加权平均值,促进连续窗口之间的信息交换,以增强输出的时间一致性。

打赏支持
“如果你觉得我的文章不错,不妨鼓励我继续写作。”

MovieGen A Cast of Media Foundation Models技术报告整理
https://dreamoneyou.github.io/2024/movie-gen-A-Cast-of-Media-Foundation-Models技术报告整理/
作者
九叶草
发布于
2024年10月20日
更新于
2024年10月23日
许可协议