(2024,预训练扩散模型,参考 UNet,创建引导数据集)BootPIG:在预训练扩散模型中引导零样本个性化图像生成

BootPIG: Bootstrapping Zero-shot Personalized Image Generation Capabilities in Pretrained Diffusion Models

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

3. 方法

3.1. 基础:扩散模型 

3.2. BootPIG 模型架构

3.3. 训练

3.4. 引导训练数据

3.5. 推断

4. 实验

5. 局限性


0. 摘要

最近的文本到图像生成模型已经展示了令人难以置信的成功,能够生成忠实于输入提示的图像。然而,使用单词来描述所需概念的要求,在控制生成概念的外观方面存在限制。在这项工作中,我们通过提出一种方法来解决这一缺陷,使现有的文本到图像扩散模型具备个性化能力。我们提出了一种新颖的架构(BootPIG),允许用户提供对象的参考图像,以引导生成图像中概念的外观。

BootPIG 架构对预训练的文本到图像扩散模型进行最小修改,并利用一个独立的 UNet 模型来引导生成图像朝向所需的外观。我们引入了一种训练过程,允许我们使用从预训练的文本到图像模型LLM 聊天代理图像分割模型生成的数据来引导 BootPIG 架构的个性化能力。与需要数天的预训练的现有方法不同,BootPIG 架构可以在大约 1 小时内进行训练。对 DreamBooth 数据集的实验表明,BootPIG 在超越现有零样本方法的同时,与测试时微调方法相媲美。通过用户研究,我们验证了 BootPIG 生成相对于现有方法的偏好,无论在保持对参考对象外观的忠实性还是与文本提示一致方面。

3. 方法

3.1. 基础:扩散模型 

3.2. BootPIG 模型架构

我们在图 2 中概述了 BootPIG 架构。我们提出的架构的关键思想是将参考对象的外观注入到预训练的文本条件图像扩散模型的特征中,从而生成的图像模仿参考对象。

在这项工作中,我们使用 Stable Diffusion [32] 作为我们的预训练文本到图像扩散模型。Stable Diffusion 是一种使用了由 Transformer[41] 和 Residual[11] 块组成的 U-Net [33] 架构的潜在扩散模型 [32]。我们提出的 BootPIG 架构修改了 Transformer 块中自注意层处理的信息,以控制生成对象的外观。设 Stable Diffusion U-Net 模型表示为 U_θ(x_t, c, t),其中 x_t 是有噪输入潜在变量,c 是输入文本提示,t 是扩散过程中的时间步。

注入参考特征。自注意(SA)层接收潜在特征 f ∈ R^(n×d),执行以下操作: 

其中,q、k、v 是称为查询(query)、键(key)和值(value)函数的线性映射,其参数分别为 W_q、W_k、W_v ∈ R^(d×d′),它们将特征投影到选择的维度 d′。Wo ∈ R^(d′xd) 将输出投影回原始维度 d。我们建议用一个称为参考自注意(Reference Self-Attention,RSA)的操作替换所有的自注意(SA)层,这允许我们注入参考特征。RSA 操作的输入是潜在特征 f ∈ R^(n×d) 和相同维度的参考特征 f_ref ∈ R^(n_ref × d),执行以下操作: 

其中,[:] 表示沿第一个维度的连接。直观地说,RSA 操作促使注入参考特征,使扩散模型在计算输出潜在特征时 “关注 ”它们。我们用

表示这个新的 U-Net,称为基础 U-Net,其中包含 L 个 RSA 层。为了简单起见,我们使用符号 F_ref 来表示 L 个参考特征的集合。请注意,RSA 操作符不引入任何新的参数,并重用权重参数 W_o、W_q、W_k、W_v。

提取参考特征。给定一个参考图像 I_ref,我们需要提取适当的特征 f_ref,以便将其传递给每个 RSA 层。我们建议使用一个单独的 U-Net Uϕ(x_t, c, t),称为参考 U-Net,它遵循与基础 U-Net 相同的架构,并用相同的参数初始化(ϕ = θ)。对于给定的 t,我们对参考图像 I_ref 执行正向扩散过程,计算出带有噪声的参考潜在变量 x′_reft。我们将 x′_reft 与文本提示一起作为输入,并在 L-SA 层之前提取特征作为 F_ref。这确保提取的参考特征具有适当的维度,并且与 RSA 层的权重兼容。

3.3. 训练

BootPIG 架构允许我们将参考图像的特征传递给 RSA 层。然而,由于原始扩散模型 Uθ 没有经过 RSA 层的训练,我们观察到生成的图像是损坏的(请参见补充材料),并且没有正确遵循输入提示。为了纠正这一问题,我们建议微调参考 U-Net ϕ 的参数,以提取更好的参考特征,并微调 RSA 层的参数(Wo、Wq、Wk、Wv)以更好地利用参考特征。

给定一个包含参考图像、文本提示和目标图像(遵循文本提示,并准确描绘参考对象)的三元组数据集,我们使用与原始潜在扩散模型相同的目标进行 BootPIG 架构的微调。参考 U-Net 接收与参考图像相对应的带有噪声的 VAE 潜在变量(基于时间步 t 加噪)以及时间步 t 和目标标题作为输入。基础 U-Net 接收与目标图像相对应的带有噪声的 VAE 潜在变量(同样受到加噪处理)、时间步 t、目标标题以及从参考 U-Net 收集的参考特征作为输入。参考 U-Net 和 RSA 层的参数将被更新以准确估计输入潜在变量中的噪声。为了保留基础 U-Net 遵循提示的能力,我们随机丢弃参考图像的特征(概率为 0.15),从而将基础 U-Net 模型恢复为基于自注意的架构。我们在补充材料中提供了训练流程的更详细描述以及伪代码。

3.4. 引导训练数据

为了优化 BootPIG 架构,收集一个大规模筛选的训练数据源是昂贵的。这将涉及在不同背景下收集描绘相同对象实例的配对的参考和目标图像。相反,我们提出了一个合成数据生成流程,利用现有预训练的计算机视觉和自然语言处理模型的能力。

在图 3 中,我们概述了数据生成流程。首先,我们利用 ChatGPT [2],一个先进的会话代理,为潜在目标图像生成标题。对于每个标题,我们使用 Stable Diffusion [32] 生成一张图像。然后,我们使用 Segment Anything Model(SAM)[18],一种先进的分割模型,提取与标题中主对象对应的前景掩码。我们将 Stable Diffusion 生成的图像视为目标图像,将前景对象粘贴在白色背景上视为参考图像,并将 ChatGPT 生成的标题视为文本提示。虽然参考图像并没有在完全不同的背景中描绘对象,但我们经验性地观察到这种合成数据足以学习个性化能力。

3.5. 推断

在推断过程中,每个时间步,我们通过将带有噪声的参考图像、目标标题 c 和时间步 t 传递给参考 U-Net,提取参考特征 F_ref。我们使用一个无分类器引导 [12] 策略来使用基础 U-Net 估计有噪潜在变量 x′_t 中的噪声,如下所示:

其中,第一个 U-Net 项估计没有任何调节信息的噪声,第二个 U-Net 项仅使用图像信息估计噪声,第四个 U-Net 项同时使用图像和标题。

到目前为止,所描述的 BootPIG 架构接受单个参考图像作为输入。这使我们能够使用合成的(参考,目标)图像对训练模型的参数。在多种应用中常见的一种情况是我们有多个参考图像的情况。为了处理这种情况,我们现在提出了一个推断过程,以利用训练好的 BootPIG 模型,并利用来自多个参考图像的外观信息。

设 f_refi 是在特定层上图像 i 的参考特征。在每个 RSA 层,我们首先计算没有任何参考特征(f_ref = f)和使用每个参考特征的输出:

对于每个参考生成的输出 o_i ∈ R^(n×d),我们计算与无参考输出 o 的逐像素差的范数。我们用

表示这个差异。然后,我们使用这些范数的逐像素 softmax 来加权每个参考特征的贡献。具体来说,我们计算最终输出如下: 

直观地说,在每个像素位置,我们希望使用相对于无参考输出做出最大贡献的参考特征。

4. 实验

5. 局限性

BootPIG 具有与相关方法相同的许多失败情况。具体而言,在许多情况下,BootPIG 生成可能无法呈现主体的细粒度特征,并且可能难以准确遵循提示。其中一些失败案例突显了学习更强大的细粒度特征的需求,而其他失败案例,如在某些条件下的提示保真度和文本呈现(见图 4 第 5 行),是从基础文本到图像模型继承的局限性。我们在补充材料中提供了更多失败案例的说明。此外,基础生成模型的弱点和偏见,包括有害的刻板印象,将通过 BootPIG 的生成延续。主体驱动的生成还可能导致在未经其同意的情况下生成个体的不受欢迎的图像。我们敦促使用这项技术的用户注意这些影响,并建议他们负责任地使用这种技术。 

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

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

相关文章

Future模式先给您提货单

Future模式是一种设计模式,用于在处理耗时操作时提高程序的响应性。 角色介绍: Main类: 负责向Host发出请求并获取数据的类。 Host类: 负责向请求返回FutureData的实例的类,起到调度的作用。 Data接口: 表示访问数据的方法的接口,由FutureD…

Unity中URP下逐顶点光照

文章目录 前言一、之前额外灯逐像素光照的数据准备好后,还有最后的处理二、额外灯的逐顶点光照1、逐顶点额外灯的光照颜色2、inputData.vertexLighting3、surfaceData.albedo 前言 在上篇文章中,我们分析了Unity中URP下额外灯,逐像素光照中聚…

视频汇聚/云存储平台EasyCVR级联上级播放后一直发流是什么原因?

可视化云监控平台/安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,同时…

iOS_Xcode_LLDB调试常用命令

文章目录 结构常用命令:1、流程控制:2、常用命令3、进程信息:4、寄存器:register5、镜像:image6、内存:memory7、符号断点:breakpoint8、内存断点:watchpoint9、Tips: 结…

常用软件安装

1.yum下载提速 1.wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 2. yum clean all 3.yum makecache 2.jdk yum install java-1.8.0-openjdk* -y yum update 时自动更新jdk版本 1.yum -y install yum-versionlock(如果…

C#实现带光标的截图

1,目的: 可通过热键实现带光标与不带光标两种模式的截图。 2,知识点: 快捷键的注册与注销。 [DllImport("user32.dll", SetLastError true)] public static extern bool RegisterHotKey(IntPtr hWnd, int id, KeyMo…

2023年春秋杯网络安全联赛冬季赛 Writeup

文章目录 Webezezez_phppicup Misc谁偷吃了外卖modules明文混淆 Pwnnmanagerbook Reupx2023 CryptoCF is Crypto Faker 挑战题勒索流量Ezdede 可信计算 Web ezezez_php 反序列化打redis主从复制RCE&#xff1a;https://www.cnblogs.com/xiaozi/p/13089906.html <?php c…

编码神仙插件Machinet AI GPT-4 Chat and Unit Tests

最近发现一个神仙插件Machinet AI GPT-4 Chat and Unit Tests&#xff0c;支持多个编译器安装使用。 我下载安装到Android Studio上&#xff0c;不需要登录直接可以使用。 可以直接提问&#xff0c;支持中文。

pyinstaller—PuLP投标价格预算项目打包过程踩坑

Python—pyinstaller打包PuLP踩坑 引言 在昨天的文章中&#xff0c;我们提到已经实现了相关代码的编写&#xff0c;即&#xff1a;通过Python环境和编辑器实现代码的运行&#xff0c;最终实现对数据的处理&#xff0c;得到想要的修改过后的项目结果。但是我们又面临着这样一个…

RK3588平台开发系列讲解(视频篇)RKMedia框架

文章目录 一、 RKMedia框架介绍二、 RKMedia框架API三、 视频处理流程四、venc 测试案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 RKMedia框架介绍 功能: VI(输…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-3 getBoundingClientRect()

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>getBoundingClientRect()</title> </head> <script>function getRect(){var obj document.getElementById(example); //获取元素对象var objR…

什么是数据库的三级模式两级映象?

三级模式两级映象结构图 概念 三级模式 内模式&#xff1a;也称为存储模式&#xff0c;是数据物理结构和存储方式的描述&#xff0c;是数据在数据库内部的表示方式。定义所有的内部记录类型、索引和文件组织方式&#xff0c;以及数据控制方面的细节。模式&#xff1a;又称概念…

第十八讲_HarmonyOS应用开发实战(实现电商首页)

HarmonyOS应用开发实战&#xff08;实现电商首页&#xff09; 1. 项目涉及知识点罗列2. 项目目录结构介绍3. 最终的效果图4. 部分源码展示 1. 项目涉及知识点罗列 掌握HUAWEI DevEco Studio开发工具掌握创建HarmonyOS应用工程掌握ArkUI自定义组件掌握Entry、Component、Builde…

数据目录驱动测试——深入探讨Pytest插件 pytest-datadir

在软件测试中,有效管理测试数据对于编写全面的测试用例至关重要。Pytest插件 pytest-datadir 提供了一种优雅的解决方案,使得数据目录驱动测试变得更加简单而灵活。本文将深入介绍 pytest-datadir 插件的基本用法和实际案例,助你更好地组织和利用测试数据。 什么是pytest-da…

Maven入门及其使用

目录 一、Maven入门 1.1 初识Maven 1.2 Maven的作用 1.2.1 依赖管理 1.2.2 统一项目结构 1.2.3 项目构建 1.3 Maven坐标 1.4 Maven仓库 1.4.1 Maven仓库概述 二、Maven的下载与安装 2.1 安装步骤 2.1.1 解压安装&#xff08;建议解压到没有中文、特殊字符的路径下。&#xff09…

基于 java+springboot+mybatis电影售票网站管理系统前台+后台设计和实现

基于 javaspringbootmybatis电影售票网站管理系统前台后台设计和实现 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承…

力扣hot100 字符串解码 栈 辅助栈

Problem: 394. 字符串解码 文章目录 思路&#x1f496; 辅助栈 思路 &#x1f468;‍&#x1f3eb; 路飞 &#x1f496; 辅助栈 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) class Solution {public String decodeString(String s…

华为二层交换机与防火墙配置上网示例

二层交换机与防火墙对接上网配置示例 组网图形 图1 二层交换机与防火墙对接上网组网图 二层交换机简介配置注意事项组网需求配置思路操作步骤配置文件相关信息 二层交换机简介 二层交换机指的是仅能够进行二层转发&#xff0c;不能进行三层转发的交换机。也就是说仅支持二层…

力扣日记1.27-【回溯算法篇】131. 分割回文串

力扣日记&#xff1a;【回溯算法篇】131. 分割回文串 日期&#xff1a;2023.1.27 参考&#xff1a;代码随想录、力扣 131. 分割回文串 题目描述 难度&#xff1a;中等 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可…

常量和C预处理器

本文参考C Primer Plus第四章 文章目录 符号常量printf()函数和scanf()函数 printf()函数使用printf()printf()的转换说明修饰符 1.符号常量 C头文件limits.h和float.h分别提供了与整数类型和浮点类型大小限制相关的详细信息。头文件都定义了一系列供实现使用的符号常量。例如&…