【AIGC】AnimateDiff:无需定制化微调的动画化个性化的文生图模型

 前言

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 模型制作动画,而无需进一步收集数据或进行自定义训练。

相关工作 

 文生图模型

  • GLIDE[17]将文本条件引入扩散模型,并证明分类器引导产生更令人愉悦的结果
  • DALLE-2 [21] 通过 CLIP [19] 联合特征空间改进了文本-图像对齐
  • Imagen[25]结合了在文本语料库上预训练的大型语言模型[20]和级联扩散模型,以实现逼真的图像生成。
  • Stable Diffusion[22],即稳定扩散,提出在自动编码器的潜在空间中执行去噪过程,有效地减少所需的计算资源,同时保持生成图像的质量和灵活性。

个性化的文生动画 

         现有工作[7,12,15,28,31,33]更新了网络中的全部参数,损害了原始T2I模型的领域知识。

  •  Tune-a-Video [31] 通过轻微的架构修改和子网调优解决了一次性视频生成任务。
  •  Text2Video-Zero [15] 引入了一种免训练方法,在给定预定义的仿射矩阵的情况下,通过潜在包装对预训练的 T2I 模型进行动画处理。
  • Align-Your-Latents [3],这是一种文本到视频 (T2V) 模型,可在 T2I 模型中训练单独的时间层。

方法

预备知识 

文生图生成器 

 SD基于潜在扩散模型(LDM)[22],该模型在自动编码器的潜在空间(即E(·)和D(·))中执行去噪过程,在大型图像数据集上预先训练为VQ-GAN [14]或VQ-VAE [29]这种设计在降低计算成本的同时保持高视觉质量方面具有优势。在潜伏扩散网络的训练过程中,输入图像x_0最初由冻结编码器映射到潜伏空间,产生z_0=\varepsilon(x_0),然后被预定义的马尔可夫过程扰动:

q(z_{t}|z_{t-1})=N(z_{t};\sqrt{1-\beta_t}z_{t-1},\beta_tI) 

对于时间t=1,...,T,T表示前向扩散过程的步数。超参数\beta_t决定了每一步的噪声强度 ,上述的迭代公式可以被简化为下面这个式子,

z_t=\sqrt{\bar{\alpha_{t}}}z_0+\sqrt{1-\bar{\alpha_t}}\epsilon,\epsilon\sim N(0,I)

\bar{\alpha_t}=\prod _{i=1}^t\alpha_t,\alpha_t=1-\beta_t.Stable Diffusion 采用DDPM[5]中提出的训练目标函数.

L = \mathbb{E}_{\varepsilon(x_0),y,\epsilon\sim{N(0,T)},t}[||\epsilon-\epsilon_{\theta}(z_t,t,\tau_\theta(y))||_2^2]

 y是对应的文字描述,\tau(\cdot)是将字符串映射到向量序列的文本编码器。

在SD中,\epsilon_{\theta}(\cdot)使用一个UNet变体实现的[23],包括四个上采样/下采样模块和一个中间模块,使潜在空间发生四个分辨率级别的变化。每个分辨率级别都集成了2D卷积层以及自注意力和交叉注意力机制。文本模型\tau{(\cdot)}是使用CLIP [19] ViT-L/14文本编码器实现的。

个性化图像生成 

 随着时代进程的不断推进,个性化图像生成越来越受到重视。DreamBooth [24] 和 LoRA [13] 是两种具有代表性且广泛使用的个性化方法。要引入新域(新概念、风格等)对于预先训练的 T2I 模型,一种简单的方法是在该特定领域的图像上对其进行微调。但是,在没有正则化的情况下直接调整模型通常会导致过度拟合或灾难性遗忘,尤其是当数据集较小时。为了克服这个问题,DreamBooth[24]使用一个罕见的字符串作为指示器来表示目标域,并通过添加原始T2I模型生成的图像来增强数据集。这些正则化图像是在没有指示器的情况下生成的,因此允许模型在微调期间学习将稀有字符串与预期域相关联。

另一方面,LoRA [13] 采用了一种不同的方法,试图微调模型权重的残差,即训练 ∆W 而不是 W 。微调后的权重计算为 W’ = W + α∆W ,其中 α 是一个超参数,用于调整调整过程的影响,从而为用户提供更大的自由度来控制生成的结果。为了进一步避免过拟合并降低计算成本,∆W\mathbb{R}^{mxr}分解为两个低秩矩阵,即∆W = AB^T,其中A∈\mathbb{R}^{m\times{r}},B∈\mathbb{R}^{n\times r},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的空间维度高度和宽度将首先被重塑为批量维度,从而在帧的长度处产生批量×高度×宽度序列。然后,重塑的特征图将被投影并经过几个自注意力块,即

z=Attention(Q,K,V)=Softmax(\frac{QK^T}{\sqrt{d}})\cdot{V}

 Q=W^Qz,K=W^Kz,V=W^Vz是重塑特征图的三个投影。此操作使模块能够捕获跨时轴上同一位置的要素之间的时间依赖关系。为了扩大运动模块的感受野,我们将其插入U形扩散网络的每个分辨率水平。此外,我们在自注意力块中添加了正弦位置编码[30]让网络知道动画剪辑中当前帧的时间位置。为了在训练过程中插入我们的模块而不产生有害影响,我们将时态转换器的输出投影层初始化为零,这是ControlNet验证的有效做法[32]。

训练目标。我们的运动建模模块的训练过程类似于潜在扩散模型[22]。采样的视频数据x_0^{1:N}首先通过预训练的自动编码器逐帧编码到潜在代码Z_0^{1:N}中。然后,使用定义的前向扩散时间策略z_t^{1:N}=\sqrt{\bar{\alpha}}z_0^{1:N}+\sqrt{1-\bar{\alpha_t}}\epsilon对潜在码进行噪声化。使用我们的运动模块膨胀的扩散网络将噪声潜在代码和相应的文本提示作为输入,并预测添加到潜在代码中的噪声强度,这是由 L2 损失项鼓励的。我们运动建模模块的最终训练目标是:

L=\mathbb{E}_{\varepsilon(x_0^{1:N}),y,\epsilon\sim N(0,I),t}[||\epsilon-\epsilon_{\theta}(z_{t}^{1:N},t,\tau_{\theta}(y))||_2^{2}] 

 在优化过程中,基础 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. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/320013.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker部署私人云盘

目录 1.安装 2.登陆 1.安装 mkdir -p /opt/alist docker run -d --restartalways -v /opt/alist:/opt/alist/data -p 5244:5244 --name"alist" xhofe/alist:latest 2.登陆 ip:5224 默认账户admin 密码在日志中

逆水行舟 不进则退

目录 一、前言 二、2023年度总结 三、2024展望未来 一、前言 这是我从工作以来到现在最喜欢的一句话,我想把这句话送给自己也想送给大家。 2019年7月实习到现在已经过去了四年多,进入2024年也迎来了我工作生涯的第五个年头。 在这个行业里&#xff…

《教育界》期刊怎么投稿发表论文?

《教育界》是国家新闻出版总署批准的正规教育类期刊,由广西师范大学主管,广西师范大学出版社集团有限公司主办,面向国内外公开发行,旨在追踪教育新动向,探讨教育改革与管理、办学与教育教学经验等,为广大一…

Linux scp命令 服务器之间通讯

目录 一. scp命令简介二. 本地服务器文件传输到远程服务器三. 本地服务器文件夹传输到远程服务器 一. scp命令简介 scp(Secure Copy Protocol)是用于在Unix或Linux系统之间安全地复制文件或目录的命令。 它使用SSH(Secure Shell)…

等保测评流程是什么样的?测评周期多久?

等保测评流程是什么样的?测评周期多久? 等保测评一般分成五个阶段,定级、备案、测评、整改、监督检查。 1.定级阶段 针对用户的信息系统有等保专家进行定级,一般常见的系统就是三级系统或者是二级系统。在这里有一个小的区分&am…

【ArcGIS微课1000例】0088:计算城市建筑物朝向(矩形角度)

文章目录 一、实验描述二、实验数据三、角度计算1. 添加字段2. 计算角度四、方向计算一、实验描述 矩形要素具有长轴和短轴,其长轴方向也称为矩形面的主角度,可用于确定面要素的走向趋势。根据该方向参数,可以对具有矩形特征的地理对象进行方向分析,且适用于很多应用场景,…

8.1 Centos安装部署Redis

文章目录 前言一、下载Redis二、编译Redis三、配置redis.conf四、启动Redis服务端五、启动Redis客户端测试前言 本文将手把手演示在CentOS7上安装部署Redis。 一、下载Redis 可以使用wget命令进行下载,这里下载到/app目录 wget http://download.redis.io/releases/redis-5.…

Python爬虫学习笔记(一)---Python入门

一、pycharm的安装及使用二、python的基础使用1、字符串连接2、单双引号转义3、换行4、三引号跨行字符串5、命名规则6、注释7、 优先级not>and>or8、列表(list)9、字典(dictionary)10、元组(tuple)11…

计算机毕业设计 | SpringBoot+vue的医院门诊预约挂号系统(附源码)

1,绪论 项目背景 预约挂号,挂专家号更是“一号难求”,这是当前许多大型医院的普遍现象。预约挂号是各地近年来开展的一项便民就医服务,旨在缩短看病流程,节约患者时间。这种预约挂号大多通过医疗机构提供的电话或者网…

视频号小店发展前景怎样?适合新手入驻吗?

我是电商珠珠 视频号于22年7月发展了属于自己的平台-视频号小店。作为一个发展了才一年的平台来说,很多人都不敢入驻,害怕它很快就会垮掉。 我们团队在22年10月的时候,开始入驻其中。发现它的玩法和抖音小店相比并没有什么两样。 在刚开始…

电脑定时关机应用

这是一个Python应用。家里卧室装了新电视,HDMI连接笔记本追剧还是很愉快的。可是经常睡着,自然忘了关机。搜了一大圈,都是用命令行或者bat解决。商店里的应用也不好用,有些还收费。于是萌生了自己写一个定时关机应用的想法。利用N…

Linux学习之网络编程3(高并发服务器)

写在前面 Linux网络编程我是看视频学的,Linux网络编程,看完这个视频大概网络编程的基础差不多就掌握了。这个系列是我看这个Linux网络编程视频写的笔记总结。 高并发服务器 问题: 根据上一个笔记,我们可以写出一个简单的服务端…

研0或研一|如何快速入门深度学习?

一、经验建议 1️⃣课程篇 直接上手B站【小土堆PyTorch深度学习快速入门教程】,共计9h50min左右,预计一周就可以学完,比较偏向理论和实践相结合跟李沐学AI B站【动手学深度学习 PyTorch版】刘二大人B站【PyTorch深度学习实践】,…

springboot集成jsp

首先pom中引入依赖包 <!--引入servlet--> <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId> </dependency> <!--引入jstl标签库--> <dependency><groupId>javax.servle…

echarts 3D地图

vueecharts 3D地图,可自定义地图背景底图。鼠标放上显示弹窗&#xff0c;弹窗自动切换。 <template><div id"gbznt" class"gbznt" ref"gbznt"><img class"mapBg" src"../../../img/propertyTransaction/echart-bg…

二进制与十六进制,二进制与八进制之间的相互转换技巧

目录 1.二进制转换为八进制 2.八进制转换为二进制 3.二进制转换为十六进制 4.十六进制转换为二进制 1.二进制转换为八进制 转换为8进制 第一步&#xff1a;以小数点为分界线&#xff0c;整数部分自右向左&#xff0c;小数部分自左向右每3位取成1位&#xff1a; 整数部分…

码蹄集新手村:绝对值,输入各种类型数,平面、空间三角形面积(坐标)

1.绝对值 虽然用if else判断是否小于0&#xff0c;小于0取相反数也能解决&#xff0c;但可能会出现错误&#xff0c;尽量用fabs()函数 2. 输入各种类型数所需的常见英文字母 字符 %c double %lf float %f 3.平面三角形面积&#xff08;坐标&#xff09; 记住三角形面积公…

人物故事:从留美复旦流浪博士,分享一位杰出C++开发者的故事

近日留美复旦流浪博士的事迹冲上热搜。通过多方渠道消息来源&#xff0c;据说该流浪博士在1985年&#xff0c;15岁还在读高一的他&#xff0c;就已经被复旦大学少年班物理学专业录取。在复旦大学就读期间曾获得李政道奖学金。1988年&#xff0c;19岁时从复旦大学通过第九届CUSP…

【并发】共享模型之管程

共享模型之管程 共享问题 package 并发;public class Test1 {static int a0;public static void main(String[] args) throws InterruptedException {Thread t1new Thread(new Runnable() {Overridepublic void run() {for(int i0;i<5000;i){a;}}});Thread t2new Thread(n…

第 4 章 链表

文章目录 4.1 链表(Linked List)介绍4.2 单链表的应用实例4.3 单链表面试题(新浪、百度、腾讯)4.4 双向链表应用实例4.4.1 双向链表的操作分析和实现4.4.2 课堂作业和思路提示 4.5 单向环形链表应用场景4.6 单向环形链表介绍4.7 Josephu 问题4.8 Josephu 问题的代码实现 4.1 链…