论文研读:AnimateDiff—通过微调SD,用图片生成动画

ops/2024/12/27 7:54:09/

1.概述

AnimateDiff 设计了3个模块来微调通用的文生图Stable Diffusion预训练模型, 以较低的消耗实现图片到动画生成。

  • 论文名:AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning

  • 三大模块:

    1. 视频域适应模块(Domain-Adapter):即让SD时应生成视频相关的内容

    2. 动作学习模块(Motion-Module): 让SD从文生图的特征中,再学习序列特征

    3. 动作微调模块(Motion-LoRA): 让SD学习特定的视频动作(如zoom-in, zoom-out)

在这里插入图片描述

2.具体实现

2.1 Domain-Adapter

这里是对u-net的LoRA微调。

  • 模块结构:LoRA低秩矩阵,作为可学习参数加在u-net的self-attention 与 cross-attention中

注意:SD的u-net中,cross-attention用于文-图跨模态特征融合(每个block都有)。self-attention用于捕获图像的全局特征(无需每个block都用,可以间隔添加)

  • 微调数据:同一目标的随机视频帧(Frame)

原文摘录:

We implement the domain
adapter layers with LoRA (Hu et al., 2021) and insert them into the self-/cross-attention layers in
the base T2I, as shown in Fig. 3.We then optimize only the parameters of the domain adapter on
static frames randomly sampled from video datasets with the same objective in Eq. (2).

2.2 Motion Module

  • 模块结构:

    sinusoidal position embedding + self-attention blocks, 添加在U-net的每个blocks中

  • 维度处理:

    图像的维度是: [batch_size, channel, height, width],

    而视频会多一个<时间维度>即视频帧数: [batch_size, frames, channel, height, width]

    • sd:由于sd本身是处理图片,没有<时间维度>,即frames,这里将frams这个维度整合到batch_size这个维度,以便sd按照图像的方式处理frames

    • motion module: 这个新增部分只需要学习时间维度的特征。因此,它将空间维度 h,w合并到batch_size,即以特征shape为[batch_size, frames, channel]作为该模块的输入,输出时再将其h,w从batch_size还原。

  • 初始化&残差

    • 为了提升训练效果,这里用了control-net的0值初始化(在transformer的最后输出层—projection layers)

    • motion module用了残差连接

原文摘录:

the temporal Transformer
consists of several self-attention blocks along the temporal axis, with sinusoidal position encoding
to encode the location of each frame in the animation. As mentioned above, the input of the motion
module is the reshaped feature map whose spatial dimensions are merged into the batch axis.Note that sinusoidal position encoding added before the self-attention
is essential; otherwise, the module is not aware of the frame order in the animation. To avoid any
harmful effects that the additional module might introduce, we zero initialize (Zhang et al., 2023)
the output projection layers of the temporal Transformer and add a residual connection so that the
motion module is an identity mapping at the beginning of training.

2.3 MotionLoRA

在Motion Module的self-attention上增加LoRA低秩可学习矩阵,再用特定的帧学习一个动作(如zoom-in,zoom-out)

该步骤需要20-50个动作帧,2000次训练迭代(约1-2小时), 30Mb的低秩。

原文摘录:

we add LoRA layers to the self-attention
layers of the motion module in the inflated model described in Sec. 4.2, then train these LoRA layers
on the reference videos of new motion patterns., to get videos with zooming effects, we augment the videos by gradually reducing
(zoom-in) or enlarging (zoom-out) the cropping area of video frames along the temporal axis. We
demonstrate that our MotionLoRA can achieve promising results even with as few as 20 ∼ 50 ref
erence videos, 2,000 training iterations (around 1 ∼ 2 hours) as well as about 30M storage space,
enabling efficient model tuning and sharing among users.

3.实验与推理

3.1 概述

  • 训练的损失函数都是根据vedio的样本进行mse,

  • 这里核心是第二部分,即运动模块,基于sd1.5和WebVid-dataset,这个开销还是非常大的。

  • 消费卡只能玩模块3,即运动模块的lora微调。

3.2 消融

  • 运动模块

这里比较了运动模块的两种可行layer,temporal Transformer 和 1D Temporal Convolution:

实验表明Transformer能构建时序关系,即捕获全局时间依赖关系,更适合视频生成任务。而
1D Temporal Convolution生成的frames几乎一样,即没有视频效果。
  • 运动模块LoRA

这个部分为个人用户提供价值,在有限的视频(50个)和低训练成本下,实现特定动作生成。

3.3 实验总结

  • 可控性:可结合 ControlNet,可以使用条件(如深度图)对生成结果进行精准控制。

  • 独立性:无需依赖复杂的反推过程(如 DDIM inversion),直接从噪声生成,简化了生成流程。

  • 质量和细节:生成结果在动态细节和视觉表现上都非常出色,能够细腻地还原运动特征(例如头发的动态、面部表情的变化等)。

4. 相关工作

  • Tune-a-Video

  • Text2Video-Zero

Ref:

  • https://github.com/guoyww/AnimateDiff.

http://www.ppmy.cn/ops/145322.html

相关文章

vue前端项目中实现电子签名功能(附完整源码)

文章目录 一、具体思路二、所需依赖三、添加签名面板2.1 canvas 转base642.2 电子签名等比例缩小 四、html转cavas&#xff08;原始文档&#xff09;五、合成图片六、效果测试七、完整源码 一、具体思路 在vue项目中使用以下步骤思路去实现&#xff1a; 起初的原始文档的格式都…

Scala课堂小结

(一)数组&#xff1a; 1.不可变数组 2.创建数组

路由器转发数据报的封装过程

✍作者&#xff1a;柒烨带你飞 &#x1f4aa;格言&#xff1a;生活的情况越艰难&#xff0c;我越感到自己更坚强&#xff1b;我这个人走得很慢&#xff0c;但我从不后退。 &#x1f4dc;系列专栏&#xff1a;网路安全入门系列 目录 路由器转发数据的封装过程 路由器转发数据的封…

游戏引擎学习第61天

回顾并计划接下来的事情 我们现在的目标是通过创建一个占位符版本的游戏来展示我们所做的工作。这个版本的游戏包含了许多基本要素&#xff0c;目的是快速构建一些东西&#xff0c;进行测试&#xff0c;并观察代码结构的形成。这些代码的实施是为了理解系统如何工作&#xff0…

朗速ERP FileUploadApi.ashx 文件上传致RCE漏洞复现

0x01 产品简介 郎速ERP是一款功能强大的企业资源计划(ERP)软件,专为中小企业量身打造,旨在帮助企业优化管理流程、提升运营效率。不仅适用于制造业,还广泛适用于零售、物流、服务等多个行业。例如,在制造业中,通过生产计划、物料需求计划等功能,提升生产效率和降低生产…

网络安全研究中的网络攻击

网络安全研究中的网络攻击 在网络安全研究中,多种网络攻击场景可用于测试系统的安全性,以下是一些常见的网络攻击场景、模拟方法、相关软件及其使用示例: 分布式拒绝服务(DDoS)攻击 模拟方法:利用工具向目标系统发送大量的请求流量,耗尽其网络带宽、系统资源(如 CPU、…

20_HTML5 SSE --[HTML5 API 学习之旅]

HTML5 Server-Sent Events (SSE) 是一种技术&#xff0c;它允许服务器向浏览器推送更新。与传统的轮询不同&#xff0c;SSE提供了真正的单向实时通信通道&#xff1a;服务器可以主动发送数据到客户端&#xff0c;而不需要客户端发起请求。这对于实现实时更新的应用非常有用&…

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(2)

DevOps实战&#xff1a;用Kubernetes和Argo打造自动化CI/CD流程&#xff08;2&#xff09; 背景 架构图 正片开始之前&#xff0c;请一定先熟悉上面的架构图&#xff0c;跟着我的步骤&#xff0c;一步一步执行成功&#xff0c;相信后续根据自己特定的需求定制CI/CD。 需求 …