【论文笔记】| 定制化生成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日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

