Animatediff是一个有效的框架将文本到图像模型扩展到动画生成器中,无需针对特定模型进行调整。只要在大型视频数据集中学习到运动先验知识。AnimateDiff就可以插入到个性化的文生图模型中,与Civitai和Huggingface的文生图模型兼容,也可以与自己微调的大模型兼容。
随着文本到图像模型(例如,Stable Diffusion [22])和相应的个性化技术的进步DreamBooth [24] 和 LoRA [13] 等产品,每个人都可以以可承受的成本将他们的想象力体现成高质量的图像。因此,对图像动画技术的需求很大,可以进一步将生成的静态图像与运动动态相结合。在本报告中,我们提出了一个实用的框架,可以一劳永逸地为大多数现有的个性化文本到图像模型制作动画,从而节省特定于模型的调整工作。所提出的框架的核心是将新初始化的运动建模模块插入到冻结的文本到图像模型中,并在视频剪辑上对其进行训练,以提炼出合理的运动先验。经过训练后,只需注入此运动建模模块,从同一基础 T2I 派生的所有个性化版本都很容易成为文本驱动的模型,从而生成多样化和个性化的动画图像。我们对动漫图片和逼真照片中的几个具有公共代表性的个性化文本到图像模型进行了评估,并证明了我们提出的框架有助于这些模型生成时间平滑的动画剪辑,同时保留其输出的域和多样性。代码和预训练权重将在我们的项目页面上公开提供。
文本生成图像领域广受关注,几种轻量级个性化方法,如DreamBooth [24]和LoRA [13],以使用消费级设备(如带有RTX3080的笔记本电脑)在小型数据集上对这些模型进行定制微调,然后这些模型可以生成质量显着提高的定制内容。通过这种方式,用户可以以非常低的成本将新概念或风格引入预训练的 T2I 模型,从而产生艺术家和业余爱好者在模型共享平台(如 CivitAI [4] 和 Huggingface [8] )上贡献的众多个性化模型。
文生图质量很高,但都是静态图像,缺乏时间自由度。最近的通用文本到视频生成方法[7,12,33]建议将时间建模合并到原始T2I模型中,并在视频数据集上调整模型。然而,个性化 T2I 模型变得具有挑战性,因为用户通常负担不起敏感的超参数调整、个性化视频收集和密集的计算资源。
本文的做法将运动建模模块引入到基础T2I模型中,然后对大型视频剪辑[1]进行微调,学习合理的运动先验。值得注意的是,基本模型的参数保持不变。经过微调后,我们证明了派生的个性化 T2I 也可以从学习良好的运动先验中受益,从而产生流畅且吸引人的动画。也就是说,运动建模模块设法为所有相应的个性化 T2I 模型制作动画,而无需进一步收集数据或进行自定义训练。
现有工作[7,12,15,28,31,33]更新了网络中的全部参数,损害了原始T2I模型的领域知识。
SD基于潜在扩散模型(LDM)[22],该模型在自动编码器的潜在空间(即E(·)和D(·))中执行去噪过程,在大型图像数据集上预先训练为VQ-GAN [14]或VQ-VAE [29]。这种设计在降低计算成本的同时保持高视觉质量方面具有优势。在潜伏扩散网络的训练过程中,输入图像最初由冻结编码器映射到潜伏空间,产生,然后被预定义的马尔可夫过程扰动:
对于时间t=1,...,T,T表示前向扩散过程的步数。超参数决定了每一步的噪声强度 ,上述的迭代公式可以被简化为下面这个式子,
.Stable Diffusion 采用DDPM[5]中提出的训练目标函数.
y是对应的文字描述,是将字符串映射到向量序列的文本编码器。
在SD中,使用一个UNet变体实现的[23],包括四个上采样/下采样模块和一个中间模块,使潜在空间发生四个分辨率级别的变化。每个分辨率级别都集成了2D卷积层以及自注意力和交叉注意力机制。文本模型是使用CLIP [19] ViT-L/14文本编码器实现的。
随着时代进程的不断推进,个性化图像生成越来越受到重视。DreamBooth [24] 和 LoRA [13] 是两种具有代表性且广泛使用的个性化方法。要引入新域(新概念、风格等)对于预先训练的 T2I 模型,一种简单的方法是在该特定领域的图像上对其进行微调。但是,在没有正则化的情况下直接调整模型通常会导致过度拟合或灾难性遗忘,尤其是当数据集较小时。为了克服这个问题,DreamBooth[24]使用一个罕见的字符串作为指示器来表示目标域,并通过添加原始T2I模型生成的图像来增强数据集。这些正则化图像是在没有指示器的情况下生成的,因此允许模型在微调期间学习将稀有字符串与预期域相关联。
另一方面,LoRA [13] 采用了一种不同的方法,试图微调模型权重的残差,即训练 ∆W 而不是 W 。微调后的权重计算为 W’ = W + α∆W ,其中 α 是一个超参数,用于调整调整过程的影响,从而为用户提供更大的自由度来控制生成的结果。为了进一步避免过拟合并降低计算成本,∆W ∈ 分解为两个低秩矩阵,即∆W = ,其中A∈,B∈,r≪m,n。在实践中, 仅对transformer模块中的投影矩阵进行微调, 进一步降低了 LoRA 模型的训练和存储成本.与训练后存储整个模型参数的 DreamBooth 相比,LoRA 模型在训练和用户之间共享的效率要高得多。
对个性化图像模型进行动画处理通常需要对相应的视频集进行额外调整, 使其更具挑战性。在本节中,我们以个性化动画为目标,其正式表述为:给定一个个性化的 T2I 模式,例如,由用户训练或从 CivitAI [4] 或 Huggingface [8] 下载的 DreamBooth [24] 或 LoRA [13] 检查点),目标是将其转换为动画生成器,只需很少或没有培训成本,同时保留其原始领域知识和质量。例如,假设 T2I 模型针对特定的 2D 动漫风格进行了个性化设置。在这种情况下,相应的动画生成器应该能够生成具有适当动作的该风格的动画剪辑,例如前景/背景分割、角色身体运动等。
为了实现这一点,一种朴素的方法是通过添加时间感知结构并从大规模视频数据集中学习合理的运动先验来膨胀T2I模型[7,12,33]。但是,对于个性化域,收集足够的个性化视频成本很高。同时,有限的数据将导致源域的知识流失。因此,我们选择单独训练一个可泛化的运动建模模块,并在推理时将其插入到个性化的 T2I 中。通过这样做,我们避免了对每个个性化模型的特定调整,并通过保持预先训练的权重不变来保留他们的知识。这种方法的另一个关键优点是,一旦模块被训练,它就可以插入到同一基础模型上的任何个性化 T2I 中,而无需进行特定的调整,正如以下实验所验证的那样。这是因为个性化过程几乎没有修改基础 T2I 模型的特征空间,这也是Controlnet采用的方法。
运动模块的详细信息。模块插入(左):我们的运动模块插入到预训练的图像层之间。当数据批处理通过图像层和我们的运动模块时,其时间和空间轴将分别重塑为批处理轴。模块设计(右):我们的模块是一个普通的临时转换器,具有零初始化的输出项目层。
网络膨胀。由于原始标清只能批量处理图像数据,因此需要模型膨胀以使其与我们的运动建模模块兼容,该模块采用 5D 视频张量批量×通道形状的×帧数×高度×宽度作为输入。为了实现这一点,我们采用了类似于视频扩散模型[12]的解决方案。具体来说,我们通过将帧数轴重塑为批处理轴并允许网络独立处理每一帧,将原始图像模型中的每个 2D 卷积和注意力层转换为空间伪 3D 层。与上述不同的是,我们新插入的运动模块在每批中跨帧操作,以实现动画剪辑中的运动流畅性和内容一致性。
模块设计。对于运动建模模块的网络设计,我们的目标是实现跨帧的高效信息交换。为了实现这一点,我们选择了普通的时态变压器作为运动模块的设计。值得注意的是,我们还对运动模块的其他网络设计进行了实验,发现普通时间变换器足以对运动先验进行建模。我们将寻找更好的运动模块留给未来的工作。
原版时间transformer由几个沿时间轴操作的自注意力块组成。当通过我们的运动模块时,特征图z的空间维度高度和宽度将首先被重塑为批量维度,从而在帧的长度处产生批量×高度×宽度序列。然后,重塑的特征图将被投影并经过几个自注意力块,即
是重塑特征图的三个投影。此操作使模块能够捕获跨时轴上同一位置的要素之间的时间依赖关系。为了扩大运动模块的感受野,我们将其插入U形扩散网络的每个分辨率水平。此外,我们在自注意力块中添加了正弦位置编码[30],让网络知道动画剪辑中当前帧的时间位置。为了在训练过程中插入我们的模块而不产生有害影响,我们将时态转换器的输出投影层初始化为零,这是ControlNet验证的有效做法[32]。
训练目标。我们的运动建模模块的训练过程类似于潜在扩散模型[22]。采样的视频数据首先通过预训练的自动编码器逐帧编码到潜在代码中。然后,使用定义的前向扩散时间策略对潜在码进行噪声化。使用我们的运动模块膨胀的扩散网络将噪声潜在代码和相应的文本提示作为输入,并预测添加到潜在代码中的噪声强度,这是由 L2 损失项鼓励的。我们运动建模模块的最终训练目标是:
在优化过程中,基础 T2I 模型的预训练权重将被冻结,以保持其特征空间不变。
考虑到大多数公共个性化模型都基于此版本,我们选择了 Stable Diffusion v1 作为训练运动建模模块的基础模型。我们使用 WebVid-10M [1](一个文本-视频对数据集)训练了运动模块。数据集中的视频剪辑首先以 4 的步幅进行采样,然后调整大小并居中裁剪为 256 × 256 的分辨率。我们的实验表明,在 256 上训练的模块可以推广到更高的分辨率。因此,我们选择了 256 作为我们的训练分辨率,因为它保持了训练效率和视觉质量的平衡。用于训练的视频剪辑的最终长度设置为 16 帧。在实验过程中,我们发现,使用与训练基本 T2I 模型的原始时间表略有不同的扩散时间表有助于获得更好的视觉质量并避免低饱和度和闪烁等伪影。我们假设稍微修改原始计划可以帮助模型更好地适应新任务(动画)和新数据分布。因此,我们使用了线性 beta 计划,其中 β= 0.00085,β= 0.012,只和原来的SD模型训练稍有不同。
在我们的实验中,我们观察到大多数失败案例出现在个性化 T2I 模型的领域远非现实时,例如 2D 迪士尼卡通(图 7)。在这些情况下,动画结果具有明显的伪影,无法产生适当的运动。我们假设这是由于训练视频(现实)和个性化模型之间的分布差距很大。这个问题的一个可能的解决方案是在目标域中手动收集几个视频,并稍微微调运动建模模块,我们把它留给未来的工作。
我们介绍了 AnimateDiff,这是一个实现个性化文本到图像模型动画的实用框架,旨在将大多数现有的个性化 T2I 模型一劳永逸地转化为动画生成器。我们证明了我们的框架,其中包括一个在基础 T2I 上训练的简单设计的运动建模模块,可以从大型视频数据集中提取可泛化的运动先验。经过训练后,我们的运动模块可以插入到其他个性化模型中,以生成具有自然和适当运动的动画图像,同时忠实于相应的领域。对各种个性化T2I模型的广泛评估也验证了我们方法的有效性和通用性。因此,AnimateDiff 为个性化动画提供了一个简单而有效的基准,可能使广泛的应用程序受益。
https://arxiv.org/pdf/2307.04725.pdf
GitHub - guoyww/AnimateDiff: Official implementation of AnimateDiff.