sd5

aaa2222339 / 2023-07-28 / 原文

1、Align your latent

改造2DUNET,把原来的每个层叫做spatial layer,当视频进来的时候就把时间维度映射到batchsize维度。为了让模型有时间概念,spatial layer 每层后面新增 temporal mixing layer,把空间层输出的结果(batchsize维度的格式)转为视频格式再输入时间层,时间层的输出也要再转成batchsize维度的格式,然后再和空间层输出的结果做安全相加得到时间层的最终结果。在训练文本视频对的时候,固定空间层,只训练时间层。

长视频生成:

假定共T帧,先训练一个prediction model:给定S帧,预测剩下的T-S帧,用Ms掩码去遮掩T帧,然后和Ms做拼接作为条件。S一般取0/1/2。然后使用 prediction model 预测一帧,拿这一帧做条件再预测一个帧序列。在这个帧序列中,每两个相邻帧作为条件,去预测中间的3帧,这样的话,视频帧率就从T提高到了4T。在采样过程中使用 classifier-free guidance 技巧。

为了提高分辨率,采用级联的扩散模型。

2、Video-P2P

视频编辑

类似tune,把 self-attentions 替换为 frame-attentions:当前帧做Q,第一帧做K和V,只训练Q的权重。首先专门对Q进行微调。

对视频所有帧应用Null-text Inversion

把 Prompt-to-Prompt 改一下用于视频编辑,DM用上面微调好的。当用到原始文本计算时,使用优化中的""向量。当用到新文本计算时,使用初始化的""向量。最后将旧文本算出的zt-1和新文本算出的zt-1*按照掩码相融合。掩码是旧单词和新单词的平均注意力权重图二进制化之后的并集。这是因为对编辑文本使用优化中的""向量会降低它的编辑效果,所以最后的效果就是在可编辑区域用初始化的""向量+新文本来采样,不可编辑区域(如背景)就用旧文本+优化中的""向量来采样: