(2024,初始化原型嵌入,扩散模型微调,类别特征正则化,对象特定损失)使用原型嵌入对文本到图像扩散进行对象驱动的单样本微调

Object-Driven One-Shot Fine-tuning of Text-to-Image Diffusion with Prototypical Embedding

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

目录

0. 摘要

3. 方法

3.1 概述

3.2 LDM

3.3 原型嵌入

3.4 类别特征正则化

3.5 对象特定损失

4. 实验

5. 局限性


0. 摘要

大规模文本到图像生成模型在文本到图像生成领域取得了显著进展,许多微调方法已经被提出。然而,这些模型通常在处理新颖对象时遇到困难,特别是在单样本场景中。我们提出的方法旨在以对象驱动的方式解决泛化和保真度方面的挑战,仅使用单个输入图像和对象特定的感兴趣区域。为了提高泛化能力并减轻过拟合,在我们的范例中,基于对象的外观和其类别初始化了一个原型嵌入,然后对扩散模型进行微调。在微调过程中,我们提出了一种类别特征正则化方法,以保留对对象类别的先验知识。为了进一步提高保真度,我们引入了对象特定的损失,这也可以用于植入多个对象。总体而言,我们提出的用于植入新对象的对象驱动方法可以与现有概念以及高度保真度和泛化性无缝集成。我们的方法优于一些现有的作品。代码将会发布。

 

3. 方法

3.1 概述

我们提出的方法侧重于用户在一张图像中指定的单个或多个对象的对象驱动微调,如图 3 所示。为了克服现有微调方法的局限性,我们使用原型嵌入作为初始化嵌入,并提出了一个正则化损失函数,以增加生成图像的多样性并有效地保留预训练模型的先前知识。此外,我们引入了一个对象特定的掩码损失函数,用于合成高保真度的图像,也可用于多对象植入。在本节中,我们详细解释了提出的方法。

3.2 LDM

3.3 原型嵌入

在微调扩散模型时,通常会训练对象的文本嵌入。然而,当训练数据仅为一张图像时,有时会导致过拟合,使网络仅基于对象的文本嵌入生成输出,而忽略其他文本条件。在实践中,适当初始化文本嵌入可以加速网络的拟合并缓解过拟合,例如文本反演(Textual Inversion,TI)[11] 根据对象类别初始化文本嵌入。在这项工作中,为了实现更有效的初始化,我们基于输入图像的嵌入和类别名称的文本嵌入(例如,狗)找到原型嵌入。在开始扩散模型的训练之前,我们通过以下方式计算原型嵌入:

其中,𝑥 是训练图像,使用 CLIP [24] 的图像编码器 I 和文本编码器 T 来获取整个图像嵌入 I(𝑥),对象掩码图像嵌入 I(𝑥_𝑚),T(𝑐_𝑐) 是对象的类别名称文本嵌入,𝜃_𝑚 是嵌入融合的方式,例如平均。我们的目标是通过这个损失函数获得一个原型文本嵌入 T(𝑐_𝑝) ,它与目标图像嵌入和类别文本嵌入相似,作为初始化。

3.4 类别特征正则化

此外,为了保留预训练模型中对象类别的合成能力,我们在训练过程中使用类别特征正则化调整文本嵌入。类别特征损失的公式如下:

其中,T(𝑐_𝑐) 是对象的类别名称文本嵌入,𝛼_𝑐𝑙 表示余弦损失的权重,𝑝 ∼ 𝑈𝑛𝑖(0, 1),而 𝑝_𝑐𝑙 是可调的阈值。在这个背景下,需要预先确定每个对象的类别名称。进一步的实验表明,引入这个损失函数可以提高合成中的泛化能力。 

3.5 对象特定损失

我们的任务是将选定的对象植入模型的输出领域,并与唯一标识符绑定。注意,所选对象通常是训练图像的部分而不是整个图像,因此我们提出了选定对象植入的对象特定损失,选定对象的保真度被提高。首先,我们使用图像分割算法,例如 SAM [17],来获取对象的掩码图像 𝑚。这些掩码图像被引入潜在空间和训练过程中。单对象植入的训练如下:

其中,𝑐_𝑚 是掩蔽的对象的文本条件,对象目标噪声 ˜𝜖,以及被掩蔽的潜在表示 ˜𝑧。我们的目标是在执行损失计算时专注于掩码区域。

(注:˜𝜖 是参考的对象区域噪声与预测的对象以外区域的噪声的组合)

此外,对于多对象植入,我们进行对象特定损失函数的组合,假设有一组 𝑟 个要植入的对象,并且每次取 𝑘 个不同的对象的子集 𝑆,𝑘 组合的数量是 𝐶^𝑘_𝑛。因此,在一次训练的步骤中,总体对象特定损失为: 

请注意,对于每个掩码,文本条件 𝑐_𝑚,𝑖 是不同的,而全局文本条件 𝑐 基于所有对象的唯一标识符。 

4. 实验

5. 局限性

我们还发现我们的方法存在一些局限性,例如对于具有复杂边缘的对象,掩码区域存在错误,有时会导致生成图像边缘质量的降低。此外,在植入较小对象时,生成图像的保真度稍有降低。为了解决上述问题,未来的工作将致力于改进获取掩码图像的方式,并为对象添加多尺度感知机制。 

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

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

相关文章

面试官要你介绍项目,怎么说?

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

Golang数据结构性能优化实践

仅仅通过对struct字段重新排序,优化内存对齐方式,就可以获得明显的内存和执行效率提升。原文: How to Speed Up Your Struct in Golang Mike Pexels 如果你有Golang开发经验,一定定义过struct类型。 但可能你不知道,通过简单的重新…

数据据库八之 视图、触发器、事务

【零】数据准备 【1】创建表 (1)部门表 d_id是部门的编号d_name是部门的名字 # 确保表不存在 drop table if exists department; # 创建表 create table department( d_id int auto_increment primary key, d_name varchar(6) )auto_increment 501 …

【linux|java应用报错】Cannot allocate memory

启动一个java应用报Cannot allocate memory,并且会生产一个hs_ess_pid.log文件。 文件内容为: #内存不足,Java运行时环境无法继续。 #本机内存分配(mmap)无法映射4294967296字节以提交保留内存。 【排查】 1、尝试使…

Mysql-事务(隔离级别,事务底层原理,MVCC)

什么是事务?有哪些特性? 事务:事务指的是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败。 事务特性: 原子性(Atomicity): 原子性是指事务是一个不…

Python tkinter (11) —— Frame控件

本文主要是Python tkinter Frame框架控件介绍及使用简单示例。 tkinter系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 Python tkint…

大健康行业千城万企信用建设工作启动大会在京召开

9月19日,为响应商务部、中宣部、国家发改委等13个部门共同举办的“诚信兴商宣传月”活动,中国国际电子商务中心所属北京国富泰信用管理有限公司联合北京华商国医堂集团及旗下东方岐黄商学院,北京华商国医堂中医药研究院举办的共筑信用月&…

Mov转MP4怎么转换?如何播放mov视频?

MOV文件格式的使用场景 MOV文件格式以其支持多种媒体数据类型的特性而闻名,包括视频、音频、文本、动画等。它常用于存储包含视频剪辑、电影、音频轨道等多媒体元素的文件。由于其在质量和编辑方面的优越性,MOV文件在电影制作、广告宣传、多媒体演示等领…

阿里二面:SpringBoot同时可以处理多少个请求?直接懵了。。。

SpringBoot以其简洁高效的开发方式和强大的内嵌容器特性,为开发者提供了构建高性能后端服务的便利。然而,当面临高并发场景时,理解并合理配置Spring Boot应用以达到最佳的并发处理能力至关重要。在Spring Boot中,应用程序对HTTP请…

Docker最新超详细版教程通俗易懂(基础版)

Docker概述 概念:容器虚拟化技术,系统平滑移植,解决了运⾏环境和配置问题的软件容 器,⽅便做持续集成并有助于整体发布的容器虚拟化技术 意义:Docker的出现使得Docker得以打破过去程序即应⽤的观念,透过…

Flink中的时间语义和TTL

时间语义 事件时间(Event Time) 事件时间是数据生成的时间,是数据流中每个元素或者每个事件自带的时间属性,一般是事件发生的时间,在实际项目中作为前端的一个属性嵌入。在理想情况下,数据应当按照事件时…

TeX:一款功能强大的Telegram安全监控与管理工具

关于TeX TeX是一款功能强大的Telegram安全监控与管理工具,该工具专为Telegram设计,可以实现针对Telegram的安全监控与管理。 TeX旨在帮助安全研究人员、调查人员和执法人员收集和处理针对网络犯罪分子的取证信息,其中包括网络犯罪、欺诈攻击…

vue3-深入组件-透传属性

透传属性 (透传 attribute) 什么是透传属性(透传 attribute)? 传递给一个组件,却没有被该组件声明为 props 或 emits 的 attribute 或者是事件监听器,例如 class style id 等。 属性继承 当一个组件以单…

STM32 1-5

目录 STM32简介 点亮PC13LED GPIO LED闪烁 LED流水灯 按键控制LED 光敏传感器控制蜂鸣器 OLED调试工具 OLED显示 EXTI外部中断 对射式红外传感器计次 旋转编码器计次 继续 STM32简介 点亮PC13LED main.c #include "stm32f10x.h" // D…

【linux】复制cp和硬连接、软连接的区别? innode 关系?

1.命令: cp -r [源文件或目录] [目的目录] #复制 ln -s [被链接的文件] [链接的目录/名称] #软连接 ln [被链接的文件] [链接的目录/名称] #硬连接 注:cp -r 会把所有source当作普通文件(regular文件)&#x…

代码随想录算法训练营第35天 | 860.柠檬水找零 406.根据身高重建队列 452.用最少数量的箭引爆气球

柠檬水找零 局部最优&#xff1a;收到20元时优先找零10元5元&#xff0c;不够再找零3个5元&#xff0c;因为5元可以找零20和10&#xff0c;更有用。全局最优&#xff1a;完成所有的找零。 class Solution { public:bool lemonadeChange(vector<int>& bills) {int fi…

Flink问题解决及性能调优-【Flink rocksDB读写state大对象导致背压问题调优】

RocksDB是Flink中用于持久化状态的默认后端&#xff0c;它提供了高性能和可靠的状态存储。然而&#xff0c;当处理大型状态并频繁读写时&#xff0c;可能会导致背压问题&#xff0c;因为RocksDB需要从磁盘读取和写入数据&#xff0c;而这可能成为瓶颈。 遇到的问题 Flink开发…

多线程编程3——线程的状态

一、状态是线程的状态 状态是PCB中与调度相关的属性&#xff0c;线程是CPU调度执行的基本单位。所以&#xff0c;状态是线程的属性。谈到状态&#xff0c;考虑的都是线程的状态&#xff0c;不是进程&#xff01;&#xff01;&#xff01; 二、在Java中&#xff0c;线程的状态…

作业车间调度问题:P还是NP

获取更多资讯&#xff0c;赶快关注上面的公众号吧&#xff01; 文章目录 基本概念多项式时间指数时间 P问题&#xff08;多项式问题&#xff09;NP问题&#xff08;非确定性多项式问题&#xff09;暴力穷举法动态规划 P与NP关系&#xff1a;作业车间调度问题是典型的NP难问题 …

将vite项目(vue/react)使用vite-plugin-pwa配置为pwa应用,只需要3分钟即可

将项目配置为pwa模式&#xff0c;就可以在浏览器里面看到安装应用的选项&#xff0c;并且可以将web网页像app一样添加到手机桌面或者pad桌面上&#xff0c;或者是电脑桌面上&#xff0c;这样带来的体验就像真的在一个app上运行一样。为了实现这个目的&#xff0c;我们可以为vue…