【论文笔记】| 定制化生成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日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…...

01-VMware16虚拟机详细安装
官网地址:https://www.vmware.com/cn.html 1.1 打开下载好的 .exe 文件, 双击安装。 1.2 点击下一步 1.3 先勾选我接受许可协议中的条款,然后点击下一步 1.4 自定义安装路径,注意这里的文件路径尽量不要包含中文,完成…...

二叉树-226.翻转链表-力扣(LeetCode)
一、题目解析 翻转可以理解为树的左右子树交换,从根到叶子节点,但是这里交换的是链接的指针,而不是单纯的交换值,当出现nullptr时,也是可以交换链接的,交换值的话就不行了。 二、算法原理 依旧的递归&…...

每日Prompt:治愈动漫插画
提示词 现代都市治愈动漫插画风格,现代女子,漂亮,长直发,20岁,豆沙唇,白皙,气质,清纯现代都市背景下,夕阳西下,一位穿着白色露脐短袖,粉色工装裤…...
Vue 学习路线图(从零到实战)
🎯 学习目标:掌握 Vue 并能独立开发中大型项目 ✅ 适合人群:前端初学者、想快速上手做项目的开发者、中小型团队成员 🧭 Vue 学习路线图(从零到实战) 第一阶段:基础语法 核心功能(…...

行为设计模式之Iterator(迭代器)
行为设计模式之Iterator(迭代器) 摘要: 迭代器模式(Iterator)是一种行为设计模式,它提供顺序访问聚合对象元素的方法,同时不暴露内部结构。该模式由迭代器接口(Iterator)、具体迭代器(ConcreteIterator)、聚合接口(Ag…...
CSS中justify-content: space-between首尾贴边中间等距(两端元素紧贴左右边缘,中间元素等距均匀分布)
justify-content: space-between; 是 CSS Flexbox 布局中的一个属性值,主要作用是在弹性容器的主轴方向上均匀分布子元素,具有以下核心特性: 作用效果: 首尾贴边 第一个子元素紧贴容器起始端 最后一个子元素紧贴容器结束端 中…...

Python训练营---DAY48
DAY 48 随机函数与广播机制 知识点回顾: 随机张量的生成:torch.randn函数卷积和池化的计算公式(可以不掌握,会自动计算的)pytorch的广播机制:加法和乘法的广播机制 ps:numpy运算也有类似的广播机…...

【ArcGIS Pro微课1000例】0072:如何自动保存编辑内容及保存工程?
文章目录 一、自动保存编辑内容二、自动保存工程在使用ArcGIS或者ArcGIS Pro时,经常会遇到以下报错,无论点击【发送报告】,还是【不发送】,软件都会强制退出,这时如果对所操作没有保存,就会前功尽弃。 此时,自动保存工作就显得尤为重要,接下来讲解两种常见的自动保存方…...
【2025CVPR】模型融合新范式:PLeaS算法详解(基于排列与最小二乘的模型合并技术)
本文深入解析ICLR 2025顶会论文《PLeaS: Merging Models with Permutations and Least Squares》,揭示模型融合领域突破性进展. 一、问题背景:模型合并的核心挑战 随着开源模型的爆发式增长,如何高效合并多个专用模型成为关键挑战。传统方法存在三大痛点: 初始化依赖…...

将单体架构项目拆分成微服务时的两种工程结构
一.独立Project 1.示意图 此时我们创建一个文件夹,在这个文件夹中,创建N个Project,每一个Project对应一个微服务,组成我们的最终的项目。 2.特点 适合那种超大型项目,比如淘宝,但管理负担比较重。 二.Mave…...