AI 文摘

AnimateDiff:让文生图模型动起来





作者: 人工智能技术与时代人物风云 来源: 人工智能技术与时代人物风云

研究背景

随着文本到图像(Text-to-Image, T2I)扩散模型(例如Stable Diffusion)的发展以及相应的个性化定制技术(如DreamBooth和LoRA)的出现,现在人们可以以可承受的成本将自己的想象力转化为高质量的图像。然而,如何将现有的高质量个性化T2I模型添加动态运动 ,并使它们能够生成动画 ,仍然是一个开放的挑战。在现实世界的生产中,如电影和卡通行业,生成动画的能力更为可取。

一句话总结:把动画生成看成多张连续的图片生成,视频数据相比图片多了时间维度,通过合理的reshape和注意力机制实现同时生成多帧图片且能够捕捉不同帧之间的关系

预备知识

  • Stable Diffusion

Stable Diffusion是一种基于扩散模型的文本到图像生成方法。扩散模型是一种生成模型,它通过模拟数据的扩散过程来生成新的数据样本。在Stable Diffusion中,这个过程发生在一个预训练的自编码器的潜在空间内。自编码器由两个部分组成:编码器(E)和解码器(D)。在训练过程中,编码器将图像编码为潜在表示(z0),然后通过前向扩散过程向潜在表示中添加噪声。

解码器(去噪网络)则学习如何逆转这个过程,即预测并去除噪声,从而生成与文本提示相匹配的图像。

  • LoRA

LoRA是一种用于大型模型微调的技术,它通过引入低秩分解矩阵对模型的权重进行调整,而不是重新训练所有模型参数。这种方法减少了训练成本,同时避免了灾难性遗忘(catastrophic forgetting),即在微调过程中丢失原有知识的问题。

提出的方法

为了实现基于文生图模型进行动画生成,文章提出了AnimateDiff,这是一个实用的框架,可以在不需要调整预训练好的文生图模型的情况下,将个性化的T2I模型转化为动画生成器。AnimateDiff的核心是一个即插即用的动态模块,它可以一次性训练,并无缝集成到任何源自相同基座模型的个性化T2I模型中。

AnimateDiff的训练包括三个阶段:

领域适配器(Domain Adapter)

基础T2I模型通常是在高质量图像数据集上训练的,而视频数据集(用于学习运动模式)的视觉质量可能较低 。这种视觉分布上的差异可能导致在视频数据上直接训练时动画质量下降。

为了解决这个问题,领域适配器被设计为一个独立的网络,它通过LoRA技术在基础T2I模型的自/交叉注意力层 中添加额外的参数。这些参数专门针对视频数据集进行优化,以适应其视觉特征。在推理阶段,领域适配器可以被移除或调整其影响,以确保生成的动画保持高质量。

动态模块(Motion Module)

为了能够生成连贯的动画序列,需要在现有的静态图像生成模型中引入时间维度

网络膨胀(Network Inflation):

为了处理视频数据,需要将原本处理2D图像的扩散模型扩展到3D视频数据。这通过修改模型结构实现,使其能够接受5D视频张量作为输入,其中包含了批次(batch)、颜色通道(channels)、帧时间(frametime)、高度(height)和宽度(width)。

在图像层处理时,时间轴(frametime)被忽略,通过重塑操作将帧时间轴的特征图重塑为批次轴,使得网络能够独立处理每一帧。处理完成后,特征图再次被重塑回5D张量。

模块设计(Module Design)

Motion Module采用了Transformer架构,且被调整为沿着时间轴操作。Temporal Transformer由多个自注意力块组成,每个块都包含查询(Q)、键(K)和值(V)的投影。这些投影通过自注意力机制进行处理,使得当前帧的生成能够整合来自其他帧的信息。

为了保持帧之间的顺序,Temporal Transformer在自注意力之前添加了正弦位置编码。这确保了模块能够理解动画中帧的顺序,从而捕捉到运动动态。

在训练阶段,Motion Module与基础T2I模型一起被训练。

  • 首先,视频数据被编码为潜在代码,然后根据扩散过程添加噪声。

  • 膨胀后的模型输入噪声化的潜在代码和相应的文本提示,预测添加的噪声。

  • 训练目标是最小化预测噪声与实际噪声之间的均方误差(MSE)。

  • 为了确保运动模块在训练初期不会引入负面影响,输出投影层被零初始化,并且添加了残差连接,使得运动模块在训练开始时是一个恒等映射。

MotionLoRA

为了使预训练的运动模块能够适应新的运动模式,如不同的镜头类型(例如,变焦、平移和滚动),MotionLoRA提供了一种轻量级的微调技术。

MotionLoRA通过在动态模块的自注意力层 中添加LoRA层来实现。这些LoRA层专门针对新的运动模式进行训练,而不需要对整个模型进行大规模的重新训练。这种方法允许模型以较低的训练成本和数据需求来适应新的运动模式,如相机的缩放、平移等。通过这种方式,AnimateDiff能够生成具有特定运动效果的动画。

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具