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

AnimateDiff论文解读

GitHub - Kosinkadink/ComfyUI-AnimateDiff-Evolved: Improved AnimateDiff for ComfyUI and Advanced Sampling Support

视频编码

  • 定义: 首先,将视频数据转换为一系列的潜变量代码(latent codes)。这是通过一个预训练的自动编码器(auto-encoder)来完成的。
  • 操作: 对于每个视频帧,自动编码器将其转换成一个低维的潜变量代码。这些潜变量代码捕捉了视频帧的主要特征,并且在高维空间中表示视频帧的内容。

噪声添加

  • 定义: 按照预定的扩散过程,在潜变量代码上添加噪声。这一过程模拟了图像退化的过程,即从清晰的图像逐渐变为噪声图像。

需要细化的部分:

  • 视频编码:这一步是正确的,但值得强调的是,使用的是基础T2I模型(如Stable Diffusion)中预训练的自动编码器,而不是单独训练的编码器。
  • 噪声添加:这里可以补充,噪声添加遵循预定义的前向扩散进度表,不同时间步的噪声强度是不同的。
  • 预测噪声:运动模块不是独立工作的,而是作为扩展后的T2I模型的一部分。整个模型(包括基础T2I部分和运动模块)共同参与噪声预测过程。
  • 固定权重:值得强调的是,在这个阶段,只有运动模块的权重是可训练的,而基础T2I模型和域适配器的权重是固定的。

运动模块 的输入和输出分别是什么?具体如何使用这个运动模块

  • 运动模块的输入:
    • 形状为 (b×h×w)×c×f 的特征图,其中: b: 批次大小 h, w: 空间维度(高度和宽度) c: 通道数 f: 帧数(时间维度)
    • 位置编码:用于表示每一帧在时间序列中的位置
  • 运动模块的输出:
    • 与输入形状相同的特征图,但经过了时间维度上的信息交换和处理
  • 运动模块的内部处理:
    • 将输入重塑为 (b×h×w)×f×c 的形状,将空间维度合并到批次维度
    • 通过自注意力机制处理时间维度上的信息
    • 输出再次重塑回原始形状
  • 如何使用运动模块: a. 模型扩展:
    • 将原始的2D T2I模型扩展为能处理3D(时间+空间)数据的模型
    • 在适当的位置插入运动模块,通常在每个分辨率级别的主要处理块之后
    b. 推理过程:
    • 输入:文本提示和初始噪声(代表多帧)
    • 逐步去噪:
      • 在每一步,特征图通过扩展的T2I模型的各层
      • 当特征图通过到达运动模块时:
        • 运动模块处理时间维度上的信息
        • 输出被传递到模型的下一层
    • 这个过程重复多次,直到生成最终的无噪声潜在表示
    • 最后通过解码器生成实际的视频帧

  • 训练过程:
    • 类似于推理,但包括反向传播来更新运动模块的权重
    • 使用视频数据集,将视频帧编码为潜在表示
    • 添加噪声,然后通过模型(包括运动模块)预测噪声
    • 计算预测噪声与实际噪声之间的损失,并用于更新运动模块

在AnimateDiff的第三阶段训练中,主要目标是使预训练的motion module能够适应新的运动模式。这一阶段被称为MotionLoRA,它是一种轻量级的微调技术,允许模型快速适应特定的运动效果,如不同的镜头类型等,而不需要大量的参考视频或长时间的训练。

第三阶段训练概述

  1. 保持第二阶段权重不变:在第三阶段,motion module的权重(即第二阶段训练得到的权重)是固定的,不会被更新。这意味着前两个阶段学到的一般运动先验知识不会丢失。

  2. 引入MotionLoRA:在motion module的基础上,通过引入LoRA层(一种低秩适配方法)来进行微调。这些LoRA层被添加到motion module的自注意力层中,使得模型能够学习到特定的新运动模式。

  3. 微调MotionLoRA层:只对这些新增的LoRA层进行训练,而不是整个motion module。这样做的好处是可以高效地学习新运动模式,同时保留原有的通用运动能力。

第三阶段的具体步骤

  1. 准备少量参考视频:收集20至50个具有特定运动模式的参考视频,例如想要实现缩放效果的视频。

  2. 数据增强:通过规则性的数据增强技术来生成更多具有所需运动模式的视频。例如,为了获得缩放效果的视频,可以通过逐步缩小(缩放)或放大(缩放)视频帧的裁剪区域来创建这种效果。

  3. 训练MotionLoRA层:在这些参考视频上训练MotionLoRA层。训练的时间通常较短,大约需要2000次迭代(大约1到2小时)。这使得用户能够在较低的成本下快速调整模型以适应特定的运动模式。

  4. 存储空间:训练好的MotionLoRA模型额外占用大约30MB的存储空间。这不仅使得模型易于分享,也降低了用户的成本负担。

结论

在第三阶段中,AnimateDiff通过MotionLoRA技术使得预训练的motion module能够高效地适应新的运动模式,同时保持了第二阶段训练得到的motion module权重固定不变。这样既保证了模型能够学习到通用的运动模式,又能够快速地针对特定需求进行调整。

相关文章:

AnimateDiff论文解读

GitHub - Kosinkadink/ComfyUI-AnimateDiff-Evolved: Improved AnimateDiff for ComfyUI and Advanced Sampling Support 视频编码 定义: 首先,将视频数据转换为一系列的潜变量代码(latent codes)。这是通过一个预训练的自动编码器(auto-encoder)来完成的。操作: …...

C/C++控制台贪吃蛇游戏的实现

🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 一、…...

Linux 升级安装 Weblogic-补丁!

版本: RedHat 6.5 Weblogic 10.3.6.0 ----------------------------------------------------------------- 1.查看当前 weblogic 补丁版本 cd /weblogic/utils/bsu/ ./bsu.sh -prod_dir/weblogic/wlserver_10.3/ -statusapplied -verbose -view 2.卸载旧补丁…...

苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测

苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测 目录 苍鹰来啦!快来看呀!NGO-BiTCN-BiGRU-Attention北方苍鹰算法优化多重双向深度学习回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实…...

关于WebSocket必知必会的知识点

什么是WebSocket WebSocket是一种网络传输协议,可以在单个TCP连接上进行全双工通信,位于OSI模型的应用层。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,服务器可以主动向客户端发送消息。在WebSocket API中,浏览器和…...

Go 1.19.4 Sort排序进阶-Day 12

1. 结构体(切片)排序 结构体返回的是切片。 之前学习了sort.Ints()和sort.Strings(),使用这两个sort库下面的方法,可以对int和strings进行排序。 那如果我要对自定义类型进行排序,怎么办,sort库没提供&…...

python-求距离(赛氪OJ)

[题目描述] 给你一个 1−>n 的排列,现在有一次机会可以交换两个数的位置,求交换后最小值和最大值之间的最大距离是多少?输入格式: 输入共两行。 第一行一个数 n 。 第二行 n 个数表示这个排列。输出格式: 输出一行一…...

《第二十一章 传感器与定位 - 传感器应用》

《第二十一章 传感器与定位 - 传感器应用》 在当今的移动应用开发中,充分利用设备的传感器能够为用户带来更加智能和便捷的体验。本章将重点探讨加速度传感器、方向传感器和光线传感器的应用。 一、传感器应用的重要性 随着智能手机和移动设备的普及,传感…...

Windows系统命令

Windows系统命令 Windows 系统中的命令行工具是指令式编程语言,可以用来执行各种任务、管理文件和目录、监控系统状态等。下面是一个 Windows 命令应用实例: 1. 文件操作 cd:用于改变当前目录。例如,cd Documents 将当前目录更…...

C语言函数递归

前言与概述 本文章将通过多个代码并赋予图示,详细讲解C语言函数递归的定义和函数递归的运算过程。 函数递归定义 程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它…...

【python数据分析11】——Pandas统计分析(分组聚合进行组内计算)

分组聚合进行组内计算 前言1、groupby方法拆分数据2、agg方法聚合数据3、apply方法聚合数据4、transform方法聚合数据5 小案例5.1 按照时间对菜品订单详情表进行拆分5.2 使用agg方法计算5.3 使用apply方法统计单日菜品销售数目 前言 依据某个或者几个字段对数据集进行分组&…...

高性能web服务器

目录 一、简介 (一)nginx-高性能的web服务端 (二)用户访问体验 二、I/O模型 (一)概念 (二)网络I/O模型 (三)阻塞型 I/O 模型 (四&#xf…...

微服务案例搭建

目录 一、案例搭建 1.数据库表 2.服务模块 二、具体代码实现如下: (1) 首先是大体框架为: (2)父模块中的pom文件配置 (3)shop_common模块,这个模块里面只需要配置pom.xml,与实体…...

SAP负库存

业务示例 在系统中,对于一些物料而言,不能立即将收到的交货输入为收货。如果要使发货无论如何都是可以过帐的,则需要允许这些物料的负库存。 负库存 发货数量大于预订数量时,过帐该发货就会出现负库存。如果由于组织原因&#…...

集团数字化转型方案(三)

集团数字化转型方案通过系统整合人工智能(AI)、大数据、云计算和物联网(IoT)技术,建立了一个全面智能化的业务管理平台,涵盖从业务流程自动化、数据驱动决策支持,到客户体验优化和供应链管理的各…...

ESP32智能设备:蓝牙音箱、AI语音助手、环境监测与调节以及智能控制,基于BLE与MQTT技术(代码详解)

本文将介绍如何实现一个功能丰富的ESP32项目,集成蓝牙音箱、AI语音助手、智能设备控制器、环境监测与调节等功能。通过本项目,您将学习到硬件设计、嵌入式编程、蓝牙技术、音频处理、人工智能与语音识别、物联网平台、数据分析及用户界面构建等技术。 一…...

web渗透测试 学习导图

web渗透学习路线 前言 一、web渗透测试是什么? Web渗透测试分为白盒测试和黑盒测试,白盒测试是指目标网站的源码等信息的情况下对其渗透,相当于代码分析审计。而黑盒测试则是在对该网站系统信息不知情的情况下渗透,以下所说的Web…...

WordPress禁止后台自定义功能

wordpress后台可以彻底禁止主题的自定义菜单功能,下面这段代码添加到functions.php文件中,后台外观菜单中的”自定义”就会消失不见了。 add_filter(map_meta_cap, function($caps, $cap){if($cap customize){return [do_not_allow];}return $caps; },…...

(六)Flink 窗口计算

窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。 目录 时间概念 窗口类型 窗口划分 窗口的生命周期 Window Assigners 窗口函数 Triggers 窗口触发器 Evictor 数据剔除器 Allowed Lateness 旁路输出 时间…...

SQL 布尔盲注 (injection 第六关)

简介 SQL注入(SQL Injection)是一种常见的网络攻击方式,通过向SQL查询中插入恶意的SQL代码,攻击者可以操控数据库,SQL注入是一种代码注入攻击,其中攻击者将恶意的SQL代码插入到应用程序的输入字段中&am…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...