AIGC——Instant-Style文本到图像生成中的样式保留算法解析

0.概述

在过去的几年中,基于调整的扩散模型在广泛的图像个性化和定制任务中取得了显着的进展。然而,尽管有潜力,当前基于调整的扩散模型在生成和生成风格一致的图像方面仍然面临着一系列复杂的挑战,其背后可能有三个原因。首先,风格的概念仍然广泛未定义和确定,它由氛围、结构、设计、材料、颜色等元素的组合组成。第二种基于反演的方法很容易出现风格退化,导致细粒度细节频繁丢失。最后,基于适配器的方法需要频繁调整每个参考图像的权重,以保持文本可控性和风格强度之间的平衡。

此外,大多数风格转移方法或风格图像生成的主要目标是使用参考图像,并将其特定风格从给定子集或参考图像应用到目标内容图像。然而,正是风格的大量属性使得研究人员很难收集风格化数据集、正确地表示风格以及评估迁移的成功与否。以前,处理基于微调的扩散过程的模型和框架对具有共同风格的图像数据集进行微调,这个过程既耗时,又在现实世界任务中通用性有限,因为它很困难收集具有相同或几乎相同风格的图像子集。

在本文中,我们将讨论 InstantStyle,这是一个旨在解决当前基于调整的图像生成和定制扩散模型所面临的问题的框架。我们将讨论 InstantStyle 框架实现的两个关键策略:

  1. 一种简单而有效的方法,可以将样式和内容与特征空间内的参考图像解耦,该方法是基于同一特征空间内的特征可以相互添加或减去的假设进行预测的。
  2. 通过将参考图像特征专门注入特定于样式的块来防止样式泄漏,并故意避免使用繁琐的权重进行微调,通常表征参数较多的设计。

本文旨在深入介绍 InstantStyle 框架,我们探讨该框架的机制、方法、架构以及它与最先进框架的比较。我们还将讨论InstantStyle框架如何展现出卓越的视觉风格化效果,并在文本元素的可控性和风格强度之间取得最佳平衡。
在这里插入图片描述

1.文本到图像生成中的样式保留

基于扩散的文本到图像生成人工智能框架在广泛的定制和个性化任务中取得了显着的成功,特别是在一致的图像生成任务中,包括对象定制、图像保存和风格迁移。然而,尽管最近取得了成功并且性能有所提高,但由于风格的不确定性和不确定性,风格迁移对研究人员来说仍然是一项具有挑战性的任务,通常包括各种元素,包括氛围、结构、设计、材料、颜色等等。话虽如此,风格化图像生成或风格迁移的主要目标是应用给定参考图像或图像参考子集的特定风格 到目标内容图像。然而,风格的大量属性使得研究人员很难收集风格化数据集、正确表示风格以及评估迁移的成功与否。以前,处理基于微调的扩散过程的模型和框架对具有共同风格的图像数据集进行微调,这个过程既耗时,又在现实世界任务中通用性有限,因为它很困难收集具有相同或几乎相同风格的图像子集。

鉴于当前方法遇到的挑战,研究人员对开发风格迁移或风格迁移的微调方法产生了兴趣。 风格化图像生成,这些框架可以分为两个不同的组:

  • 无适配器方法: 无适配器方法和框架利用扩散过程中自注意力的力量,并通过实现共享注意力操作,这些模型能够直接从给定的参考风格图像中提取包括键和值在内的基本特征。

  • 基于适配器的方法: 另一方面,基于适配器的方法和框架包含一个轻量级模型,旨在从参考风格图像中提取详细的图像表示。然后,该框架使用交叉注意机制巧妙地将这些表示集成到扩散过程中。集成过程的主要目标是指导生成过程,并确保生成的图像与参考图像所需的风格细微差别保持一致。

然而,尽管有这些承诺,免调优方法通常会遇到一些挑战。首先,无适配器方法需要在自注意力层内交换键和值,并预先捕获从参考样式图像派生的键和值矩阵。当在自然图像上实现时,无适配器方法需要使用 DDIM 或去噪扩散隐式模型反演等技术将图像反演回潜在噪声。然而,使用 DDIM 或其他反演方法可能会导致颜色和纹理等细粒度细节的丢失,从而减少生成图像中的风格信息。此外,这些方法引入的额外步骤是一个耗时的过程,并且可能在实际应用中造成显着的缺点。另一方面,基于适配器的方法的主要挑战在于在上下文泄漏和风格强度之间取得适当的平衡。当风格强度的增加导致在生成的输出中出现来自参考图像的非风格元素时,就会发生内容泄漏,其中主要的困难点是有效地将风格与参考图像内的内容分离。为了解决这个问题,一些框架构建了配对数据集,以不同的样式表示同一对象,从而促进内容表示的提取和解开样式。然而,由于风格本质上不确定的表示,创建大规模配对数据集的任务在它可以捕获的风格多样性方面受到限制,而且这也是一个资源密集型的过程。

为了解决这些限制,引入了InstantStyle框架,它是一种基于现有基于适配器的方法的新型免调优机制,能够与其他基于注意力的注入方法无缝集成,并有效实现内容和风格的解耦。此外,InstantStyle框架引入的不是一种而是两种有效的方法来完成风格和内容的解耦,实现更好的风格迁移,而不需要引入额外的方法来实现解耦或构建配对数据集。

此外,现有的基于适配器的框架已广泛应用于基于CLIP的方法中作为图像特征提取器,一些框架已经探索了在特征空间内实现特征解耦的可能性,并且与风格的不确定性相比,更容易用文字描述内容。由于在基于 CLIP 的方法中图像和文本共享特征空间,因此上下文文本特征和图像特征的简单减法操作可以显着减少内容泄漏。此外,在大多数 扩散模型,其架构中有一个特定的层注入样式信息,并通过仅将图像特征注入到特定的样式块中来完成内容和样式的解耦。通过实现这两个简单的策略,InstantStyle框架能够解决大多数现有框架遇到的内容泄漏问题,同时保持样式的强度。

综上所述,InstantStyle 框架采用两种简单、直接但有效的机制来实现内容和风格与参考图像的有效分离。 Instant-Style 框架是一种独立于模型且无需调优的方法,在样式传输任务中表现出卓越的性能,并且在下游任务中具有巨大的潜力。

2.方法论和架构

正如之前的方法所证明的,在免调整扩散模型中样式条件的注入存在平衡。如果图像条件的强度太高,可能会导致内容泄漏,而如果图像条件的强度太低,则风格可能显得不够明显。这种观察背后的一个主要原因是,在图像中,风格和内容是相互耦合的,并且由于固有的未确定的风格属性,很难将风格和意图解耦。因此,通常会对每个参考图像进行细致的权重调整,以试图平衡文本的可控性和风格的强度。此外,对于给定的输入参考图像及其在基于反演的方法中相应的文本描述,对图像采用DDIM等反演方法以获得反演扩散轨迹,这是一个近似反演方程以将图像转换为潜在图像的过程。噪声表示。在此基础上,从反向扩散轨迹和一组新的提示开始,这些方法生成新内容,其风格与输入保持一致。然而,如下图所示,真实图像的DDIM反演方法往往不稳定,因为它依赖于局部线性化假设,导致误差传播,导致内容丢失和图像重建不正确。

就方法论而言,Instant-Style 框架没有采用复杂的策略将内容和风格与图像分离,而是采用最简单的方法来实现类似的性能。与未确定的样式属性相比,内容可以用自然文本表示,从而允许即时样式框架使用 CLIP 中的文本编码器来提取内容文本的特征作为上下文表示。同时,Instant-Style框架实现了CLIP图像编码器来提取参考图像的特征。利用 CLIP 全局特征的表征,并从图像特征中减去内容文本特征,Instant-Style 框架能够显式地解耦样式和内容。尽管这是一个简单的策略,但它可以帮助 Instant-Style 框架非常有效地将内容泄漏保持在最低限度。

此外,深层网络中的每一层都负责捕获不同的语义信息,并且从以前的模型中观察到的关键是存在两个负责处理风格的注意层。具体来说,blocks.0.attentions.1和down block.2.attentions.1层负责捕捉颜色、材质、氛围等风格,空间布局层分别捕捉结构和构图。 Instant-Style框架隐式地使用这些层来提取样式信息,并在不损失样式强度的情况下防止内容泄漏。该策略简单而有效,因为模型已经定位了样式块,可以将图像特征注入到这些块中以实现无缝样式迁移。此外,由于该模型大大减少了适配器的参数数量,增强了框架的文本控制能力,并且该机制也适用于其他基于注意力的特征注入模型,用于编辑和其他任务。

3. 实验和结果

Instant-Style框架是在Stable Diffusion XL框架上实现的,它使用常用的预训练IR适配器作为其范例来验证其方法,并将除图像特征的样式块之外的所有块静音。 Instant-Style 模型还从头开始在 4 万个大规模文本图像配对数据集上训练 IR 适配器,并且不是训练所有块,而是仅更新样式块。

为了发挥其泛化能力和鲁棒性,Instant-Style 框架对不同内容的各种风格进行了大量的风格迁移实验,结果如下图所示。给定单一样式参考图像以及不同的提示,即时样式框架可提供高质量、一致的样式 图像生成。

此外,由于该模型仅在样式块中注入图像信息,因此能够显着减轻内容泄漏的问题,因此不需要执行权重调整。

接下来,Instant-Style框架还采用ControlNet架构来实现基于图像的风格化和空间控制,结果如下图所示。

与以前最先进的方法(包括 StyleAlign、B-LoRA、Swapping Self Attention 和 IP-Adapter)相比,Instant-Style 框架展示了最佳的视觉效果。

4.项目部署

源码地址:https://github.com/InstantStyle/InstantStyle.git
项目应用:

git clone https://github.com/InstantStyle/InstantStyle.git
cd InstantStyle

# download the models
git lfs install
git clone https://huggingface.co/h94/IP-Adapter
mv IP-Adapter/models models
mv IP-Adapter/sdxl_models sdxl_models

项目应用:

from diffusers import StableDiffusionXLPipeline
from diffusers.image_processor import IPAdapterMaskProcessor
from transformers import CLIPVisionModelWithProjection
from PIL import Image
import torch

image_encoder = CLIPVisionModelWithProjection.from_pretrained(
    "h94/IP-Adapter", subfolder="models/image_encoder", torch_dtype=torch.float16
).to("cuda")

pipe = StableDiffusionXLPipeline.from_pretrained(
    "RunDiffusion/Juggernaut-XL-v9", torch_dtype=torch.float16, image_encoder=image_encoder, variant="fp16"
).to("cuda")

pipe.load_ip_adapter(
    ["ostris/ip-composition-adapter", "h94/IP-Adapter"],
    subfolder=["", "sdxl_models"],
    weight_name=[
        "ip_plus_composition_sdxl.safetensors",
        "ip-adapter_sdxl_vit-h.safetensors",
    ],
    image_encoder_folder=None,
)

scale_1 = {
    "down": [[0.0, 0.0, 1.0]],
    "mid": [[0.0, 0.0, 1.0]],
    "up": {"block_0": [[0.0, 0.0, 1.0], [1.0, 1.0, 1.0], [0.0, 0.0, 1.0]], "block_1": [[0.0, 0.0, 1.0]]},
}
# activate the first IP-Adapter in everywhere in the model,
# configure the second one for precise style control to each masked input.
pipe.set_ip_adapter_scale([1.0, scale_1])

female_mask = Image.open("./assets/female_mask.png")
male_mask = Image.open("./assets/male_mask.png")
background_mask = Image.open("./assets/background_mask.png")
mask2 = processor.preprocess([female_mask, male_mask, background_mask], height=1024, width=1024)
mask2 = mask2.reshape(1, mask2.shape[0], mask2.shape[2], mask2.shape[3])   # output -> (1, 3, 1024, 1024)

ip_female_style = Image.open("./assets/ip_female_style.png")
ip_male_style = Image.open("./assets/ip_male_style.png")
ip_background = Image.open("./assets/ip_background.png")
ip_composition_image = Image.open("./assets/ip_composition_image.png")

image = pipe(
    prompt="high quality, cinematic photo, cinemascope, 35mm, film grain, highly detailed",
    negative_prompt="",
    ip_adapter_image=[ip_composition_image, [ip_female_style, ip_male_style, ip_background]],
    cross_attention_kwargs={"ip_adapter_masks": [mask1, mask2]},
    guidance_scale=6.5,
    num_inference_steps=25,
).images[0]
image

在这里插入图片描述

5.总结

在本文中,我们讨论了 Instant-Style,这是一个通用框架,它采用两种简单但有效的策略来实现内容和风格与参考图像的有效分离。 InstantStyle 框架的设计目的是解决当前基于调整的扩散模型在图像生成和定制方面所面临的问题。 Instant-Style 框架实现了两个重要策略:一种简单而有效的方法,用于将样式和内容与特征空间内的参考图像解耦,该方法是基于同一特征空间内的特征可以相互添加或减去的假设进行预测的。其次,通过将参考图像特征专门注入到特定于风格的块中来防止风格泄漏,并故意避免使用繁琐的权重进行微调,通常表征参数较多的设计。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

震惊!原来cmd命令行还可以这么玩?!

不论是在程序开发,还是遇到一些系统问题,我们很多时候会用到cmd命令行来处理问题,而当我们在执行cmd命令的时候,经常遇到下面这样的问题: ①. 控制台内容复制出来换行了 这种场景在我们安装nodejs插件的时候&#xff0…

项目管理表格-项目总体计划(项目管理-项目经理干货资料Excel)

项目管理总体计划模板 1、项目基本信息 2、项目里程碑 3、项目干系人 4、项目团队组织架构管理 5、项目预算管理 6、项目项目任务计划管理 7、问题及风险管理 8、项目周报 9、项目相关要求 软件项目相关全套精华资料包获取方式①:点我获取 获取方式②:本…

如何实现Linux双网卡同时连接内网和外网的配置?

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

百度百科怎么创建自己的公司

创建百度百科公司页面可以帮助提升企业知名度、提高搜索引擎排名、增强企业公信力、建立企业形象和行业权威。以下是创建公司百度百科的步骤: 准备阶段 收集资料 在开始撰写百度百科公司页面之前,首先需要收集公司的相关资料,包括公司的历史、…

社群推广遇见瓶颈?点这里,教你一招立马激活 | C1N短网址

社群推广在当下互联网营销里可是相当重要的一环啊,靠着社群的力量能迅速提升品牌知名度以及用户互动性。但在搞社群推广的过程中,那可是会碰到好多瓶颈的,这可让社群运营人员脑壳疼得很呐。 先来说说 01 社群人气不足:在社群推广中…

项目中使用Elasticsearch的API相关介绍

项目中使用Elasticsearch的API相关介绍 0、域映射类型 text:会分词,不支持聚合对当前搜索关键词,先自身分词,分成多个词,然后去一个一个的词去利用倒排索引去查询es索引库一般应用在搜索关键字匹配的字段的类型。 商…

电商数据分析的秘籍|数据采集渠道与工具|电商数据采集API接口

【数据采集渠道及工具选择】 进行电子商务数据分析与采集时常用的数据来源渠道有电子商务网站、店铺后台或平台提供的数据工具、政府部门、机构协会、媒体、权威网站数据机构、电子商务平台、指数工具等。

电子资源|基于SSM+vue的电子资源管理系统(源码+数据库+文档)​

电子资源管理系统 目录 基于SSMvue的电子资源管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&am…

C++ I/O流(一)——输出流

一、IO流概念 IO流可分为输入流和输出流,用于从设备(如键盘、文件、网络等)读取数据或向设备写入数据。C++标准库提供了丰富的IO流类,包括iostream、fstream、stringstream等,分别用于处理控制台输入输出、文件输入输出和字符串流操作。 读操作:输入流中读取数据到程序中…

Nginx配置文件conf解释

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Nginx(“engine x”…

PHP黑魔法之strcmp与is_numeric绕过

1、strcmp绕过 PHP手册: int strcmp ( string $str1 , string $str2 )Return ValuesReturns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal 当输入的两个值为不是字符串时就会产生不预期的返回值 strcmp()在比较字符串和…

Java中的数据类型与变量

引言&#xff1a; 哈喽&#xff0c;各位读者老爷们大家好呀,long time no see!这里是小堇Java小课堂&#xff0c;在本课堂中我们将继续分享Java中的数据类型与变量&#xff0c;标识符&#xff0c;关键字等知识&#xff0c;那我们启程咯&#xff01; 数据类型与变量 1.字面变量…

MacOS docker 安装与配置

orbstack 安装 官网&#xff1a; https://orbstack.dev 下载链接&#xff1a;Download OrbStack Fast, light, simple Docker Desktop alternative 选择是Apple M系列处理器&#xff0c; 或 Intel系列处理器 到这里就安装好了Orbstack软件&#xff0c;下面开始配置docker 下…

QT状态机2-含终止状态的嵌套状态机

#include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)

【C++小语法技巧】命名空间和输入输出

在使用C语言编程过程中&#xff0c;C语言的要求之严格&#xff0c;编程过程之繁琐&#xff0c;大同小异的重复性工作&#xff0c;令C之父使用C语言编程时也深受其扰&#xff0c;于是乎C兼容C小语法诞生了 一、命名空间域&#xff08;解决C语言中命名冲突&#xff09; 1.定义命…

Java 8 Supplier函数式接口介绍及实战案例

介绍直接看这篇文章比较详细&#xff1a;【Java 基础篇】Java Supplier 接口详解 Supplier 是 Java 8 引入的一个函数式接口&#xff0c;它属于 java.util.function 包。Supplier 接口表示一个不接受任何参数但返回某种类型结果值的函数。它定义了一个 get() 方法&#xff0c;该…

HAProxy系列文章二《Patroni+ETCD+PG14+HAProxy的安装部署》

瀚高数据库 目录 文档用途 详细信息 文档用途 本文主要介绍Patroni架构下单点HAProxy的安装部署&#xff0c;通过单点HAProxy实现数据库的负载均衡。本文为HAProxy系列文章之一&#xff0c;其他相关文章请点击文档下方的相关文档链接进行详细查看&#xff0c;文章内不在赘述。…

Matlab进阶绘图第54期—密度散点图(概率密度版)

在之前的文章中&#xff0c;分享过Matlab密度散点图的绘制方法&#xff1a; 此版内容用到了一些点云数据处理中求取密度的知识&#xff0c;对部分人来说&#xff0c;可能有些不好理解。 于是&#xff0c;本期内容使用Matlab自带的ksdensity函数进行密度散点图(概率密度版)的绘…

VMware 不能拍摄快照

问题&#xff1a; 拍摄快照后&#xff0c;会出现这个弹窗&#xff0c;然后虚拟机就直接自动退出了&#xff0c;还会弹出一个框&#xff1a; 解决方法&#xff1a; 我用的是 window11 和 VMware16.0.0 这是因为VM16与window11&#xff0c;二者之间版本不兼容问题&#xff0c;可…

麒麟 V10 安装docker2

1. 查看系统版本 2.安装docker-ce 添加源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装docker yum install docker-ce --allowerasing 重启docker systemctl start docker 3.安装nvidia-container-runtime 添…