【论文笔记】| 定制化生成PuLID
PuLID: Pure and Lightning ID Customization via Contrastive Alignment
ByteDance, arXiv:2404.16022v1
Theme: Customized generation
原文链接:https://arxiv.org/pdf/2404.16022
Main Work
提出了 Pure 和 Lightning ID 定制 (PuLID),这是一种用于文本到图像生成的一种新颖的无调整 ID 定制方法。通过将Lightning T2I分支与标准扩散分支相结合,PuLID引入了对比对齐损失和准确的ID损失,最大限度地减少对原始模型的破坏,并确保较高的ID保真度。
ID插入前后图像元素(如背景、照明、组成和样式)尽可能地保持一致。
BackGround
作为定制文本到图像 (T2I) 生成的特殊类别,identity(ID)定制允许用户调整预训练的 T2I 扩散模型以与其个性化 ID 对齐。
- Tuning-based Text-to-image ID Customization. 用用户提供的相同ID在几个图像上微调某些参数,从而将ID嵌入到生成模型中(计算成本高)
- Tuning-free Text-to-image ID Customization. 在扩展肖像数据集上预训练ID适配器,使用编码器来提取 ID 特征。然后将提取的特征以特定方式集成到基本扩散模型中(例如,嵌入到交叉注意力层中)。但这种方法面临两种挑战(其实就是如何去平衡加入的ID强度):
- Insertion of ID disrupts the original model’s behavior.
- 首先,理想的ID插入应该只改变与ID相关的方面(迁移粒度),如人脸、发型和肤色,而图像元素不直接与特定身份相关联,如背景、光照、组成和风格,应该与原始模型的行为一致。
- 其次,在 ID 插入之后,它仍然应该保留原始 T2I 模型遵循提示的能力(编辑能力)。在 ID 定制的背景下,这通常意味着通过提示改变 ID 属性(例如年龄、性别、表情和头发)、方向和配件(例如眼镜)的能力。
- Lack of ID fidelity. Diffusion Model引入ID Loss的难度,当前仅在噪声较小的时间步计算 ID 损失或使用额外的推理步骤预测 x 0 x_0 x0,但仍有改进的空间。
- Insertion of ID disrupts the original model’s behavior.
作者在标准的扩散去噪训练分支旁边引入了一个Lightning T2I分支。利用最近的快速采样方法,Lightning T2I分支可以从具有有限和可管理步数的纯噪声生成高质量的图像。通过这个额外的分支,可以同时解决上述两个挑战。在这个分支中,作者结合了对比对齐损失和 ID 损失,以最小化原始模型上 ID 信息的污染,同时确保保真度。
Method
框架的上半部分展示了传统的扩散训练过程。从同一图像中提取的面部被用作ID条件信息输入。
框架的下半部分展示了PuLID(Text-to-Image)训练分支。该分支利用最近的快速采样方法,通过几次迭代(本文中为4步)从纯噪声逐步去噪到生成高质量的图像。在这个分支中,构建了有和没有ID-Embedding嵌入的对比路径。同时引入了对齐损失,用于控制模型如何在不干扰原始模型行为的情况下插入ID条件。
总的损失函数为:
L = L d i f f + L a l i g n + λ i d L i d . \mathcal{L}=\mathcal{L}_{\mathrm{diff}}+\mathcal{L}_{\mathrm{align}}+\lambda_{\mathrm{id}}\mathcal{L}_{\mathrm{id}}. L=Ldiff+Lalign+λidLid.
1. ID embedding的引入
在扩散过程中,根据预定义的噪声调度对噪声ε进行采样并添加到数据样本 x 0 x_0 x0中。这个过程在时间步 t t t产生一个噪声样本 x t x_t xt。相反,在去噪过程中,去噪模型 ε θ ε_θ εθ 将 x t x_t xt、 t t t 和可选的附加条件 C C C作为输入来预测添加的噪声,优化过程可以表示为:
L d i f f = E x 0 , ϵ , t ( ∥ ϵ − ϵ θ ( x t , t , C ) ∥ ) . \mathcal{L}_{\mathrm{diff}}=\mathrm{E}_{x_0,\epsilon,t}(\|\epsilon-\epsilon_\theta(x_t,t,C)\|). Ldiff=Ex0,ϵ,t(∥ϵ−ϵθ(xt,t,C)∥).
ε θ ε_θ εθ主要由残差网络、自我注意层和交叉注意层组成的UNET。提示作为一种条件,嵌入到遵循注意力机制的交叉注意力层中。ID条件 C i d C_{id} Cid通常是从目标图像x0中裁剪出来的。在这种情况下,ID条件与提示和UNET特征完全对齐,意味着在训练过程中,ID条件并不构成对T2I扩散模型的污染,本质上还是一个重建训练任务。
{ Attention ( Q , K , V ) = Softmax ( Q K T d ) V K = W K τ t x t ( C t x t ) ; V = W V τ t x t ( C t x t ) , \left\{\begin{array}{l}\text{Attention}(Q,K,V)=\text{Softmax}(\frac{QK^T}{\sqrt{d}})V\\K=\text{W}_K\tau_{txt}(C_{txt});V=\text{W}_V\tau_{txt}(C_{txt}),\end{array}\right. {Attention(Q,K,V)=Softmax(dQKT)VK=WKτtxt(Ctxt);V=WVτtxt(Ctxt),
Q \mathrm{Q} Q 从 UNET 图像特征中投影, τ t x t \tau_{txt} τtxt 表示一个预训练的语言模型,将提示 C t x t C_{txt} Ctxt 转换为文本特征, W K \mathbf{W}_K WK 和 W V \mathbf{W}_V WV 是可学习的线性层。
在测试过程中,当我们提供与ID条件发生冲突或未对齐的提示语,例如改变ID属性或更换风格时,这些方法往往会失败。
2. 通过对比对齐实现无污染的ID引入
文章中提出了一种直观的解决方案,即在常规的扩散去噪训练分支之外引入一个 Lightning T2I 训练分支。与测试设置类似,Lightning T2I分支从纯噪声开始,并通过完整的迭代去噪步骤直到达到 x 0 x_0 x0,可以观察到嵌入ID后图像的元素是否发生变化,以及它是否仍然具有提示跟随能力。并且需要的迭代次数是有限且可控的。
作者使用具有 4 个去噪步骤的 SDXL-Lightning,并准备了一个具有挑战性的提示列表,可以很容易地揭示污染
作者构建了从同一提示和初始潜在开始的对比路径。
- 一条路径仅由提示为条件,UNET 特征表示为 Q t Q_t Qt
- 另一条路径同时使用 ID 和提示作为条件,UNET 特征表示为 Q t i d Q _{tid} Qtid
通过在语义上对齐这两个路径上的UNET特征,该模型将学习如何在不影响原始模型行为的情况下嵌入ID。实际上,对齐是在所有层和时间步上进行的。
核心通过构建对齐损失来解决:对齐损失由两个组成部分构成:语义对齐损失(Lalign-sem)和布局对齐损失(Lalign-layout)。我们使用文本特征K来查询UNET特征Q。对于K中的每个token,它将计算与Q的相关性,并进一步基于相关性矩阵聚合Q。这里的注意力机制可以表示为 A t t e n t i o n ( K , Q , Q ) Attention(K, Q, Q) Attention(K,Q,Q),可以解释为UNET 特征对提示的响应。
语义对齐损失背后的洞察力很简单:如果 ID 的嵌入不影响原始模型的行为,那么 UNET 特征对提示的响应应该在两条路径中是相似的。
L align-sem = ∥ Softmax ( K Q t i d T d ) Q t i d − Softmax ( K Q t T d ) Q t ∥ 2 . \mathcal{L}_{\text{align-sem}}=\left\|\text{Softmax}(\frac{KQ_{tid}^T}{\sqrt{d}})Q_{tid}-\text{Softmax}(\frac{KQ_t^T}{\sqrt{d}})Q_t\right\|_2. Lalign-sem= Softmax(dKQtidT)Qtid−Softmax(dKQtT)Qt 2.
Lalign-sem的引入显著减轻了ID信息污染模型行为的问题。然而,它不能保证布局的一致性,因此增加了一个布局对齐损失Lalign-layout,其定义如下:
L align-layout = ∥ Q t i d − Q t ∥ 2 . \mathcal{L}_{\text{align-layout}}=\left\|Q_{tid}-Q_t\right\|_2. Lalign-layout=∥Qtid−Qt∥2.
最终完整损失函数的构建为:
L a l i g n = λ a l i g n − s e m L a l i g n − s e m + λ a l i g n − l a y o u t L a l i g n − l a y o u t , \mathcal{L}_{\mathrm{align}}=\lambda_{\mathrm{align-sem}}\mathcal{L}_{\mathrm{align-sem}}+\lambda_{\mathrm{align-layout}}\mathcal{L}_{\mathrm{align-layout}}, Lalign=λalign−semLalign−sem+λalign−layoutLalign−layout,
3. 更准确的ID保真损失函数
在训练期间引入 ID 损失,但仅使用单步直接预测扩散训练过程中第 t 个时间步的 x 0 x_0 x0,这将产生嘈杂且有缺陷的预测 x 0 x_0 x0,从而导致 ID 损失的计算不准确。因此一般仅在噪声较小的阶段应用 ID 损失。但如果只计算部分时间步长,会影响全部有效性。
本实验在引入的 Lightning T2I 分支上计算ID损失 L i d \mathcal{L}_{\mathrm{id}} Lid,定义为:
L i d = C o s S i m ( ϕ ( C i d ) , ϕ ( L − T 2 I ( x T , C i d , C t x t ) ) ) , \mathcal{L}_{\mathrm{id}}=CosSim\left(\phi(C_{id}),\phi(\mathrm{L-T2I}(x_T,C_{id},C_{txt}))\right), Lid=CosSim(ϕ(Cid),ϕ(L−T2I(xT,Cid,Ctxt))),
其中 x T x_T xT表示纯噪声,L-T2I 表示Lighting T2I 分支, ϕ \phi ϕ表示人脸识别主干。为了生成照片逼真的人脸,我们将提示 C t x t C_{txt} Ctxt固定为“portrait, color, cinematic”。
Experiments
三阶段训练:
- 使用传统的扩散损失 L d i f f \mathcal{L}_{\mathrm{diff}} Ldiff来训练模型。
- 加入ID loss L i d \mathcal{L}_{\mathrm{id}} Lid (arcface-50),在不考虑对原始模型的污染的情况下努力实现最大 ID 保真度。
- 添加对齐损失 L a l i g n \mathcal{L}_{\mathrm{align}} Lalign来微调模型。
定量比较。跨不同基础模型和数据集的 ID 余弦相似度与 SOTA 方法的比较。
表 2 说明了与基线相比,使用朴素 ID 损失(直接从当前时间步预测 x0)和本文引入的更准确的 ID 损失 Lid 来提高 ID 保真度。
|
![]() | ![]() |
---|
参考文献
Guo Z, Wu Y, Chen Z, et al. PuLID: Pure and Lightning ID Customization via Contrastive Alignment[J]. arXiv preprint arXiv:2404.16022, 2024.
相关文章:

【论文笔记】| 定制化生成PuLID
PuLID: Pure and Lightning ID Customization via Contrastive Alignment ByteDance, arXiv:2404.16022v1 Theme: Customized generation 原文链接:https://arxiv.org/pdf/2404.16022 Main Work 提出了 Pure 和 Lightning ID 定制 (PuLID),这是一种用于…...
P1638 逛画展
题目描述 博览馆正在展出由世上最佳的 𝑚 位画家所画的图画。 游客在购买门票时必须说明两个数字,𝑎 和 𝑏,代表他要看展览中的第 𝑎 幅至第 𝑏 幅画(包含 𝑎,…...
Linux(centos)常用命令
Linux(Centos)常用命令使用说明文档 切换到/home目录下 使用cd命令切换目录,例如: cd /home列出/home目录下的所有文件 使用ls命令列出目录下的文件和子目录,例如: ls /home新建目录dir1 使用mkdir命…...
从入门到精通:掌握Scrapy框架的关键技巧
在当今信息爆炸的时代,获取并利用网络数据成为了许多行业的核心竞争力之一。而作为一名数据分析师、网络研究者或者是信息工作者,要想获取网络上的大量数据,离不开网络爬虫工具的帮助。而Scrapy框架作为Python语言中最为强大的网络爬虫框架之…...
Vue3按顺序调用新增和查询接口
Vue3按顺序调用新增和查询接口 一、前言1、代码 一、前言 如果你想将两个调用接口的操作封装在不同的方法中,你可以考虑将这两个方法分别定义为异步函数,并在需要时依次调用它们。以下是一个示例代码: 1、代码 <template><div>…...
sizeof的了解
32位编译器 qDebug() << "int:" << sizeof(int);qDebug() << "char:" << sizeof(char);qDebug() << "char*:" << sizeof(char*); 字节数: int: 4 char: 1 char*: 4 64位编译器 字节数&#…...
PostgreSQL 教程
## PostgreSQL 教程 ### 1. PostgreSQL 概述 PostgreSQL 是一个开源的对象关系型数据库管理系统(ORDBMS),以其高扩展性和合规性闻名,支持 SQL 和 JSON 查询。 ### 2. 安装与配置 - **下载与安装**:从 PostgreSQL 官方…...

《基于Jmeter的性能测试框架搭建》改进一
《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。 Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。解决方案:自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…...
计算机二进制表示和存储各种数据
目录 计算机二进制是什么 计算机中二进制数作用 不同数据的表示和存储 数字 文字 图片 音频 视频 计算机的中数据的显示和存储 计算机二进制是什么 计算机二进制数:计算机里存储的一切都是以二进制的0和1来表示。二进制是计算机使用的数字编码系统&#x…...

玩机社区 - 2024年最美社区源码开源
玩机社区 - 2024年最美社区源码开源 教程源码文档都内置到压缩包了 https://pan.baidu.com/s/1xwcscTne-JMbmKEntiuAuA?pwd78oi...
Linux系统——面试题分享
目录 1.现在给你三百台服务器,你怎么对他们进行管理? 2.简述 raid0 raid1 raid5 三种工作模式的工作原理及特点 2.1RAID 0 ——可以是一块盘和 N 个盘组合 2.2RAID 1 ——只能2块盘,盘的大小可以不一样,以小的为准 2.3RAID 5 …...

谈恋爱没经验?那就来刷谈恋爱经验宝宝吧
❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…...

element-ui输入框和多行文字输入框字体不一样解决
element-ui的type"textarea"的字体样式与其他样式不同 <el-input type"textarea"></el-input> <el-input ></el-input>设置: .el-textarea__inner::placeholder {font-family: "Helvetica Neue", Helvetic…...

(Java企业 / 公司项目)配置Linux网络-导入虚拟机
公司给了我一个IP地址 ,提供了一个虚拟机或者自己搭建虚拟机,还有提供登录的账号密码 可以查看我之前的文章 VMware Workstation Pro 17虚拟机超级详细搭建(含redis,nacos,docker, rabbitmq,sentinel&…...

java的unsafe
在Java中,sun.misc.Unsafe 是一个强大且危险的类,它提供了一些直接操作内存、对象和线程的底层功能。这个类通常不鼓励普通开发者使用,因为它绕过了Java语言的一些安全性和内存管理机制,可能会导致难以追踪的错误和安全漏洞。 Un…...

起底震网病毒的来龙去脉
2010年,震网病毒被发现,引起世界哗然,在后续的10年间,陆陆续续有更多关于该病毒的背景和细节曝光。今年,《以色列时报》和《荷兰日报》又披露了关于此事件的更多信息,基于这些信息,我们重新梳理…...

[杂项]优化AMD显卡对DX9游戏(天谕)的支持
目录 关键词平台说明背景RDNA 1、2、3 架构的显卡支持游戏一、 优化方法1.1 下载 二、 举个栗子(以《天谕》为例)2.1 下载微星 afterburner 软件 查看游戏内信息(可跳过)2.2 查看D3D9 帧数2.3 关闭游戏,替换 dll 文件2…...

服务器没有图形界面没有显示器怎么办
可以用vnc。 vnc是开元的。什么是vnc? 使用vnc 下载vnc和vncserver命令。 每生成一个图形界面就叫做开启session会话。 vnc相关命令: start a new session: vncserver。 如果没有会话,一般从:1开始 端口5901 vncserver :2 #指定会话为:2 端…...

标准化软件实施方案(直接套用即可)
软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取:(本文末个人名片也可直接获取)软件开发全套资料_数字中台建设指南-CSDN博客 软件产品&am…...

云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会
作为中马建交50周年官方重点推荐的活动之一,2024中国智能科技与文化展览会(第四届)于5月20至21日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...