【论文阅读+复现】SparseCtrl: Adding Sparse Controls to Text-to-Video Diffusion Models

SparseCtrl:在文本到视频扩散模型中添加稀疏控制。

(AnimateDiff V3,官方版AnimateDiff+ControlNet,效果很丝滑)

code:GitHub - guoyww/AnimateDiff: Official implementation of AnimateDiff.

paper:https://arxiv.org/abs/2311.16933

目录

文章

1 介绍

2 背景

3 方法

4 实验

5 结论

复现

1 问题

2 结果


文章

1 介绍

动机:不断调整文字prompt以达到理想效果非常耗时费力,作者希望通过添加额外输入条件(草图、深度和RGB图像)来控制T2V生成。

方法:提出SparseCtrl,通过带有附加编码器的临时稀疏条件映射,来控制T2V生成。具体地说,为了控制合成,应用ControlNet的理念,实现了一个辅助编码器,同时保留原始生成器的完整性。可以在预训练的T2V模型上训练编码器网络,来加入额外的条件,而不用对整个模型再训练。


图1。SparseCtrl,一个基于预训练文本到视频(T2V)扩散模型的附加编码器网络,以接受特定关键帧(例如草图/深度/RGB图像)的额外时间稀疏条件。通过与各种模态编码器的集成,SparseCtrl使预训练的T2V能够用于各种应用,包括故事板,草图到视频,图像动画,长视频生成等。结合AnimateDiff和增强的个性化图像主干,SparseCtrl也可以获得可控的高质量生成结果,如2/3/4-th行所示。

2 背景

目前的文本条件视频生成技术缺乏对合成结果的细粒度可控性。我们的工作旨在通过附加编码器增强对T2V模型的控制。

可控文本到视频的生成。鉴于文本提示通常会导致对视频运动、内容和空间结构的模糊引导,这种可控性成为T2V生成的关键因素。我们的目标是通过输入少量条件图,来控制时间稀疏条件下的视频生成,使T2V在更广泛的场景中更加实用。

用于附加控制的附加网络。训练基础T2I/T2V生成模型需要大量的计算量。因此,在这些模型中加入额外控制的首选方法是:在保持原始主干完整性的同时,训练一个额外的条件编码器。

ControlNet创建一个可训练的预训练层的副本,以适应条件输入。然后,编码器输出通过零初始化层重新集成到T2I模型中。twi - adapter利用轻量级结构注入控制。IP-Adapter通过将参考图像转换为补充嵌入来整合样式条件,随后将其与文本嵌入连接起来。我们的方法与这些工作的原理一致,旨在通过辅助编码器模块实现稀疏控制。

3 方法

为了增强预训练文本到视频(T2V)模型对于时间稀疏信号的可控性,引入了附加的稀疏编码器来控制视频生成过程,保持原始的T2V生成器不变。

3.1 T2V扩散模型的背景

最近的T2V模型在二维图像层之间引入时间层来扩展预训练的T2I生成器以生成视频,如图2(a)的下部所示。可以跨帧信息交换,有效地建模跨帧运动和时间一致性。

训练目标:预测添加到干净的RGB视频(或潜在特征)上的噪声尺度:

ct是文本描述的嵌入向量,ϵ是与z 1:N 0 形状相同的采样高斯噪声,αt和σt是控制添加噪声强度的参数,t是均匀采样的扩散步骤,T是总步数。

图2。(a) pipeline。(b) vanilla ControlNet(左)和稀疏条件编码器(右)的比较,“零”代表零初始化层;[·;·]表示通道级联。 

3.2 稀疏条件编码器的设计

引入了一种能够接受稀疏条件图作为输入的附加编码器,称为稀疏条件编码器。T2I中,ControlNet 通过部分复制预训练的图像生成器模型及其输入,并添加条件后通过零初始化的层将输出重新整合到原始模型中,将结构控制添加到预训练的图像生成器中,如图2(b)左。我们设计类似的方法来实现T2V中的稀疏控制。

帧级编码器的受控性有限。首先尝试了一种简单直接的方案:训练一个类似ControlNet的帧级编码器,融入稀疏条件信号,沿时间维度复制。通过这个辅助结构,将条件加到关键帧上。对于没有直接被条件控制的帧,向编码器输入一个零图像,并通过额外的掩码通道,指示未被条件控制的状态。结果:实验显示这种帧级条件无法保持时间一致性,只有关键帧对条件做出反应,导致受条件控制和未受条件控制的帧之间,出现突然的内容变化。

跨帧条件传播。假设上述问题是由于T2V主干难以推断未受条件控制帧的中间条件状态引起的。因此,在稀疏条件编码器中添加时间层(例如带有位置编码的时间注意力),允许条件信号从帧到帧传播。结果:实验证实,这种设计提高了生成结果的鲁棒性和一致性。

人工噪声引起的质量下降。有时间层的稀疏条件编码器可以解决输入的稀疏性,但有时会导致生成的视频的质量下降。因为作者检查发现,本文不适合直接应用ControlNet,因为会复制带有噪声样本输入。如图2(b),原始ControlNet不仅复制了UNet编码器,还复制了带有噪声的样本输入zt。即,ControlNet编码器的输入是条件+带噪声样本的和。这种设计在原始情景中稳定了训练,并加速了模型的收敛。然而本文中,对于未受条件控制的帧来说,稀疏编码器的输入就只有带噪声的样本(因为没有条件嘛)。导致稀疏编码器忽视条件,并在训练过程中依赖于带噪声的样本zt,减弱了可控性。因此,如图2(b),稀疏编码器消除了带有噪声的样本输入,只接受拼接后的条件图[cs,m]。这种简单而有效的方法消除了实验中观察到的质量下降现象。

通过掩码统一稀疏性。为了能统一处理不同的稀疏性情况,用零图像作为未受条件控制的帧的输入占位符,并将二进制掩码序列与输入条件进行连接,这是视频重构和预测中常见的做法。如图2(a)所示,在每个帧的条件信号cs之外,我们以通道方式连接一个二值掩码m ∈ {0, 1} h×w,形成稀疏编码器的输入。m = 0时,表示当前帧未受条件控制。通过这种方式,可以用统一的输入格式表示不同的稀疏输入情况。

3.3 支持的模态和应用

本文中使用了三种模态实现SparseCtrl:草图、深度图和RGB图像。

草图到视频生成。可以提供任意数量的草图来塑造视频内容。例如,单个草图可以确定视频的整体布局,而第一帧、最后一帧和中间帧的草图可以定义粗略动作,该方法在故事板设计中非常有用。

深度引导生成。可以通过直接从引擎或3D表示中导出稀疏深度图来渲染视频,或者使用深度作为中间表示,进行视频转换。

图像动画和过渡。视频预测和插值。图像动画对应于以第一帧为条件的视频生成;过渡以第一帧和最后一帧为条件;视频预测以少量起始帧为条件;插值以均匀稀疏的关键帧为条件。

4 实验

4.1. 实现细节

文本到视频生成器。我们在AnimateDiff上实现了SparseCtrl,与预训练图像主干Stable Diffusion V1.5集成时,可以作为一个通用的T2V生成器,或者当与个性化图像主干如RealisticVision和ToonYou结合时,可以作为个性化的生成器。

图3。素描/深度/RGB图像稀疏条件编码器的定性结果。4/6行视频由个性化主干RealisticVision生成。条件关键帧用蓝色边框表示。 

图4。网络设计的消融研究。左:预训练T2V野图动画结果。右:个性化t2i主干ToonYou的域内图像动画结果,其中输入图像由相应的图像模型生成。条件关键帧用蓝色边框表示。

三种情况下,生成的视频中的第一帧是对输入图像控制的保真度。在个性化生成设置下,帧编码器无法将控制传播到无条件帧(第一行,右),从而导致角色细节(例如头发和衣服颜色)随时间变化的时间不一致。在预训练T2V上,如第3.2节所述,具有传播层的编码器质量下降(第二行,左),假设这是因为输入到编码器的带噪样本为条件任务提供了误导性信息。最后,通过传播层和消除噪声样本输入,完整模型在两种设置(第三行)下,保持了对条件的保真度和时间一致性。

 

sketch-to-video设置中,构建三种类型的提示:(1)没有有用信息的不足提示(第4行),例如“优秀的视频,最好的质量,杰作”;(2)部分描述所需内容的不完整提示(第5行),例如,“大海,阳光,……”,忽略了中心物体“帆船”;(3)描述每个内容的完成提示(第六行)。如图5所示,在sketch条件下,需要完成提示才能正确生成内容,说明在提供的条件高度抽象,不足以推断内容的情况下,文本输入仍然发挥着重要作用。

 图5。不相关条件与文本提示反应的消融研究。第一行演示了模型如何处理不相关的条件,下面的五行显示了模型如何对不同的文本提示作出反应。条件关键帧用蓝色边框表示。

5 结论

SparseCtrl,一种通过附加编码器网络,向预训练的文本到视频生成器添加时间稀疏控制的方法。可以适应深度、草图和RGB图等各种模态,极大增强了视频生成的控制力。这种灵活性在草图到视频、图像动画、关键帧插值等各种应用中都非常有价值。

限制:生成结果的质量、语义组合能力和领域受预训练的T2V主干和训练数据的限制。实验中,失败案例主要来自于域外输入,例如动漫图像动画,因为这样的数据在T2V和稀疏编码器的预训练数据集WebVid10M中很少(其内容主要是真实世界的视频)。提高泛化能力的可能解决方案包括改善训练数据集的领域多样性,并利用一些特定领域的主干,例如将SparseCtrl与AnimateDiff集成。

复现

1 问题

问题1:TypeError: EulerDiscreteScheduler.__init__() got an unexpected keyword argument 'steps_offset'

解决:目前解决不掉

问题2:torch.cuda.OutOfMemoryError

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.25 GiB (GPU 0; 11.91 GiB total capacity; 8.99 GiB already allocated; 1.23 GiB free; 9.96 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

解决:调小参数

(为什么配置参数写在animate.py里,不写在yaml里,找了半天T T

问题3:AttributeError: 'Row' object has no attribute 'style'

这题我会,注释掉就行了

参考:chatglm2-b部署报错问题‘Textbox‘ object has no attribute ‘style‘_attributeerror: 'textbox' object has no attribute -CSDN博客

原因:默认安装的第三方库gradio最新版本,降低版本即可,pip install gradio==3.50.0,解决

2 结果

运行:

1.T2V常规设置

# under general T2V setting
python -m scripts.animate --config configs/prompts/v3/v3-1-T2V.yaml

2.图像动画

# image animation (on RealisticVision)
python -m scripts.animate --config configs/prompts/v3/v3-2-animation-RealisticVision.yaml

输入:

结果:

3.草图到动画和故事板

# sketch-to-animation and storyboarding (on RealisticVision)
python -m scripts.animate --config configs/prompts/v3/v3-3-sketch-RealisticVision.yaml

我这里生成完1-sketch-to-video,再进行2-storyboarding时会爆显存,所以分开单独进行了,每次只保留一个任务在yaml里就可以,暂时注释掉另一个。我用的权重是lyriel_v16.safetensors,大小16x256x256或12x384x384,更大了不行

条件(草图):

结果:(图1:16x256x256;图2:12x384x384,感觉影响生成质量的主要是大小,height x width,图片越大,生成得越精细好看)

条件(故事版):

结果:

 自己生成的效果居然快赶上官方展示图了,真给力~(´▽`)

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

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

相关文章

javaWeb蛋糕商城(前后台) 2

目录 摘要 1 关键词 1 前言 2 第一章 绪论 3 1.1 选题背景 3 1.2 选题的目的和意义 3 第二章 关键技术介绍 4 2.1 JSP 4 2.2 JDBC 5 2.3 Servlet 5 2.4 MVC模式 5 2.5 Ajax 5 第三章 系统分析及设计 5 3.1 需求分析 5 3.1.1 任务概述 5 3.1.2 功能需求 6 3.1.3 其它需求 6 3.2…

射频PCB电路布局设计及布线注意事项

在电子产品和设备中,电路板是一个不可缺少的部件,它起着电路系统的电气和机械等的连接作用。如何将电路中的元器件按照一定的要求,在PCB上排列组合起来,是PCB设计师的主要任务之一。布局设计不是简单的将元器件在PCB上排列起来&am…

探究element-ui 2.15.8中<el-input>的keydown事件无效问题

一、问题描述 今天看到一个问题&#xff0c;在用Vue2element-ui 2.15.8开发时&#xff0c;使用input组件绑定keydown事件没有任何效果。 <template><div id"app"><el-input v-model"content" placeholder"请输入" keydown&quo…

【中小型企业网络实战案例 四】配置OSPF动态路由协议

【中小型企业网络实战案例 三】配置DHCP动态分配地址-CSDN博客 【中小型企业网络实战案例 二】配置网络互连互通-CSDN博客 【中小型企业网络实战案例 一】规划、需求和基本配置_大小企业网络配置实例-CSDN博客 配置OSPF 由于内网互联使用的是静态路由&#xff0c;在链路出…

如何快速下载huggingface模型

Huggingface国内开源镜像 https://hf-mirror.com/ 上面总结了多种从Huggingface上下载模型的方法&#xff0c;如下图。 方法一&#xff1a;使用huggingface官网提供的huggingface-cli工具 官方详解地址https://huggingface.co/docs/huggingface_hub/guides/download 1. 安装…

Arduino中手写脉冲控制步进电机-2

目录 1、前言 2、时间-位移关系计算 3、Matlab计算时间和位置数据 (1)Matlab程序 &#xff08;2&#xff09;Arduino程序 4、Matlab生成Arduino电机正反转程序语句 &#xff08;1&#xff09;Arduino程序 &#xff08;2&#xff09;Matlab 命令行方式生成Arduino步进电…

【Unity自制手册】基于Unity中物体移动相关方法和API集锦(动图详解)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

IPEmotion数据采集软件功能介绍

IPEmotion作为IPETRONIK的软件产品&#xff0c;主要应用于车辆测试和不同的实验室测试系统&#xff0c;能够满足各种测量需求。通过专业化的数据采集软件IPEmotion&#xff0c;我们可实现完整的数据采集过程&#xff0c;包括&#xff1a;配置数据采集设备&#xff1b;使用不同的…

SD-WAN企业组网的核心要点

随着企业网络需求的不断演进和全球化业务的扩张&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;作为一种先进的网络架构技术&#xff0c;逐渐成为企业组网的首选方案。SD-WAN通过提供更灵活、高效和安全的网络连接&#xff0c;帮助企业轻松应对不同地区和业务需求。…

计算机毕业设计---ssm+mysql+jsp实现的校园二手市场交易平台源码

项目介绍 本系统主要实现的功能有&#xff1a; 前台&#xff1a;&#xff08;1&#xff09;二手物品信息查看、搜索。 &#xff08;2&#xff09;学生注册登录、个人信息修改。 &#xff08;3&#xff09;二手物品信息发布、编辑。 &#xff08;4&#xff09;二手物品评论、回…

【Unity细节】为什么按下移动键之后,物体还是会滑行一段距离(阻力都无穷大了)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

内存满了无法开机(Ubuntu)

文章目录 在开机界面长按“shift”进入进入shell命令模式详细步骤选择Recovery Menu删除不需要的文件 在开机界面长按“shift”进入 进入shell命令模式详细步骤 选择Recovery Menu 删除不需要的文件 自己看着办吧

STM32 IIC开发学习

1IIC总线时序图 ① 起始信号 当 SCL 为高电平期间&#xff0c;SDA 由高到低的跳变。起始信号是一种电平跳变时序信号&#xff0c;而不是 一个电平信号。该信号由主机发出&#xff0c;在起始信号产生后&#xff0c;总线就会处于被占用状态&#xff0c;准备数据 传输。 ② 停止信…

Android 8.1 设置USB传输文件模式(MTP)

项目需求&#xff0c;需要在电脑端adb发送通知手机端接收指令&#xff0c;将USB的仅充电模式更改成传输文件&#xff08;MTP&#xff09;模式&#xff0c;便捷用户在我的电脑里操作内存文件&#xff0c;下面是我们的常见的修改方式 1、android12以下、android21以上是这种方式…

腾讯云轻量应用主机与云服务器功能、性能区别对比总结

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

事务的简介

一、什么是事务 事务是一组数据库的操作序列&#xff0c;包含一个或多个sql操作命令&#xff08;增删改&#xff09;&#xff0c;事务将所有的操作命令看做一个不可分割的整体&#xff0c;向数据库系统提交或撤销操作&#xff0c;所有操作要么执行要么不执行。 ●事务是一种机…

VR全景图片制作时有哪些技巧,VR全景图片能带来哪些好处

引言&#xff1a; VR全景图片是通过虚拟现实技术制作出的具有沉浸感的图片&#xff0c;能够提供给用户一种身临其境的感觉。在宣传方面&#xff0c;它有着独特的优势和潜力&#xff0c;能够帮助吸引更多的潜在客户&#xff0c;那么VR全景图片制作时有哪些技巧&#xff0c;VR全…

进程间通信-匿名管道

一 什么是通信 就是进程间的数据交换&#xff0c;进程间由于具有独立性&#xff0c;需要操作系统提供能让进程间交换信息&#xff0c;也就是数据的方法。 二 如何做到 让不同进程看到同一份资源(这不是很简单的事吗)&#xff0c;我在父进程定义一个变量&#xff0c;子进程不就…

庙算兵棋推演AI开发初探(2-编写策略(上))

开始研读step()函数的编写方法。 这个是图灵网提供了一些基础的ai代码下载&#xff08;浏览需要注册&#xff0c;下载需要审批&#xff09;。 AI开发中心-人机对抗智能 (ia.ac.cn)http://turingai.ia.ac.cn/ai_center/show 一、代码研读(BaseAgent类) 1.step函数 这段代码定…

丰田「退股」电装,传统汽车供应链体系走到十字路口

就在中国市场热衷于车企与零部件厂商的合纵连横之际&#xff0c;本周&#xff0c;传统汽车巨头丰田公司宣布&#xff0c;将出售部分电装&#xff08;Denso&#xff09;公司股份&#xff0c;资金用于投入电动化、智能驾驶等新技术研发。 按照计划&#xff0c;丰田汽车拟出售超过…