目录
1. 背景与问题
2. PuLID网络结构和原理
3. 效果对比与应用场景
4. ComfyUI_Pulid_Flux的应用实践
5. 源码分析
6. 资料
一. 背景与问题
在文生图(Text-to-Image,T2I)领域,保证人物ID的一致性,是一个关键技术,可以通过lora进行微调训练,但要针对每个人物进行训练成本还是比较高,ipadapter和InstantID在人物一致性方面取得了很好的进展,但是插入ID身份信息时往往会干扰原始模型的行为,导致生成的图像在风格,布局等方面和原始模型生成的图片有较大的差异.
字节团队提出了一种PuLID(Pure and Lightning ID Customization via Contrastive Alignment)的方案,通过对比对齐实现纯粹且快速的ID一致性,主要的亮点:
-
增加了对比对齐loss和ID loss,最大限度减少对原始模型的破坏并保证ID的一致性
-
提示词可以很好的引导生成过程
二. PuLID网络结构和原理
2.1.PuLID网络结构
双分支训练框架:PuLID采用了一个结合了常规的扩散模型分支(Conventional Diffusion branch)和快速文生图分支(Lightning T2I branch)的训练框架,通过对齐损失和精确的ID损失,减少对原始模型图像生成过程的干扰,同时实现精准的身份ID定制
ID Encoder:使用Arcface(对人脸进行识别特征提取) 和Clip-VIT(对图像特征提取)对采集的1.5M人像数据进行特征提取和MLP影射拼接,作为condition信息,指导模型生成和condition人脸相似的图像.
对比对齐(Contrastive alignment): 构建两条生成路径(具有相同的prompt和latent初始条件,差异点在于一条保护ID嵌入,一条不包含),使用对齐损失(alignment Loss)来语义和布局上对齐两条路径的UNet特征,指导模型在不干扰原始模型行为(保持风格,布局的一致性)的情况下嵌入ID信息.
精确ID损失(Accurate ID Loss):在ID插入后,PuLID从生成的图像(predict x0)提取提取人脸特征,和真实的人脸特征(C_id)计算ID损失,确保生成的图像在身份特征上的高保真度.
模型总的学习目标: 扩散模型Loss + 对齐Loss(语义对齐和布局对齐)+ID Loss,训练出生成ID一致性的高质量图像的模型.
下面我们详细介绍下每个Loss
2.2 扩散模型的Loss
扩散过程使用噪声调度器对噪声ε进行采样添加到原始数据x_0上,在时间步t生成一个x_t噪声样本;去噪过程使用由残差网络,自注意力机制和交叉注意力机制组成的UNet去噪模型ε_θ,将x_t,t和可选的附加条件C作为输入来预测噪声,对应公式如下:
2.3 对齐loss
对齐损失由语义对齐损失(Lalign-sem)和布局对齐损失(Lalign-layout)构成
2.3.1 语义对齐loss
Qt:不带ID embeding的UNet features
Qtid:带ID embeding的Unet features
是一个Attention(K,Q,Q),两个路径的插值越小,ID嵌入对原始模型的Unet的影响越小