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

news2024/12/27 7:53:52

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.coloradmin.cn/o/2266263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度地图绘制行政区域及设置中心点

// 画行政区 const drwaDistrict (disList, clear true) > {clear && clearOverlays();if (!bMapGL.value) return;let bd new bMapGL.value.Boundary();disList.map((item) > {bd.get(item, function (rs1) {// rs1 是行政区对应的点集合 此处非每次必反信息…

jetson Orin nx + yolov8 TensorRT 加速量化 环境配置

参考【Jetson】Jetson Orin NX纯系统配置环境-CSDN博客 一 系统环境配置&#xff1a; 1.更换源&#xff1a; sudo vi /etc/apt/sources.list.d/nvidia-l4t-apt-source.list2.更新源&#xff1a; sudo apt upgradesudo apt updatesudo apt dist-upgrade sudo apt-get updat…

VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试

VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试 一、打开设备管理器看主机&#xff08;Window系统&#xff09;是否识别出串口&#xff0c;我这边显示的串行通信端口是COM3 二、打开VirtualBox&#xff0c;设置串口和USB设备 串口设置&#xff1a; 启用…

Python 自动化 打开网站 填表登陆 例子

图样 简价&#xff1a; 简要说明这个程序的功能&#xff1a; 1. **基本功能**&#xff1a; - 自动打开网站 - 自动填写登录信息&#xff08;号、公司名称、密码&#xff09; - 显示半透明状态窗口实时提示操作进度 2. **操作流程**&#xff1a; - 打开网站后自动…

本原多项式

将 G F ( p ) GF(p) GF(p)延伸为有 p m p^m pm个元素的域&#xff0c;称之为 G F ( p ) GF(p) GF(p)的扩域&#xff0c;表示为 G F ( p m ) GF(p^m) GF(pm). G F ( p ) GF(p) GF(p)是 G F ( p m ) GF(p^m) GF(pm)的子集。 G F ( p m ) GF(p^m) GF(pm)元素个数为 p m p^m pm。 …

【物联网技术与应用】实验15:电位器传感器实验

实验15 电位器传感器实验 【实验介绍】 电位器可以帮助控制Arduino板上的LED闪烁的时间间隔。 【实验组件】 ● Arduino Uno主板* 1 ● 电位器模块* 1 ● USB电缆*1 ● 面包板* 1 ● 9V方型电池* 1 ● 跳线若干 【实验原理】 模拟电位器是模拟电子元件&#xff0c;模…

能省一点是一点 - 享元模式(Flyweight Pattern)

享元模式&#xff08;Flyweight Pattern&#xff09; 享元模式&#xff08;Flyweight Pattern&#xff09;享元模式&#xff08;Flyweight Pattern&#xff09;概述享元模式包含的角色&#xff1a;享元模式应用场景 talk is cheap&#xff0c; show you my code总结 享元模式&a…

学习C++:变量

变量&#xff1a; 作用&#xff1a;给一段指定的内存空间起名&#xff0c;方便操作这段内容 &#xff08;变量存在的意义&#xff1a;方便我们管理内存空间&#xff09; 语法&#xff1a;数据类型 变量名 初始值&#xff1b; 实例&#xff1a;

蓝桥杯物联网开发板硬件组成

第一节 开发板简介 物联网设计与开发竞赛实训平台由蓝桥杯大赛技术支持单位北京四梯科技有限公司设计和生产&#xff0c;该产品可用于参加蓝桥杯物联网设计与开发赛道的竞赛实训或院校相关课程的 实践教学环节。 开发板基于STM32WLE5无线微控制器设计&#xff0c;芯片提供了25…

Day35汉明距离

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y&#xff0c;计算并返回它们之间的汉明距离。 class Solution {public int hammingDistance(int x, int y) {int cnt 0;while (Math.max(x, y) ! 0) {if ((x & 1) ! (y &…

matplotlib pyton 如何画柱状图,利用kimi,直接把图拉倒上面,让他生成

要绘制类似于您提供的图像的柱状图&#xff0c;您可以使用Python中的Matplotlib库&#xff0c;这是一个非常流行的绘图库。以下是一个简单的示例代码&#xff0c;展示如何使用Matplotlib来创建一个类似的柱状图&#xff1a; python import matplotlib.pyplot as plt import nu…

计算机网络——期末复习(3)4-6章考试重点

第四章 根据IPv4第1个十进制数值判断&#xff0c;127以下为A类&#xff0c;128~191为B类&#xff0c;192~223为C类不能分配给主机或路由器接口的&#xff1a;A类网络号0和127&#xff0c;主机号全为0或全为1私有地址&#xff08;Private IP Address&#xff09;是指一类专门保…

【安全编码】Web平台如何设计防止重放攻击

我们先来做一道关于防重放的题&#xff0c;答案在文末 防止重放攻击最有效的方法是&#xff08; &#xff09;。 A.对用户密码进行加密存储使用 B.使用一次一密的加密方式 C.强制用户经常修改用户密码 D.强制用户设置复杂度高的密码 如果这道题目自己拿不准&#xff0c;或者…

【WebAR-图像跟踪】在Unity中基于Imagine WebAR实现AR图像识别

写在前面的话 感慨一下&#xff0c; WebXR的发展是真的快&#xff0c;20年的时候&#xff0c;大多都在用AR.js做WebAR。随着WebXR标准发展&#xff0c;现在诸如Threejs、AFrame、Unity等多个平台都支持里WebXR。 本文将介绍在Unity中使用 Image Tracker实现Web端的AR图像识别功…

HTML5实现好看的圣诞节网站源码

HTML5实现好看的圣诞节网站源码 前言一、设计来源1.1 主界面1.2 圣诞节由来界面1.3 圣诞活动界面1.4 圣诞活动门票界面1.5 团队介绍界面1.6 圣诞照片墙界面1.7 圣诞留言界面1.8 圣诞趣事界面1.9 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好…

go下载依赖提示连接失败

1、现象 Go下载模块提示连接失败 dial tcp 142.251.42.241:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.…

分布式事务入门 一

分布式事务入门 一 您好&#xff0c;我是今夜写代码,今天学习下分布式事务相关理论&#xff0c;以及常见的解决方案&#xff0c;为后续掌握Seata分布式事务框奠定基础。 为什么需要分布式事务? 分布式事务主要由于存储资源的分布性&#xff0c;通常涉及多个数据库。 分布式…

VSCode设置Playwright教程

1.安装扩展 打开VS Code&#xff0c;在扩展—>搜索"Playwright Test for VSCode"&#xff0c;点击安装 按快捷键CommandShiftP&#xff0c;输入install playwright&#xff0c;点击安装Playwright 安装成功会有如下提示 2.调试脚本 打开tests/example.spec.ts文…

在一个C工程文件中,如果一个函数要引用另一个文件中的函数,并不是用extern进行声明,而是在包含的头文件中进行声明

在C语言的某个工程中&#xff0c;一个不是主函数的函数如果引用另一个文件中的某个函数&#xff0c;是不是要先用extern引入&#xff1f;比如下面的代码&#xff1a; void DisplayInit(void) {extern void FramebufferInit(void);FramebufferInit(); }在C语言中&#xff0c;不…

Qt天气预报系统设计_更改窗口名称和图标

Qt 天气预报系统 1、更改窗口名称2、更改窗口图标2.1先把资源加入项目2.2选择资源文件更改窗口图标 1、更改窗口名称 更改MainWindow下的windowTitle即可 2、更改窗口图标 2.1先把资源加入项目 右键项目文件夹&#xff0c;选择 Add New... 选择Qt&#xff0c;接着选择 Qt …