文本到图像的扩散模型,零训练的视频生成器。
paper:[2303.13439] Text2Video-Zero: Text-to-Image Diffusion Models are Zero-Shot Video Generators (arxiv.org)
目录
1.介绍
2.方法
3.扩展
4.问题
动机:基于用户提供的运动姿态、边缘图像、深度图像和Dreambooth 模型进行定制化文本视频生成。实现:通过运动动力学、帧间注意力机制等方法,对原始的文本-图像模型进行微调,无需训练。这意味着只要训练出 Dreambooth 文本-图像生成模型,就可以进行定制化的文本-视频生成。
3个贡献:
基于现有的文本-视频生成扩散模型的重数据,高需求,进行了以下改进:
1.zero-shot,仅仅使用现有的扩散模型如Stable-Diffusion。实现了相似甚至有时更好的性能
2.用motion dynamics运动信息丰富生成帧的latent code,以保持全局场景和背景的一致性。用跨帧注意力机制来保留整个序列中前景对象的上下文、外观和身份,以保持生成场景和背景的一致性。
4.该方法也适用于其他任务,例如条件和内容专用的视频生成,以及pix2pix,文本引导的视频编辑。
优化方案:
从DDIM的采样时间序列中获取的结果,没有motion和cross-frame attention的,导致了完全随机的图像生成,仅有文本描述的语义,没有物体运动的连贯性。
解决方案:
(2)在时序 latent code中引入Motion Dynamics,以保持全局场景和背景的一致性。
(2)引入跨帧注意力机制保证前景对象的外观一致性,将整个时序序列表达式更新为:
伪代码表达:
(1)Motion Dynamics
并不直接从随机高斯分布进行采样,而是基于以下步骤进行:
[1] 随机在 latent code采样第一帧:
[2] 用DDIM对xT1采样,并基于SD中的Latent Code编码至xT’1
,其中γ是全局运动向量的超参数。
[5] 将上述构建的全局平移向量应用到步骤2中的Latent Code编码中:
其中wk是针对性的向量形变操作。
[7]将序列x1:mT作为反向扩散过程的起点。
这个方法能解决帧间一致性,但是对于前景对象约束仍然有缺陷。
(2)跨帧注意力机制
目的:在整个视频中保留前景对象的外观、形状等信息。每帧的注意力都放在第一帧上。主要针对原始Stable Diffusion 中的U-net的注意力机制进行了优化,将原始
更新为:
在text2video-zero中每个attention层都接收m个输入,线性投影后残生m个queries,keys和values。通过cross-frame attention,对象和背景的外观,结构和身份都从第一帧传到了后续帧,大大提高了生成帧的时间一致性。
Pipeline:
以随机采样latent code xT1为起点,使用预训练的SD模型中的DDIM 反向传播得到xT’1。然后为每一帧指定一个运动场,就是motion dynamics,通过变形函数W来完成,将xT’1变换为xT’K。之后用 DDPM 前向传播,对latent code xT’K进行传递。此时的latent code就具备了全局运动一致性。
然后将latent code传递到用帧间注意力机制修改后的 SD 模型中。帧间注意力机制使用第一帧的 key 和 value 来生成整个视频序列的图像。通过帧间注意力机制,前景物体的身份和外观可以在视频序列中保留。
还对生成的视频序列使用了背景平滑技术。给定生成序列x 1:m 0,,用显著目标检测,获得前景掩码Mk,使用第一帧变换到第k帧的潜在编码x_t^1和潜在编码x_t^k来进一步提高背景的时间一致性。
然后根据Wk定义的motion dynamics把x 1 t warp为x^ kt。然后进行凸组合:
最后在xkt上用DDIM采样,实现背景平滑的视频生成。
结合ControlNet
ControlNet能够使用边缘、姿态、深度等来调节生成过程。然而,在视频领域直接应用ControlNet会导致时间不一致。指导ControlNet的视频生成过程:用motion dynamics丰富latent code;将UNet中的self-attention转化为跨帧注意力。在采用主UNet进行视频生成任务时,在每个扩散时间步长t的每个x上应用ControlNet预训练的每帧复制分支,并将ControlNet分支输出添加到主UNet的跳过连接中。
原文:
可以看到controlnet的即插即用模式在后续的很多应用中,都是能够有非常良好的表现的。
条件可控文本到视频生成
该方法可以将任何基于sd的文本引导图像编辑算法采用到视频域,而无需任何训练或微调。
采用文本引导的图像编辑方法instructpix2pix,与我们的方法相结合。更准确地说,根据公式8将Instruct-Pix2Pix中的自注意机制改为交叉帧注意。实验表明,这种自适应显著提高了编辑视频的一致性(见图9)。
总结:利用了预训练的Stable Diffusion来进行视频合成。在每一帧和第一帧之间执行交叉注意力机制,保持帧间一致性。通过修改latent code的采样方法来丰富运动动态。主要是与条件生成和编辑技术(如 ControlNet)结合使用,来实现可控视频生成的。
问题:
1.能不能直接对随机生成的XT做warping,再生成视频,而不用DDIM 或DDPM?
2.为什么前面用的是DDIM Backward,后面用的是DDPM forward,为什么不全是DDIM或DDPM?
3. 先用DDIM Backward对图像进行去噪,中间为每帧指定一个运动场motion dynamics,在用DDPM forward加噪,是这样吗?为什么不直接对原始图片进行motion dynamics增强呢?(再读,去噪后得到的是latent code,在这个latent code上进行增强,好像是这样)
4. 以随机采样latent code xT1为起点,使用预训练的SD模型中的DDIM 反向传播得到xT’1。此处得到就是一帧一帧的图像。这里作为起点的噪声图片是已经加噪的原始图片吗?为每一帧指定一个运动场,就是motion dynamics,通过变形函数W来完成,将xT’1变换为xT’K。这一步是不是就将单张图像生成一序列的多张图像了?