当前位置: 首页 > news >正文

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

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.

相关文章:

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

1.概述 AnimateDiff 设计了3个模块来微调通用的文生图Stable Diffusion预训练模型, 以较低的消耗实现图片到动画生成。 论文名&#xff1a;AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning 三大模块&#xff1a; 视频域适应…...

SQLAlchemy示例(连接数据库插入表数据)

背景需求 连接数据库&#xff0c;插入表中一些数据。 其用户是新建用户&#xff0c;所以只能插入&#xff0c;不能更新。 再次输入数据则使用更新数据语法&#xff0c;这个没调试。 #! /usr/bin/env python # -*- coding: utf-8 -*-from sqlalchemy import create_engine, …...

Springboot3国际化

国际化实现步骤 Spring Boot 3 提供了强大的国际化支持&#xff0c;使得应用程序可以根据用户的语言和区域偏好适配不同的语言和地区需求。 添加国际化资源文件&#xff1a; 国际化资源文件通常放在 src/main/resources 目录下&#xff0c;并按照不同的语言和地区命名&#xf…...

阿尔萨斯(JVisualVM)JVM监控工具

文章目录 前言阿尔萨斯(JVisualVM)JVM监控工具1. 阿尔萨斯的功能2. JVisualVM启动3. 使用 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff…...

框架专题:反射

1. 什么是反射&#xff1f; 简单来说&#xff0c;反射是一种程序自省的能力&#xff0c;即在程序运行时动态地获取其结构信息或操作其行为。这包括类、方法、属性等元信息。反射的核心在于让代码变得更加动态化&#xff0c;从而突破静态语言的限制。 以Java为例&#xff0c;反…...

【Go】context标准库

文章目录 1. 概述1.1 什么是 Context1.2 设计原理1.3 使用场景源码分析核心:Context接口4个实现6个方法TODO 和 BackgroundWithCancelcancelpropagateCancel 绑定父对象WithTimeout 和 WithDeadlineWithValue总结参考1. 概述 基于版本: go1.22.3/src/context/context.go 1.1…...

LLMs之o3:《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读

LLMs之o3&#xff1a;《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读 导读&#xff1a;2024年12月&#xff0c;这篇论文提出了一种名为“审慎式对齐 (Deliberative Alignment)”的新方法&#xff0c;旨在提高大型语言模型 (LLM) 的安全性。论…...

git设置项目远程仓库指向github的一个仓库

要将你的Git项目设置为指向GitHub上的远程仓库&#xff0c;你需要执行以下步骤&#xff1a; 创建GitHub仓库&#xff1a; 登录到你的GitHub账户。点击右上角的 “” 号&#xff0c;选择 “New repository” 创建一个新的仓库。填写仓库的名称&#xff0c;可以添加描述&#xff…...

实战演练JDK的模块化机制

实战演练JDK的模块化机制--楼兰 带你聊最纯粹的Java ​ 你发任你发,我用Java8。你用的JDK到什么版本了?很多开源框架都已经开始陆续升级JDK版本了。你对于JDK8往后陆陆续续更新的这些版本有什么感觉吗? ​ 很多人会说其实并没有太多的感觉。JDK的新版本不断推出一些不痛不痒…...

jdk17+springboot3项目加密部署

最近项目需要在第三方服务器部署&#xff0c;由于没有交付源码。所以需要将项目加密后再部署。 网上找了一圈&#xff0c;发现xjar这个开源项目&#xff0c;可以将代码加密后进行部署。看了下正是我需要的。 于是按照文档打包加密&#xff0c;但启动的时候居然报错。 这个结…...

rm -rf 删除/下bin lib lib64 sbin软链接系统恢复

背景 不小心删除了/bin、/lib、/lib64和/sbin这些目录的软链接&#xff0c;导致系统中的各种命令都无法正常使用。在尝试多种方法后&#xff0c;包括添加环境变量和使用绝对路径执行命令无法恢复&#xff0c;最终不重装完美解决。 [rootcentos-8 /]# ll 总用量 36 drwxr-xr-x …...

并发与竞争

并发与竞争 并发与竞争的产生 Linux是一个多任务操作系统&#xff0c;肯定会存在多个任务共同操作同一段内存或者设备的情况&#xff0c;多个任务甚至中断都能访问的资源叫做共享资源&#xff0c;就和共享单车一样。在驱动开发中要注意对共享资源的保护&#xff0c;也就是要处…...

Java后端开发 ”Bug“ 分享——订单与优惠卷

“优惠券风波”&#xff1a;一段代码引发的线上事故 起因&#xff1a;优惠券功能上线 故事的开始源于公司新上线的一项促销活动——在用户未使用优惠券时&#xff0c;系统会自动赠送一张优惠券。这个功能不仅能提升用户体验&#xff0c;还能拉动平台的销售额。为了赶上活动上…...

Linux系统之tee命令的基本使用

Linux系统之tee命令的基本使用 一、tee命令介绍二、tee命令的使用帮助2.1 tee命令的help帮助2.2 tee命令帮助解释 三、tee命令的基本使用3.1 写入文件3.2 追加文件3.3 结合sudo命令3.4 结合EOF使用 四、注意事项 一、tee命令介绍 tee 是 Linux 和 Unix 系统中的一个命令&#x…...

idea 8年使用整理

文章目录 前言idea 8年使用整理1. 覆盖application配置2. 启动的时候设置编辑空间大小&#xff0c;并忽略最大空间3. 查询类的关系4. 查看这个方法的引用关系5. 查看方法的调用关系5.1. 查看被调用关系5.2. 查看调用关系 6. 方法分隔线7. 选择快捷键类型8. 代码预览插件9. JReb…...

多个微服务 Mybatis 过程中出现了Invalid bound statement (not found)的特殊问题

针对多个微服务的场景&#xff0c;记录一下这个特殊问题&#xff1a; 如果启动类上用了这个MapperScan注解 在resource 目录下必须建相同的 com.demo.biz.mapper 目录结构&#xff0c;否则会加载不到XML资源文件 。 并且切记是com/demo/biz 这样的格式创建&#xff0c;不要使用…...

k8s,service如何找到容器

Kubernetes之所以需要Service&#xff0c;一方面是因为Pod的IP不是固定的&#xff0c;另一方面则是因为一组Pod实例之间总会有负载均衡的需求 被selector选中的Pod&#xff0c;就称为Service的Endpoints&#xff0c;查看方式&#xff1a; kubectl get endpoints hostnames需要…...

观察者模式和发布-订阅模式有什么异同?它们在哪些情况下会被使用?

大家好&#xff0c;我是锋哥。今天分享关于【观察者模式和发布-订阅模式有什么异同&#xff1f;它们在哪些情况下会被使用&#xff1f;】面试题。希望对大家有帮助&#xff1b; 观察者模式和发布-订阅模式有什么异同&#xff1f;它们在哪些情况下会被使用&#xff1f; 1000道 …...

docker compose deploy fate cluster

官方文档 写的不清晰 KubeFATE&#xff0c;用于生成部署脚本&#xff0c;链接 部署机就是下载了 KubeFATE的主机&#xff1b;运行机就是要安装fate容器的主机&#xff08;部署机和运行机可以相同&#xff09; 两个主机&#xff1a;并非必须 centos7&#xff0c;Ubuntu也行Doc…...

字节跳动Java开发面试题及参考答案(数据结构算法-手撕面试题)

怎么判断两个链表是否相交?怎么优化? 判断两个链表是否相交可以采用多种方法。 一种方法是使用双指针。首先分别遍历两个链表,得到两个链表的长度。然后让长链表的指针先走两个链表长度差的步数。之后,同时移动两个链表的指针,每次比较两个指针是否指向相同的节点。如果指…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...

路由基础-路由表

本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中&#xff0c;往往存在多个不同的IP网段&#xff0c;数据在不同的IP网段之间交互是需要借助三层设备的&#xff0c;这些设备具备路由能力&#xff0c;能够实现数据的跨网段转发。 路由是数据通信网络中最基…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...

宠物车载安全座椅市场报告:解读行业趋势与投资前景

一、什么是宠物车载安全座椅&#xff1f; 宠物车载安全座椅是一种专为宠物设计的车内固定装置&#xff0c;旨在保障宠物在乘车过程中的安全性与舒适性。它通常由高强度材料制成&#xff0c;具备良好的缓冲性能&#xff0c;并可通过安全带或ISOFIX接口固定于车内。 近年来&…...