AIGC-AnimateDiff论文详细解读

AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning

github:https://github.com/guoyww/animatediff/
论文:https://arxiv.org/abs/2307.04725

在这里插入图片描述

AnimateDiff 通过预训练的运动模块(motionmodule),直接将现有的个性化文本到图像 (T2I) 模型转换为相应的动画生成器,而无需进行特定于模型的调整。这是一个实用的框架,用于对个性化 T2I 模型进行动画处理。只需训练一次即可无缝集成到源自同一基础 T2I 的任何个性化 T2I 中。 经过训练后,运动模块可以插入个性化T2I模型中,形成个性化动画生成器。

MOTIVATION

文章的动机是要解决现有高质量个性化文本到图像(T2I)模型无法生成动画的问题。尽管现有的T2I模型和个性化技术(如DreamBooth和LoRA)可以以较低成本将想象力转化为高质量图像,但是将动态运动添加到这些个性化T2I模型中,使其生成动画仍然是一个挑战。

CONTRIBUTION

  • 提出了 AnimateDiff,这是一个实用的pipeline,无需进行特定的微调即可实现任何个性化 T2Is 的动画生成能力;
  • 验证 Transformer 架构足以对运动先验进行建模,这为视频生成提供了宝贵的见解;
  • 提出了MotionLoRA,一种轻量级微调技术,使预训练的运动模块适应新的运动模式;
  • 我们用代表性社区模型全面评估我们的方法,并将其与学术基线和商业工具(例如 Gen2 (2023) 和 Pika Labs (2023))进行比较。

PRELIMINARY

Stable Diffusion

Stable Diffusion是本文选择作为基础文本到图像(T2I)模型的开源模型。它因其拥有一个发达的社区和许多高质量的个性化T2I模型而受到青睐。以下是关于Stable Diffusion的要点:

  • 工作原理:SD在预训练的自动编码器的潜在空间内执行扩散过程,使用编码器 E ( ⋅ ) E(\cdot) E()和解码器 D ( ⋅ ) D(\cdot) D()
  • 训练过程:在训练时,图像通过编码器转换为潜在表示 z 0 = E ( x 0 ) z_0 = E(x_0) z0=E(x0),然后通过前向扩散过程逐渐加入噪声,生成 z t z_t zt。这个过程由预定义的 α ˉ t \bar{\alpha}_t αˉt控制每一步的噪声强度。
  • 数学表达:前向扩散的数学公式为:
    z t = α ˉ t z 0 + 1 − α ˉ t ϵ , ϵ ∼ N ( 0 , I ) z_t = \sqrt{\bar{\alpha}_t} z_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) zt=αˉt z0+1αˉt ϵ,ϵN(0,I)
  • 去噪网络:去噪网络 ϵ θ ( ⋅ ) \epsilon_\theta(\cdot) ϵθ()学习逆转扩散过程,通过预测添加的噪声,并通过均方误差(MSE)损失函数来优化。
  • 损失函数:MSE损失函数定义为:
    L = E E ( x 0 ) , y , ϵ ∼ N ( 0 , I ) , t [ ∥ ϵ − ϵ θ ( z t , t , τ θ ( y ) ) ∥ 2 2 ] \mathcal{L} = \mathbb{E}_{\mathcal{E}(x_0), y, \epsilon \sim \mathcal{N}(0, I), t} \left[ \| \epsilon - \epsilon_\theta(z_t, t, \tau_\theta(y)) \|_2^2 \right] L=EE(x0),y,ϵN(0,I),t[ϵϵθ(zt,t,τθ(y))22]
  • 网络结构:在SD中,去噪网络实现为一个UNet,包含四个分辨率级别的下采样/上采样块对以及一个中间块。每个网络块由ResNet、空间自注意力层和引入文本条件的交叉注意力层组成。

Low-Rank Adaptation (LoRA)

LoRA是一种加速大型模型微调的方法,最初用于语言模型的适应。以下是LoRA的关键点:

  • 目的:LoRA旨在优化新引入的权重,而不是重新训练所有模型参数,以加快大型模型的微调过程。
  • 原理:与传统的微调方法不同,LoRA不是重新训练模型的所有参数,而是引入新的参数——秩分解矩阵对,并且只优化这些新参数。LoRA限制了可训练参数的数量,同时保持原始权重不变,减少了灾难性遗忘的风险。
  • 数学表达:引入LoRA后的模型权重更新为:
    W ′ = W + Δ W = W + A B T \mathcal{W}' = \mathcal{W} + \Delta \mathcal{W} = \mathcal{W} + AB^T W=W+ΔW=W+ABT
    • LoRA通过添加秩分解矩阵对A和B来实现,其中 A ∈ R m × r A \in \mathbb{R}^{m \times r} ARm×r B ∈ R n × r B \in \mathbb{R}^{n \times r} BRn×r.r是超参数,代表LoRA层的秩。
    • 这些矩阵被视为预训练模型权重 W ∈ R m × n W \in \mathbb{R}^{m \times n} WRm×n的残差,即通过 W ′ = W + A B T W' = W + AB^T W=W+ABT更新模型权重。
    • 只有新引入的矩阵A和B被优化,而原始的权重W保持不变(冻结)。
      其中,A和B是秩分解矩阵对,r是超参数,表示LoRA层的秩。

AnimateDiff

AnimateDiff的核心是核心是从视频数据中学习可转移的运动先验,无需特定调整即可应用于个性化 T2Is。通过训练 AnimateDiff 的三个组件(即域适配器、运动模块和 MotionLoRA)来实现这一目标。在这里插入图片描述
首先,训练域适配器domain adapter用于以减轻训练视频造成的负面影响。 其次,插入运动模块motion module并在视频上进行训练,以学习一般运动先验。 最后,利用MotionLoRA在一些参考视频上进行训练,以使预训练的运动模块适应新的运动模式。

Domain Adapter-使用域适配器减轻训练数据的负面影响

公开可用的视频训练数据集由于收集困难,其视觉质量通常低于图像数据集。单独处理视频帧时,可能会遇到一些质量上的问题,这导致训练基础文本到图像(T2I)模型的高质量图像数据集与用于学习运动先验的目标视频数据集之间存在显著的质量域差异。这种质量差异可能会限制直接在原始视频数据上训练时动画生成管道的质量。

  • 视频数据集WebVid:主要由真实世界的视频录像组成,可能包含运动模糊、压缩伪影和水印。
  • 图像数据集LAIONAesthetic:包含更高质量的内容,如艺术画作和专业摄影。

解决方案:领域适配器(Domain Adapter):

  • 目的:为了避免运动模块学习到质量差异,同时保留基础T2I的知识,提出了一个独立的网络——Domain Adapter。

  • 实现:在推理时不使用领域适配器,以减少上述域间差异造成的负面影响。
    使用低秩适应(LoRA)技术实现领域适配器层,并将它们插入到基础T2I模型的自注意力/交叉注意力层中

  • 公式表示:以查询投影(query (Q) projection)为例,内部特征Z经过投影后,通过领域适配器层的变换可以表示为:
    Q = W Q z + AdapterLayer ( z ) = W Q z + α ⋅ A B T z , Q = \mathcal{W}^Q z + \text{AdapterLayer}(z) = \mathcal{W}^Q z + \alpha \cdot AB^T z, \quad Q=WQz+AdapterLayer(z)=WQz+αABTz,

    • α = 1 \alpha = 1 α=1是一个标量,可以在推理时调整到其他值(设置为0可以完全移除领域适配器的效果)。

    • W Q \mathcal{W}^Q WQ:查询(Query)的权重矩阵,用于将内部特征( z )投影到查询空间。

    • z z z:内部特征向量,它是从视频帧或图像中提取的原始特征表示。

    • AdapterLayer ( z ) \text{AdapterLayer}(z) AdapterLayer(z):Domain Adapter对特征z的作用。这一层是为了调整特征,使其适应不同数据集之间的分布差异。

    • A,B:这两个矩阵是LoRA(Low-Rank Adaptation)中的秩分解矩阵对。它们用于以低秩方式调整模型权重,从而减少训练参数的数量并避免灾难性遗忘。 A B T AB^T ABT代表了领域适配器层对特征z的调整量,通过低秩结构实现

  • 优化目标:仅优化领域适配器的参数,使用从视频数据集中随机采样的静态帧,优化目标与 z t = α ˉ t z 0 + 1 − α ˉ t ϵ , ϵ ∼ N ( 0 , I ) z_t = \sqrt{\bar{\alpha}_t} z_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, I) zt=αˉt z0+1αˉt ϵ,ϵN(0,I)相同。

damain adapter在训练阶段和推理阶段的应用

  • 训练阶段(Training Phase)
    • 目的:领域适配器在训练阶段的目的是调整模型,以适应视频数据集和图像数据集之间的视觉质量差异。由于视频数据集通常包含更多的噪声和较低的分辨率,领域适配器帮助模型学习如何从这些数据中提取有用的运动信息,同时忽略不相关的视觉伪影。
    • 实现:通过在模型的自注意力或交叉注意力层中引入额外的参数(使用LoRA技术),领域适配器学习将视频帧的特征映射调整到与基础T2I模型训练时使用的特征空间。
  • 推理阶段(Inference Phase):
    • 灵活性:在推理阶段,领域适配器的使用是可选的,并且其贡献可以通过调整α值来控制。这种设计提供了灵活性,允许用户根据生成动画的特定需求来调整领域适配器的影响。
    • 调整:如果用户希望生成的动画更加贴近原始T2I模型的风格,可以适当调整α值,使领域适配器对输出的影响减小。相反,如果用户希望动画更多地反映视频数据的特点,可以增加α值。

MOTION MODULE-使用运动模块学习运动先决条件

为了在预训练的 T2I 之上沿时间维度对运动动力学进行建模,必须 1) 膨胀(inflate) 2 维扩散模型以处理 3 维视频数据,2) 设计一个子模块(sub-module)以实现沿时间维度的有效信息交换。

Network Inflation

基础T2I模型中的预训练图像层能够捕捉高质量的内容先验知识(high-quality con-tent priors)。为了更好的利用这些知识,网络膨胀的一个更好的方法是让这些图像层(image layers)独立处理视频帧(video frames)。

网络膨胀的方法

通过修改模型结构,使其能够接受5D视频张量 x ∈ R b × c × f × h × w x \in \mathbb{R}^{b \times c \times f \times h \times w} xRb×c×f×h×w作为输入。作者将原模型中每个2D卷积及attention层转换到仅关注空间的伪3D层,将frame维度合并到batch维度。新引入的运动模块可在每个batch中跨帧执行,使得生成视频跨帧平滑,内容一致

  • b:批处理轴(batch axis)
  • c:通道数(channel)
  • f:帧时间轴(frame-time axis),代表视频帧的序列
  • h 和w:帧的高度和宽度(spatial dimensions)

当内部特征图(internal feature maps)通过图像层时,假设原始视频张量的尺寸是 [b,c,f,h,w],将视频张量重塑为[b×f,c,h,w],这样每一帧都成为独立的图像。应用图像层处理后,再次将张量重塑回原始的5D形状,以便进行下一步的时间维度处理。
在这里插入图片描述

sub-module design

在AnimateDiff框架中,模块设计部分的核心是以Transformer架构为基础并采用Transformer架构来创建一个专门处理时间维度的运动模块,这个模块被称为“temporal Transformer”,通过实验发现这种设计足以对运动先验进行建模。

  • temporal Transformer

    • temporal Transformer由多个自注意力块组成,这些块沿着时间轴排列,能够处理时间序列数据。

    • self-attention中增加正弦位置编码,使得网络关注当前帧时空位置

    • 运动模块的输入是经过重塑的特征图,其中空间维度(height和width)被合并到批处理轴中,得到长度为frames的batch * height * width序列,表示为 { z 1 , . . . , z f ;   z i ∈ R ( b × h × w ) × c } \{z_1, ..., z_f; \, z_i \in \mathbb{R}^{(b \times h \times w) \times c}\} {z1,...,zf;ziR(b×h×w)×c}

      • 原本的5D视频张量被转换为一系列沿时间轴排列的向量。
      • 重构后的特征图沿时间轴划分,形成长度为f的向量序列。每个向量 z i z_i zi包含了整个视频帧的所有信息,并且每个向量都对应于动画中的一个特定帧。
    • 然后向量将被投影并经过几个自注意力块

  • 初始化
    为了避免附加模块可能引入的任何有害影响,我们对时间 Transformer 的输出投影层进行零初始化,并添加残差连接,以便运动模块在训练开始时是恒等映射 。

通过 MOTIONLORA 适应新的运动模式

预训练的运动模块虽然能够捕捉一般性的运动先验,但在面对特定运动模式(如相机缩放、平移和翻滚等)时,需要进一步的调整。作为AnimateDiff的最后阶段,MotionLoRA提供了一种高效的微调方法,用于个性化运动效果。在运动模块的自注意力层中加入LoRA(Low-Rank Adaptation)层,这些层专门针对新运动模式的参考视频进行训练。

  • MotionLoRA的训练过程:
    • 数据增强:通过基于规则的数据增强方法获取具有不同镜头类型的参考视频,例如通过逐渐缩小(放大)或扩大(缩小)视频帧的裁剪区域来实现变焦效果。
    • 训练效率:MotionLoRA能够使用少量(20到50个)参考视频和少量(约2000次)训练迭代达到良好的效果,同时仅需要大约30M的存储空间。
  • MotionLoRA的优势:MotionLoRA的训练效率高,允许用户在有限的资源下快速调整模型以适应新的运动模式。由于LoRA的低秩特性,MotionLoRA还具有组合能力,即可以合并多个独立训练的MotionLoRA模型,在推理时实现复合运动效果。

ANIMATEDIFF IN PRACTICE

training

  • 视频数据批次 x 1 : f 0 ∈ R b × c × f × h × w x_{1:f}^0 \in \mathbb{R}^{b \times c \times f \times h \times w} x1:f0Rb×c×f×h×w 首先通过预训练的自动编码器进行逐帧编码,转换成潜在代码 z 1 : f 0 z_{1:f}^0 z1:f0

  • 潜在代码随后根据前向扩散计划添加噪声,生成噪声化的潜在代码 z t 1 : f = α ˉ t z 0 1 : f + 1 − α ˉ t ϵ 1 : f z_t^{1:f} = \sqrt{\bar{\alpha}_t} z_0^{1:f} + \sqrt{1 - \bar{\alpha}_t} \epsilon^{1:f} zt1:f=αˉt z01:f+1αˉt ϵ1:f

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

  • 运动模块的最终训练目标是通过最小化预测噪声和实际噪声之间的均方误差来实现的:
    L = E E ( x 0 1 : f ) , y , ϵ 1 : f ∼ N ( 0 , I ) , t [ ∥ ϵ − ϵ θ ( z t 1 : f , t , τ θ ( y ) ) ∥ 2 2 ] \mathcal{L} = \mathbb{E}_{\mathcal{E}(x_0^{1:f}), y, \epsilon^{1:f} \sim \mathcal{N}(0, \mathit{I}), t} \left[ \| \epsilon - \epsilon_\theta(z_t^{1:f}, t, \tau_\theta(y)) \|_2^2 \right] L=EE(x01:f),y,ϵ1:fN(0,I),t[ϵϵθ(zt1:f,t,τθ(y))22]值得注意的是,在训练damain adapter、运动模块和 MotionLoRA 时,可训练部分之外的参数保持冻结状态。

inference

  • 模型膨胀(Inflation):个性化T2I模型首先进行膨胀,以适应视频数据的维度。这通常涉及调整模型以处理多帧视频数据而不是单张图片。
  • 注入运动模块:膨胀后的模型接着被注入运动模块,这个模块负责生成通用动画。它使得模型能够产生一系列动态帧,而不仅仅是静态图像。
  • 可选的MotionLoRA注入:用户还可以选择注入MotionLoRA,这是一个微调步骤,允许模型适应特定的运动风格或模式,从而生成具有个性化运动的动画。
  • 领域适配器的调整:领域适配器在训练阶段用于桥接预训练数据和视频训练数据之间的视觉质量差异。在推理阶段,领域适配器不是被丢弃,而是可以继续保留在模型中,并通过调整α值来控制其对最终输出的影响。这种调整允许模型在生成动画时更好地适应视频数据的特性。
  • α值的消融研究:通过实验进行消融研究,以确定α值的最佳设置。消融研究有助于理解领域适配器对动画生成质量的具体影响,以及如何平衡其贡献以避免潜在的负面影响。
  • 反向扩散和解码:最终,通过执行反向扩散过程,模型可以逐步去除注入到潜在代码中的噪声,恢复出清晰的动画帧。这一步骤是前向扩散过程的逆操作,通常涉及迭代地预测并去除噪声,直到获得满意的动画帧。

在这里插入图片描述

实验结果

实验设置(Experimental Setup): 实验在Stable Diffusion V1.5模型上实现AnimateDiff,并使用WebVid10M数据集训练运动模块。从Civitai等模型共享平台收集了一系列多样化的个性化T2I模型,用于评估。
在这里插入图片描述

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

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

相关文章

wms仓储管理系统适合做海外仓吗?解答来了

对于海外仓来说,一个高效、智能的仓储管理系统是保障业务正常运转的关键因素。那我们可以直接拿wms仓储管理系统来管理海外仓吗?wms系统和海外仓管理系统有什么区别? 今天我们就来聊一下这个问题。 首先说,wms仓储管理系统是一个…

C语言学习系列:笔记列表

1,精神建设:为什么要学C语言以及如何学习C语言 2,C语言学习系列:GCC编译器Windows版本MinGW-w64的安装教程 3,C语言学习系列:初识C语言 4,C语言入门学习系列:基本语法

Autoformer

A u t o f o r m e r Autoformer Autoformer 摘要 ​ 我们设计了 A u t o f o r m e r Autoformer Autoformer作为一种新型分解架构,带有自相关机制。我们打破了序列分解的预处理惯例,并将其革新为深度模型的基本内部模块。这种设计使 A u t o f o r m…

npm 添加 electron 安装镜像变量,提交打包速度。

前言:项目中使用 electron-builder,打包运行 npm run build:win 时, electron-builder 默认会从 github 下载 electron 依赖包,导致打包缓慢。可以通过添加 electron 下载镜像地址来解决。 npm config ls -l 查看 npm 所有配置 …

三人同行免单模式:社交电商的创新策略

三人同行免单模式是一种通过社交网络实现的购物激励机制,旨在通过消费者之间的互动和分享,促进产品销售和品牌推广。该模式的核心在于,当三位消费者共同完成购买时,其中一位消费者可以享受免单或获得特别折扣。 模式概述 1.会员权…

cordic IP核中,sin and cos的使用

参考视频:FPGA IP之CORDIC_哔哩哔哩_bilibili FPGA IP之CORDIC使用与仿真_哔哩哔哩_bilibili 一、参数说明 functional selection rotate是旋转,sin and cos是计算这两个三角函数,sinh和cosh是计算双曲正弦和双曲余弦 phase format 对于…

电商项目-day02

文章目录 分析项目结构登录请求项目搭建Result总结 分析项目结构 语法的限制打开 端口修改 修改port 前端的入口工程是main.js 登录请求 早期的登录是使用session 称为 会话 也称为域 使用jwt进行验证 模块 spzx-partent 父工程 使用pom 其他的模块都是 jar包 项目搭…

挑选考勤机的实用建议

挑选考勤机的实用建议 在当今的工作环境中,考勤机是企业管理中不可或缺的一部分。选择一款合适的考勤机对于准确记录员工出勤情况、提高管理效率以及确保企业正常运转具有重要意义。以下是一些挑选考勤机的关键建议: 一、明确需求和目标 在开始挑…

[大模型]GLM-4-9b-Chat 接入 LangChain

环境准备 在 01-ChatGLM4-9B-chat FastApi 部署调用 的 环境准备和模型下载基础上,我们还需要安装 langchain 包。如果不需要使用fastapi相关功能,则可以不安装 fastapi、uvicorn、requests。 pip install langchain0.2.1注意langchain这里使用2024年5…

计算机图形学入门08:反走样、滤波与卷积

1.抗锯齿(反走样) 在上一章中,在光栅化三角形的时候出现了明显的锯齿效果。如下图所示是三角形采样过程: 从图上可知像素点不是纯红色就是纯白色。如果在采样前先进行模糊操作(滤波),如下图所示: 经过模糊操作后三角形的边缘颜色变…

操作系统期末复习(大题)

1. 进程调度 周转时间作业完成时刻-作业到达时刻 带权周转时间周转时间/服务时间 平均周转时间各个作业周转时间之和/作业个数 操作系统:周转时间和其他时间_系统为作业提供的时间-CSDN博客 2. 进程调度 3. 调度算法 4. 临界区互斥访问问题 即证明是否满足互斥&a…

使用服务器搭建个人图床

前置条件 云服务器picGo软件,下载地址开始搭建 发布站点 该步骤不一一说明,主要说明搭建图床的步骤。 可以直接使用nginx或者宝塔面板,发布一个静态资源的文件夹。 假如我发布的文件路径是/www/img,访问地址是http://cc.cc.cc(没有域名ip地址也行) 在img下建立两个文件夹…

Facebook开户|Facebook广告快速扩量的方法

下午好家人们!今天Zoey给大家带来Facebook广告快速扩量的方法~欢迎各位家人们积极留言哦!咱们一起往下看吧~ 一、产品策略可弹性调整的情况下 拓展国家 拓展系统:平板流量AND、IOS、 放开年龄、性别等限制 峰流量期加量,能以较低的成本获取更…

使用fvm切换flutter版本

切换flutter版本 下载fvm 1、dart pub global activate fvm dart下载fvm 2、warning中获取下载本地的地址 3、添加用户变量path: 下载地址 终端查看fvm版本 fvm --version 4、指定fvm文件缓存地址 fvm config --cache-path C:\src\fvm(自定义地址&…

这三款很实用的工具,助你事半功倍!

AllDup——删除重复文件的工具 AllDup是一款用于删除电脑内重复文件的工具,避免重复占用电脑的存储空间,支持搜索整个文件夹中的重复文件或者使用对比功能,查询出不同文件夹中相同的文件。 使用排除功能,可以过滤掉某些不需要搜索…

解决找不到MSVCR120.dll,无法执行代码

msvcr120.dll是Microsoft Visual C 2013 Redistributable Package的一部分,它提供了运行使用Microsoft Visual C 2013编译器编译的程序所需的运行时环境。这个DLL文件包含了在运行使用Visual C编译器(特别是2013版)编译的应用程序时所必需的一…

5.mongodb 备份与恢复

mongodb备份工具介绍: 1.mongoexport(备份)/mongoimport(恢复) mongoexport是MongoDB提供的一个工具,用于将数据从MongoDB实例导出到JSON或CSV格式的文件中,这个工具对于数据迁移、数据备份或者在不同的数据库之间同步数据非常有用 2.mongodu…

卸载MySQL5.0,安装MySQL8.0

卸载MySQL 1、以管理员身份运行cmd,删除MySQL服务 2、卸载MySQL 3、删除残余文件 4、清楚注册表 winR -> regedit 5、删除环境变量 安装MySQL步骤 官方下载地址 https://www.mysql.com/downloads/ 以上步骤即完成MySQL数据库安装。

Springboot 整合 Flowable(二):使用 Flowable BPMN visualizer 绘制流程图

📁 Springboot 整合 Flowable(一):使用 flowable-UI 绘制流程图-CSDN博客 一、安装 IDEA 插件:Flowable BPMN visualizer 二、绘制流程图 1、创建流程文件 2、选中文件后,右键打开流程图设计界面 以一个简…

springboot微信点餐小程序-计算机毕业设计源码82910

目 录 摘要 1 绪论 1.1 项目开发背景 1.2目的和意义 1.3springboot框架介绍 2 微信点餐小程序系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 …