音视频开发之旅(102)-ID一致性之PuLID原理及PuLID_Flux应用

目录

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的影响越小

图片

2.3.2 布局对齐loss

### ComfyUI PULID_FLUX_LL 实现与配置 #### 关于 ComfyUI_PuLID_Flux 和 ComfyUI_PuLID_Flux_ll ComfyUI 是一种用于生成图像的工作流工具,而 `ComfyUI_PuLID_Flux` 及其变体(如 `ComfyUI_PuLID_Flux_ll`)是一种基于 PuLID-Flux 方法的实现[^1]。PuLID-Flux 提供了一种新的方法来处理扩散模型中的条件输入和输出控制。 对于具体的 `ComfyUI_PuLID_Flux_ll` 实现,它可能是一个扩展版本或者针对特定需求优化后的模块化组件。然而,在官方文档或其他公开资源中并未明确提及该具体子项目的详细说明[^2]。因此,建议开发者通过源码仓库进一步探索其实现细节。 --- #### 安装指南 如果遇到无法安装的情况,可以尝试以下解决办法: 1. **克隆项目** 使用 Git 命令将项目从远程仓库拉取到本地环境: ```bash git clone https://github.com/balazik/ComfyUI-PuLID-Flux.git ``` 2. **依赖项管理** 确保已安装 Python 以及必要的库文件。通常情况下,可以通过运行以下命令完成依赖项安装: ```bash pip install -r requirements.txt ``` 3. **启动服务** 启动 ComfyUI 并加载自定义节点: ```bash python main.py --extra-model-paths ./models/custom/ ``` 上述操作完成后,应该可以在界面中看到新增的功能选项。 --- #### 配置教程 以下是关于如何配置并使用 `ComfyUI_PuLID_Flux` 或其他类似功能的一般流程: 1. **导入所需节点** 将下载好的插件放置在指定目录下(通常是 `/custom_nodes` 文件夹),重启程序即可自动识别新加入的内容。 2. **设置参数** 在工作区拖拽对应的节点至画布区域,并调整各项属性值以满足创作需求。例如调节时间步长、噪声强度等超参设定。 3. **执行推理过程** 连接好各部分逻辑关系之后点击“Run”,等待计算结束得到最终成果图样。 注意:由于不同版本间可能存在兼容性差异,请务必确认所使用的框架版本号一致后再继续后续步骤。 --- ```python from comfyui_pulid_flux import FluxProcessor processor = FluxProcessor() result_image = processor.apply_effects(input_image, params={"time_steps": 50}) ``` 以上代码片段展示了如何利用 API 接口调用核心算法进行数据处理的一个简单例子。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值