即插即用,效率远超ControlNet!贾佳亚团队重磅开源ControlNeXt:超强图像视频生成方法

news2024/11/15 15:35:20

文章链接:https://arxiv.org/pdf/2408.06070
git链接:https://github.com/dvlab-research/ControlNeXt
项目链接:https://pbihao.github.io/projects/controlnext/index.html

亮点直击

  • 提出了ControlNeXt,这是一种强大且高效的图像和视频生成方法,大幅减少了延迟开销和参数量。

  • 引入了交叉归一化(Cross Normalization)用于微调预训练的大型模型,从而促进高效且稳定的训练收敛。

  • ControlNeXt可以作为一个轻量级的即插即用模块,可以与其他LoRA权重集成,以无需额外训练的方式改变生成样式。

扩散模型在图像和视频生成方面展示了显著且稳定的能力。为了实现对生成结果的更大控制,研究人员引入了额外的架构,如ControlNet、Adapters和ReferenceNet,以整合条件控制。然而,当前可控生成方法通常需要大量额外的计算资源,尤其是在视频生成方面,并且在训练中面临挑战或控制效果较弱。本文提出了ControlNeXt:一种强大且高效的可控图像和视频生成方法。

首先设计了一个更简单且高效的架构,取代了沉重的额外分支,只需在基础模型上增加极少的成本。这种简洁的结构还使本文的方法能够无缝集成其他LoRA权重,实现样式更改而无需额外训练。在训练方面,减少了多达90%的可学习参数,相较于其他方法。此外,还提出了称为交叉归一化(Cross Normalization, CN)的方法,以替代“零卷积”实现快速且稳定的训练收敛。多项实验,使用不同的基础模型在图像和视频领域,证明了本文方法的稳健性。

方法

深入分析架构设计并对其进行剪枝,以构建一个简洁明了的结构。随后介绍交叉归一化(Cross Normalization),该方法用于通过引入额外的参数对大型预训练模型进行微调。

架构剪枝

动机。ControlNet的关键创新在于增加了一个控制分支,该分支提取条件控制并将其整合到主网络中。这个分支共享了可训练参数,这些参数初始化为原始分支一半的副本,并行运行,使用零卷积作为桥梁来整合条件控制。具体来说:

其中, 表示具有可学习参数 的神经模型, 表示零卷积层, 和 分别表示二维特征图和条件控制, 表示控制参数。预训练的大型生成模型 及其预训练参数 完全冻结,而ControlNet分支 则通过从主分支复制进行初始化。

然而,这样的设计虽然引入了控制能力,但也带来了显著的成本。额外的分支会使延迟最多增加50%,这一点在视频生成中尤为显著,因为每一帧都需要处理。此外,这些可训练参数量庞大且固定,几乎等同于所有预训练参数的一半。除了冗余之外,仅优化ControlNet也限制了整个模型的上限,因为它不会影响预训练的生成模型。为提高效率和简洁性,首先通过移除额外的分支简化了ControlNet的原始设计。接着,对预训练模型中选定的子集进行训练,从而得到一个更有效且高效的架构。

架构剪枝。 需要注意的是,预训练模型通常是在大规模数据集(例如LAION-5B)上进行训练的,而微调则始终在规模小得多的数据集上进行,往往小上千倍。基于此,认为预训练的大型生成模型已经足够强大,且无需引入如此大量的额外参数来实现控制生成的能力。

具体来说,移除了控制分支,并用一个轻量级的卷积模块代替,该模块仅由多个ResNet块组成。这个模块的规模远小于预训练模型,旨在从条件控制中提取指导信息,并将其与去噪特征对齐。由于其小巧的体积,更多地依赖生成模型本身来处理控制信号。在训练过程中,冻结了大部分预训练模块,并选择性地优化预训练生成模型中一小部分可训练参数。这种方法将可能由训练过程引起的遗忘风险降到最低。它还可以与参数高效的微调方法(如LoRA)结合使用。研究者们努力通过避免对原始架构进行重大修改来保持模型结构的一致性。直接训练这些模型还能带来更大的有效性和效率,并能自适应地调整可学习参数的规模以适应不同的任务。表达为:

其中, 表示预训练参数中的一个可训练子集,而 是用于提取条件控制的轻量级卷积模块。基于上述流程,力求在尽可能减少额外开销和延迟的同时,保持模型的一致性。

关于条件控制的注入,观察到对于大多数可控生成任务,控制信号通常具有简单的形式或与去噪特征保持高度一致,因此无需在多个阶段插入控制信号。在单个选定的中间块中将控制信号与去噪分支集成,通过交叉归一化进行归一化后,直接将其添加到去噪特征中。该模块可以作为一个即插即用的模块,由轻量级卷积模块和可学习参数构成,这些参数是预训练模型的一个子集,其表示如下:

其中,,且 。

交叉归一化

动机。 在对预训练大型模型进行持续训练时,通常面临的一个问题是如何适当地引入额外的参数和模块。由于直接组合新的参数通常会导致训练崩溃和收敛性差,最近的工作广泛采用了零初始化,即将连接预训练模型和新增模块的桥接层初始化为零。这种操作确保了在训练开始时新引入的模块不会产生影响,从而实现稳定的热身阶段。然而,零初始化可能导致收敛缓慢并增加训练挑战,因为它阻止了模块从损失函数中获得准确的梯度。这会导致一种称为“突发收敛”的现象,即模型在经过一段较长的训练时间后并没有逐渐学习条件,而是突然开始遵循这些条件。

本节分析了在添加新参数时训练崩溃的原因,并提出了交叉归一化作为零卷积的替代方案,以确保稳定和高效的训练。

交叉归一化。 研究者们发现训练崩溃的关键原因是引入的模块和预训练模型之间的数据分布不对齐和不兼容。经过大规模数据训练后,预训练生成模型通常表现出稳定的特征和数据分布,其特征是均值和标准差的一致性。然而,新引入的神经模块通常仅使用随机方法(例如高斯初始化)进行初始化。这导致新引入的神经模块产生具有显著不同均值和标准差的特征输出。直接添加或组合这些特征会导致模型不稳定。

归一化方法(如bn和层归一化)通过标准化层输入来提高训练稳定性和速度。它们通过将输入标准化为零均值和单位方差来实现这一点,这在神经网络训练中被广泛使用。受到这些方法的启发,本文提出了交叉归一化,以对齐处理过的条件控制和主分支特征,从而确保训练的稳定性和速度。

将来自主去噪分支和控制转移分支的特征图分别表示为 和 ,其中 。交叉归一化的关键是使用从主分支 计算的均值和方差来对条件特征 进行归一化,以确保它们的对齐。首先,计算去噪特征的均值和方差:

然后,使用去噪特征的均值和方差对控制特征进行归一化:

其中, 是为数值稳定性而添加的小常数, 是允许模型缩放归一化值的参数。

交叉归一化对齐了去噪特征和控制特征的分布,充当了连接扩散和控制分支的桥梁。它加速了训练过程,确保即使在训练开始时控制对生成的有效性,并减少对网络权重初始化的敏感性。

实验

本节展示了在各种任务和基础模型上进行的系列实验。本文的方法在图像和视频生成方面表现出卓越的效率和通用性。

通用性

为了展示本文方法的鲁棒性和通用性,首先在多个基于扩散的基础模型上实现了本文的方法,如Stable Diffusion 1.5、Stable Diffusion XL、Stable Diffusion 3 和 Stable Video Diffusion。这些实验涵盖了图像生成、高分辨率生成和视频生成等广泛任务,并使用了各种类型的条件控制。定性结果如下图1所示。结果表明,本文的方法具有鲁棒性和广泛的适应性,能够有效适应各种架构,并满足不同任务的要求。

各种条件控制。 ControlNeXt 还支持各种类型的条件控制。在这一小节中,选择了“mask”、“depth”(深度)、“canny”(边缘)和“pose”(姿态)作为条件控制,分别展示在下图5的从上到下的位置。

所有实验均基于Stable Diffusion 1.5架构进行构建。更多稳定视频生成的结果(利用姿态序列作为角色动画的指导)展示在图6中。SDXL的结果展示在图7中,通过提取输入图像中的Canny边缘并使用SDXL模型生成输出,实现了风格迁移。

训练收敛性

可控生成中的一个典型问题是训练收敛困难,这意味着需要数千步或更多步骤的训练才能学习条件控制。这种现象被称为“突发收敛问题”,发生在模型最初无法学习控制能力,然后突然获得这一技能。这主要由以下两个方面造成:

  1. 零卷积抑制了损失函数的影响,导致模型在学习初期难以有效开始学习,从而延长了热身阶段。

  2. 预训练生成模型完全冻结,而ControlNet作为一个适配器,无法立即影响模型。

在ControlNeXt中,消除了这两个限制,从而显著加快了训练收敛速度。使用了两种类型的控制进行了实验,结果和比较如下图3所示。可以看出,ControlNeXt在仅经过几百步训练后就开始收敛,而ControlNet则需要数千步。这显著缓解了突发收敛问题。

效率

本文的方法仅向原始预训练模型添加了一个轻量级模块,确保其保持高效,并且不会引入显著的延迟。本节提供了更多细节,并进行了额外的实验以展示本文方法的效率。

参数。 首先,提供了关于参数的统计信息,包括总参数和可学习参数,这些统计仅计算了UNet模型(不包括VAE和编码器部分)。结果显示在下表1中。可以看出,本文的方法仅添加了一个轻量级模块,额外参数非常少,保持了与原始预训练模型的一致性。至于训练,本文的方法最多仅需不到10%的可学习参数,使其成为一个非常轻量且即插即用的模块。您还可以根据不同的任务和性能要求自适应调整可学习参数的数量。关于参数数量对模型影响的更多细节将在后文讨论。

推理时间。 研究者们比较了不同方法在各种基础模型上的推理时间。结果显示在下表2中,该表呈现了一个推理步骤的计算时间,仅考虑了UNet和ControlNet部分,排除了编码和解码过程。可以看出,由于本文的方法仅添加了一个轻量级模块,与预训练基础生成模型相比,其延迟增加极小。这确保了本文方法在效率上的显著优势。

即插即用

ControlNeXt 的设计旨在保持生成模型原始架构的一致性,确保其兼容性和有效性。它可以作为一个即插即用、无需训练的模块,与各种基础模型和开源 LoRA 无缝集成,实现生成风格的变化。

无需训练的集成。 研究者们首先收集了从 Civitai 下载的各种 LoRA 权重,涵盖了不同的生成风格。然后,在基于 SD1.5 架构的各种基础模型上进行了实验,包括 SD1.5、AnythingV3 和 DreamShaper。结果显示在下图8中。可以观察到,ControlNeXt 可以以无需训练的方式与各种基础模型和 LoRA 权重集成,有效地改变生成图像的质量和风格。这主要归因于本文方法的轻量级设计,该设计主要保持了预训练基础模型的一致性,并且仅添加了极少的附加模块。这些优势使其能够作为一个具有通用兼容性的即插即用模块。

稳定生成。 为了生成令人满意的结果,生成模型通常需要迭代调整提示。ControlNeXt 作为一个插件单元,能够以最小的努力和成本实现稳定生成。提供了一个简单的提示,“一个女人”,生成结果的比较(有无本文的方法)如下图9所示。

结论

本文提出了 ControlNeXt,一种先进且高效的可控图像和视频生成方法。ControlNeXt 采用简化和精简的架构,消除了重型辅助组件,以最小化延迟开销并减少可训练参数。这种轻量级设计使其能够作为一个即插即用模块,具有强大的鲁棒性和兼容性,并进一步支持与其他 LoRA 权重的集成,从而在无需额外训练的情况下改变生成风格。提出了交叉归一化,用于对预训练大型模型进行微调,处理新引入的参数,从而促进更快和更稳定的训练收敛。通过在各种图像和视频生成基础模型上的广泛实验,展示了本文方法的有效性和鲁棒性。

参考文献

[1] ControlNeXt: Powerful and Efficient Control for Image and Video Generation

更多精彩内容,请关注公众号:AI生成未来

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

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

相关文章

Spring Boot实现定时任务

目录 1.什么是定时任务2.Timer的使用3.Spring Task的使用Api说明配置类启用定时任务支持配置定时任务多线程(异步)定时任务 1.什么是定时任务 定时任务是指在预定的时间点或按照特定的时间间隔自动执行的任务。 定时任务的应用场景: 操作系…

系统调用学习29

#include<iostream> #include<signal.h> #include<unistd.h> #include<vector> // 定义信号屏蔽常量 #define BLOCK_SIGNAL 2 #define MAX_SIGNUM 31// 定义需要屏蔽的信号数组 int sigarr[]{2,3,4}; // 展示当前线程未处理的信号状态 static void sho…

TortoiseGit修改差异查看器为BeyondCompare

1. TortoiseGit修改差异查看器 比较文件&#xff1a;”C:\Program Files\Beyond Compare 4\BComp.exe” %base %mine /title1%bname /title2%yname /leftreadonly差异文件&#xff1a;”C:\Program Files\Beyond Compare 4\BCompare.exe2. TortoiseGit修改合并工具 解决冲突&…

【嵌入式开发之网络编程】TCP端口和UDP端口

目录 网络端口的定义及作用 运输层的作用 运输层的两个主要协议 用户数据报协议UDP (User Datagram Protocol) 传输控制协议TCP (Transmission Control Protocol) 运输层的端口及分类 按照端口号分类 按照协议类型分类 BSD端口 网络端口的定义及作用 在网络技术中…

低代码平台的优势与挑战:现代开发的革新之路

在数字化转型的浪潮中&#xff0c;低代码平台&#xff08;Low-Code Platforms&#xff09;成为了开发者和企业的重要工具。低代码平台通过可视化界面和拖拽式功能&#xff0c;简化了应用程序的开发过程&#xff0c;使得即使是没有编程背景的用户也能够构建功能丰富的应用。然而…

ubuntu18.04下安装nvidia3090显卡驱动

前言&#xff1a;之前安装过4090的显卡&#xff0c;但是是使用20.04直接在第三方驱动里面安装的&#xff0c;这回使用的是18.04&#xff0c;版本估计是21年以前的&#xff0c;附加驱动直接没有&#xff0c;整整卡了两天&#xff0c;最后再查询多篇资料后最终安装好&#xff0c;…

软考-软件设计师 (计算机网络习题)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

Impala 与 Hive 的比较

Impala 与 Hive 的关系 impala是基于hive的大数据分析查询引擎&#xff0c;直接使用hive的元数据库metadata&#xff0c;意味着impala元数据都存储在hive的metastore当中&#xff0c;并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话&#xff0c;必须先安装hive&…

​高德离线API如何加载高清卫星影像

我们有客户遇到这样一个问题&#xff0c;现有平台基于高德API开发&#xff0c;但希望将地图更新为高清卫星影像。 我估计你可能也会遇到这个问题&#xff0c;因此特撰此文与大家分享。 项目背景 高德API有着比较广泛的用户群体&#xff0c;有不少系统为了业务数据的呈现&…

大数据应用整理

1.架构划分 1.1.数据抽取转换加载层&#xff08;ETL&#xff09; 从源系统抽取、转换、加载到所需的源数据&#xff0c;存储到系统的数据仓库中。ETL的设计和实施占整体工作的50%以上。ETL层的主要职责是将原始数据源中的数据提取出来&#xff0c;经过清洗、转换等处理后&…

小白学AI,新手也能轻松掌握的LLM Agent工作原理基础知识全览!

摘要 本文深入解释了大型语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;代理&#xff08;Agent&#xff09;的工作原理&#xff0c;详细阐述了它们的结构、能力和应用。 摘要 LLM代理是一种先进的数字助手&#xff0c;它们超越了传统的聊天机器人&am…

Postman数据驱动之CSV文件和JSON文件的处理

数据驱动 数据驱动&#xff1a;通过在测试过程中使用不同的输入数据来执行相同的测试脚本或流程。 适用场景&#xff1a;当一个接口需要测试多个场景用例&#xff08;正例、反例&#xff09;&#xff0c;可以使用数据驱动的形式实现。 CSV文件 CSV&#xff08;Comma-Separ…

verilog实现STFT

短时傅里叶变换&#xff08;STFT, Short Time Fourier Transform&#xff09;&#xff0c;是处理采样数据、获取信号时频特征的一种常用方法。然而其消耗的计算资源较为庞大&#xff0c;在数据采集设备全速运行时&#xff0c;若在上位机进行 STFT 的计算&#xff0c;则很难做到…

vue2使用天地图

需求&#xff1a;用vue2使用天地图展示对应点位数据以及开发中出现的问题等&#xff0c;其实天地图的写法和百度地图差不多 注意&#xff01;&#xff01;&#xff01;天地图的接口不稳定&#xff0c;时常报错418&#xff0c;官网也是一样的情况&#xff0c;推荐还是使用百度或…

一种基于物联网(IoT)的生物多样性监测系统

目录 摘要 第一部分&#xff1a;引言 第二部分&#xff1a;相关工作 第三部分&#xff1a;贡献 第四部分&#xff1a;提出的系统架构 第五部分&#xff1a;BN使用的消息框架 第六部分&#xff1a;系统实施 第七部分&#xff1a;实验场景和结果 第八部分&#xff1a;结…

游戏开发之性能优化

游戏开发中的性能优化是一个复杂且多方面的过程&#xff0c;涉及到多个层面的改进和调整。以下是一些主要的优化技巧和方法&#xff1a; 代码优化&#xff1a; 缓存计算结果&#xff1a;对于那些耗费大量CPU计算而计算结果无需每帧变化的逻辑&#xff0c;使用缓存可以显著提高性…

Java——反射(4/4):反射的作用、应用场景(案例需求、实现步骤、代码实现)

目录 作用 应用场景 案例需求 实现步骤 代码实现 作用 基本作用&#xff1a;可以得到一个类的全部成分然后操作。可以破坏封装性。最重要的用途是&#xff1a;适合做Java的框架&#xff0c;基本上&#xff0c;主流的框架都会基于反射设计出一些通用的功能。 通过反射能够…

Springboot+vue 建筑资质证书管理系统

建筑企业资证管理系统&#xff0c;简称证书管理软件&#xff0c;基于springbootvue开发&#xff0c;数据库采用mysql&#xff0c;。以建筑企业证书管理为核心&#xff0c;包含投证书管理、证书过期提醒&#xff0c;辅助建筑企业高效完成证书管理、人员信息、投标经营活动等管理…

全功能知识付费小程序源码系统 支持视频课程、音频课程、图文课程 附带代码包以及搭建部署教程

系统概述 “全功能知识付费小程序源码系统”是一款专为知识创作者、教育机构及企业内训部门设计的全方位解决方案。该系统基于当前最流行的小程序技术构建&#xff0c;无需下载安装&#xff0c;用户只需通过微信等社交平台即可轻松访问&#xff0c;极大地降低了使用门槛。同时…

CentOS 7 安装流程详细教程

目录 前言1. CentOS 7 概述2. 安装环境准备2.1 硬件要求2.2 安装介质准备 3. CentOS 7 安装步骤3.1 引导安装程序3.2 选择语言和键盘布局3.3 配置安装源和软件包3.4 配置分区3.5 设置网络和主机名3.6 设置时间和日期3.7 设置 root 密码和创建用户3.8 开始安装并完成配置 4. 安装…