当前位置: 首页 > news >正文

【深度学习】PuLID: Pure and Lightning ID Customization via Contrastive Alignment

论文:https://arxiv.org/abs/2404.16022
代码:https://github.com/ToTheBeginning/PuLID

文章目录

  • Abstract
  • Introduction
  • Related Work
  • Methods

Abstract

我们提出了一种新颖的、无需调整的文本生成图像ID定制方法——Pure and Lightning ID customization(PuLID)。通过将Lightning T2I分支与标准扩散分支结合,PuLID引入了对比对齐损失和准确ID损失,最大程度地减少了对原始模型的干扰,确保了高ID保真度。实验表明,PuLID在ID保真度和可编辑性方面都表现出色。PuLID的另一个吸引人的特性是,在插入ID前后,图像的元素(例如背景、光照、构图和风格)尽可能保持一致。代码和模型将会发布在https://github.com/ToTheBeginning/PuLID。

Introduction

作为一种特定类别的定制化文本生成图像(T2I)方法【5, 30, 12, 17, 40, 42】,身份(ID)定制允许用户适配预训练的T2I扩散模型,以符合他们的个性化ID。一类方法【5, 30, 12, 17】通过在用户提供的同一ID的若干图像上微调某些参数,从而将ID嵌入到生成模型中。这些方法催生了许多流行的AI肖像应用程序,如PhotoAI和EPIK。

尽管基于微调的解决方案取得了可观的成果,但每个ID的定制需要耗费数十分钟的微调时间,因此使个性化过程经济成本较高。另一类方法【41, 42, 2, 36, 20, 19, 38】则放弃了每个ID微调的必要性,转而在一个庞大的肖像数据集上预训练一个ID适配器【11, 24】。这些方法通常利用编码器(例如CLIP图像编码器【27】)提取ID特征。然后,将提取的特征以特定方式(例如嵌入到交叉注意力层中)整合到基础扩散模型中。尽管这些无需微调的方法效率极高,但面临两个显著挑战。

  • ID插入会破坏原始模型的行为。一个纯粹的ID信息嵌入应具有两个特征。首先,理想的ID插入应仅改变与ID相关的方面,如面部、发型和肤色,而与特定身份不直接相关的图像元素,如背景、光照、构图和风格,应该与原始模型的行为保持一致。据我们所知,以前的工作并未关注这一点。尽管一些研究【42, 38, 20】展示了生成风格化ID的能力,但与ID插入前的图像相比,风格明显退化(如图1所示)。具有较高ID保真度的方法往往会导致更严重的风格退化。

其次,在ID插入后,仍应保持原始T2I模型遵循提示的能力。在ID定制的背景下,这通常意味着能够通过提示改变ID属性(例如年龄、性别、表情和发型)、方向和配件(例如眼镜)。为了实现这些特性,目前的解决方案通常分为两类。第一类涉及增强编码器。IPAdapter【42, 1】从早期版本的CLIP提取网格特征转向利用面部识别骨干【4】提取更抽象和相关的ID信息。尽管编辑性有所改善,但ID保真度还不够高。InstantID【38】通过包括一个额外的ID和标志控制网【43】来进行更有效的调节。尽管ID相似性显著提高,但却牺牲了一定程度的编辑性和灵活性。第二类方法【20】通过构建按ID分组的数据集支持非重建训练以增强编辑性;每个ID包含若干图像。然而,创建这样的数据集需要付出巨大的努力。而且,大多数ID对应于有限数量的名人,这可能会限制其对非名人的效果。

  • 缺乏ID保真度。考虑到我们对面部的高度敏感性,在ID定制任务中保持高度的ID保真度至关重要。受GAN时代【7】面部生成任务【29, 39】成功经验的启发,提高ID保真度的一个直接想法是在扩散训练中引入ID损失。然而,由于扩散模型的迭代去噪特性【10】,实现准确的x0需要多个步骤。以这种方式训练所消耗的资源可能高得令人望而却步。因此,一些方法【2】直接从当前时间步预测x0,然后计算ID损失。然而,当当前时间步较大时,预测的x0往往嘈杂且有缺陷。在这种条件下计算ID损失显然不准确,因为面部识别骨干【4】是在照片级真实感图像上训练的。尽管提出了一些变通方法,如仅在噪声较小的时间步计算ID损失【25】或通过额外的推理步骤预测x0【45】,但仍有改进空间。

在这项工作中,为了在减少对原始模型行为影响的同时保持高ID保真度,我们提出了PuLID,一种通过对比对齐实现的纯粹和快速的ID定制方法。具体而言,我们引入了一个Lightning T2I分支以及标准扩散去噪训练分支。利用最近的快速采样方法【23, 32, 21】,Lightning T2I分支可以在有限且可控的步骤内从纯噪声生成高质量图像。通过这个额外的分支,我们可以同时解决上述两个挑战。首先,为了最小化对原始模型行为的影响,我们构建了一个对比对,其中包括相同提示和初始潜在变量,有和没有ID插入。在Lightning T2I过程中,我们在语义上对齐对比对的UNet特征,指导ID适配器如何插入ID信息而不影响原始模型的行为。其次,由于我们现在在ID插入后有了精确和高质量的生成x0,我们可以自然地提取其面部嵌入并与真实面部嵌入计算准确的ID损失。值得一提的是,这种x0生成过程与实际测试环境一致。我们的实验表明,在这种情况下优化ID损失可以显著提高ID相似性。

贡献总结如下:(1) 我们提出了一种无需调整的方法,即PuLID,在减轻对原始模型行为影响的同时保持高ID相似性。(2) 我们引入了一个Lightning T2I分支和常规扩散分支。在这个分支中,我们结合了对比对齐损失和ID损失,以最小化ID信息对原始模型的污染,同时确保保真度。与当前主流方法提高ID编码器或数据集相比,我们提供了新的视角和训练范式。(3) 实验表明,我们的方法在ID保真度和可编辑性方面实现了SOTA性能。此外,与现有方法相比,我们的方法对模型的ID信息侵扰较少,使得我们的方法在实际应用中更加灵活。

Related Work

基于微调的文本生成图像ID定制。文本生成图像模型的ID定制旨在使预训练模型能够生成特定身份的图像,同时遵循文本描述。两个开创性的基于微调的工作【5, 30】努力实现这一目标。Textual Inversion【5】为用户提供的ID优化了一个新的词嵌入,而Dreambooth【30】则通过微调整个生成器进一步增强了保真度。随后,各种方法【12, 17, 8, 35】在生成器和嵌入空间探索了不同的微调范式,以实现更高的ID保真度和文本对齐。尽管这些进展显著,但每个ID的耗时优化过程(至少需要几分钟)限制了其更广泛的应用。

无需微调的文本生成图像ID定制。为了减少在线微调所需的资源,一系列无需微调的方法【36, 38, 25, 42, 20, 41, 3】应运而生,这些方法直接将ID信息编码到生成过程中。这些方法面临的主要挑战是,在保持高ID保真度的同时,尽量减少对T2I模型原始行为的干扰。为了最小化干扰,一个可行的方法是使用面部识别模型【4】提取更抽象和相关的面部领域特定表示,就像IP-Adapter-FaceID【1】和InstantID【38】所做的那样。包含同一ID的多张图像的数据集可以促进共同表示的学习【20】。尽管这些方法取得了一定的进展,但它们还没有从根本上解决干扰问题。值得注意的是,ID保真度较高的模型往往会对原始模型的行为造成更大的干扰。在本研究中,我们提出了一种新的视角和训练方法来解决这一问题。有趣的是,该方法不需要按ID分组的数据集,也不局限于特定的ID编码器。

为了提高ID保真度,以前的工作【16, 2】使用了ID损失,这一做法受到了先前基于GAN的工作【29, 39】的启发。然而,在这些方法中,通常在当前时间步使用单一步骤直接预测x0,这往往会导致嘈杂和有缺陷的图像。这些图像对于面部识别模型【4】来说并不理想,因为它们是在真实世界的图像上训练的。PortraitBooth【25】通过仅在噪声较小的阶段应用ID损失来缓解这一问题,但这忽略了早期步骤中的损失,从而限制了其整体有效性。Diffswap【45】通过使用两步而不是一步来获得更好的预测x0,尽管这种估计仍然包含嘈杂的伪影。在我们的工作中,通过引入Lightning T2I训练分支,我们可以在更准确的设置中计算ID损失。

我们注意到一个同时进行的工作LCM-Lookahead【6】,它也使用了快速采样技术(即LCM【23】)来实现更精确的x0预测。然而,该工作与我们的工作有几个不同之处。首先,LCM-Lookahead在传统的扩散去噪过程中对x0进行精确预测,而我们从纯噪声开始,迭代去噪到x0。我们的方法与实际测试设置更一致,使得ID损失的优化更加直接。其次,为了增强提示编辑能力,LCM-Lookahead利用了SDXL-Turbo【32】的模式崩溃现象来合成一致的ID数据集。然而,合成的数据集可能面临多样性和一致性挑战,作者发现,使用该数据集训练可能比其他方法更频繁地产生风格化结果。相比之下,我们的方法不需要按ID分组的数据集。相反,我们通过一种更基础和直观的方法,即对比对齐,来增强提示跟随能力。

扩散模型的快速采样。在实践中,扩散模型通常在1000步内进行训练。在推理过程中,这种冗长的过程可以借助高级采样方法【33, 22, 15】缩短到几十步。最近基于蒸馏的工作【21, 23, 32】进一步将这一生成过程加速到10步以内。其核心动机是指导学生网络对齐与基础教师模型更远的点。在本研究中,我们引入的Lightning T2I训练分支利用了SDXL-Lightning【21】加速技术,从而使我们能够在仅4步内从纯噪声生成高质量图像。

Methods

在这里插入图片描述
图2:PuLID框架概述。框架的上半部分展示了传统的扩散训练过程。从同一图像中提取的面部用作ID条件 ( C_{\text{id}} )。框架的下半部分展示了本研究中引入的Lightning T2I训练分支。该分支利用了最新的快速采样方法,通过几步迭代去噪从纯噪声生成高质量图像(本文中为4步)。在这个分支中,我们构建了有ID注入和无ID注入的对比路径,并引入了对齐损失,以指导模型如何在不破坏原始模型行为的情况下插入ID条件。由于该分支可以生成照片级真实感图像,这意味着我们可以实现更准确的ID损失优化。

在这里插入图片描述

在这里插入图片描述

相关文章:

【深度学习】PuLID: Pure and Lightning ID Customization via Contrastive Alignment

论文:https://arxiv.org/abs/2404.16022 代码:https://github.com/ToTheBeginning/PuLID 文章目录 AbstractIntroductionRelated WorkMethods Abstract 我们提出了一种新颖的、无需调整的文本生成图像ID定制方法——Pure and Lightning ID customizatio…...

Elastic 8.14:用于简化分析的 Elasticsearch 查询语言 (ES|QL) 正式发布

作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic 8.14 正式发布。 什么是新的? 8.14 版本最重要的标题是 ES|QL 的正式发布(GA),它是从头开始设计和专门构建的,可大大简化数据调查。在新的查询引擎的…...

C语言指针与数组的区别

在C语言中,指针和数组虽然在很多情况下可以互换使用,但它们在概念上和行为上存在一些区别。下面详细解释这些区别: ### 数组 1. **固定大小**:数组在声明时必须指定大小,这个大小在编译时确定,之后不能改…...

springboot3一些听课笔记

文章目录 一、错误处理机制1.1 默认1.2 自定义 二、嵌入式容器 一、错误处理机制 1.1 默认 错误处理的自动配置都在ErrorMvcAutoConfiguration中,两大核心机制: ● 1. SpringBoot 会自适应处理错误,响应页面或JSON数据 ● 2. SpringMVC的错…...

【小沐学Python】Python实现Web服务器(CentOS下打包Flask)

文章目录 1、简介2、下载Python3、编译Python4、安装PyInstaller5、打包PyInstaller6、相关问题6.1 ImportError: urllib3 v2 only supports OpenSSL 1.1.1, currently the ssl module is compiled with OpenSSL 1.0.2k-fips 26 Jan 2017. See: https://github.com/urllib3/url…...

Cesium开发环境搭建(一)

1.下载安装Node.js 进入官网地址下载安装包 Node.js — Download Node.js https://cdn.npmmirror.com/binaries/node/ 选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位 安装完成后,WINR,输入node --version,显示…...

视频、图片、音频资源抓取(支持视频号),免安装,可批量,双端可用!

今天分享一款比较好用资源嗅探软件,这个嗅探工具可以下载视频号,界面干净,可以内容预览和批量下载,看到这里你是不是想用它爬很多不得了的东西。这款软件无需安装,打开即用。同时他支持windows系统和Mac系统,是一款不可…...

FreeRTOS实时系统 在任务中增加数组等相关操作 导致单片机起不来或者挂掉

在调试串口任务中增加如下代码,发现可以用keil进行仿真,但是烧录程序后,调试串口没有打印,状态灯也不闪烁,单片机完全起不来 博主就纳了闷了,究竟是什么原因,这段代码可是公司永流传的老代码了&…...

CentOS 7基础操作08_Linux查找目录和文件

1、which命令——查找用户所执行的命令文件存放的目录 which命令用于查找Linux命令程序并显示所在的具体位置.其搜索范围主要由用户的环境变量PATH决定(可以执行言echo sPATH”命令查看),这个范围也是Linux操作系统在执行命令或程序时的默认搜索路径。 which命令使用要查找的命…...

CI/CD实战面试宝典:从构建到高可用性的全面解析

实战部署与配置 请描述你设计和实现的一个CI/CD pipeline的完整流程,包括构建、测试、部署各个阶段。 我设计的CI/CD pipeline通常包括以下几个阶段: 代码提交:开发人员将代码提交到Git仓库,触发CI/CD流程。代码检查&#xff1…...

NLP实战入门——文本分类任务(TextRNN,TextCNN,TextRNN_Att,TextRCNN,FastText,DPCNN,BERT,ERNIE)

本文参考自https://github.com/649453932/Chinese-Text-Classification-Pytorch?tabreadme-ov-file,https://github.com/leerumor/nlp_tutorial?tabreadme-ov-file,https://zhuanlan.zhihu.com/p/73176084,是为了进行NLP的一些典型模型的总…...

MySQL: 表的增删改查(基础)

文章目录 1. 注释2. 新增(Create)3. 查询(Retrieve)3.1 全列查询3.2 指定列查询3.3 查询字段为表达式3.4 别名3.5 去重: distinct3.6 排序: order by3.7条件查询3.8 分页查询 4. 修改 (update)5. 删除(delete)6. 内容重点总结 1. 注释 注释:在SQL中可以使用“–空格…...

WDF驱动开发-PNP和电源管理(三)

对于PNP设备来说,理解它们的启动和删除顺序,以及意外移除顺序非常重要,在早期,经常有拔插U盘导致windows重启的例子,这就是意外移除带来的问题。 功能或Filter驱动程序的启动顺序 下图显示了框架调用 WDF (KMDF 和 U…...

Redis集群和高可用性:保障Redis服务的稳定性

I. 引言 A. 对Redis的简单介绍和其在现代Web应用中的角色 Redis(REmote DIctionary Server)是一个开源的、基于内存的键值数据库,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。由于Redis的高性能和丰富的数据类型,使其在现代Web应用中广泛使用。例如,它…...

C# WPF入门学习主线篇(二十一)—— 静态资源和动态资源

C# WPF入门学习主线篇(二十一)—— 静态资源和动态资源 欢迎来到C# WPF入门学习系列的第二十一篇。在上一章中,我们介绍了WPF中的资源和样式。本篇文章将深入探讨静态资源(StaticResource)和动态资源(Dynam…...

出现 Navicat 和 Cmd 下SQL 版本 | 查询不一致的解决方法

目录 1. 问题所示1.1 查询表格不一致1.2 版本不一致2. 原理分析3. 解决方法1. 问题所示 命令行和数据库使用工具出现不一致的情况,分别有如下情况 1.1 查询表格不一致 使用工具查询当地表格: 使用命令行查询当地表格: 1.2 版本不一致 在cmd命令下mysql --version 查询…...

31、matlab卷积运算:卷积运算、二维卷积、N维卷积

1、conv 卷积和多项式乘法 语法 语法1:w conv(u,v) 返回向量 u 和 v 的卷积。 语法2:w conv(u,v,shape) 返回如 shape 指定的卷积的分段。 参数 u,v — 输入向量 shape — 卷积的分段 full (默认) | same | valid full:全卷积 ‘same…...

C++青少年简明教程:文件

C青少年简明教程:文件 文件是指存储在计算机文件系统中的数据集合。文件可以包含各种类型的信息,例如文本、图像、音频视频等。在 C中,文件是一种数据流,可以用于读取或写入数据。C提供了一系列的文件操作函数,用于实现…...

Kimichat使用案例010:快速识别出图片中的表格保存到Excel

文章目录 一、介绍二、图片信息三、输入内容四、输出内容五、markdown提示词六、markdown输出一、介绍 如果有一张图片格式的表格,想要快速复制到Excel表格中,那么一般要借助于OCR工具。之前试过不少在线OCR工具,识别效果差强人意。其实,kimichat就可以非常好的完成这个任务…...

[大师C语言(第二十四篇)]C语言指针探秘

引言 在C语言的学习和应用中,指针无疑是最重要、最难以掌握的概念之一。它为C语言提供了强大的功能和灵活性,同时也带来了不少的复杂性。本文将深入探讨C语言指针背后的技术,帮助你更好地理解和应用指针。 第一部分:指针的基本概…...

Docker命令总结

文章目录 Docker命令总结Docker环境Docker容器生命周期Docker容器运维Docker容器rootfsDocker镜像仓库Docker本地镜像管理Docker容器资源Docker系统日志 Docker命令总结 docker命令非常多,这里主要分为8类总结 Docker环境 可以查看Docker版本和自身的详细信息 d…...

把chatgpt当实习生,进行matlab gui程序编程

最近朋友有个项目需要整点matlab代码,无奈自己对matlab这种工科的软件完全是外行,无奈只有求助gpt这种AI助手了。大神们告诉我们,chatgpt等的助手已经是大学实习生水平啦,通过多轮指令交互就可以让他帮你完成工作啦!所…...

LabVIEW 与组态软件在自动化系统中的应用比较与选择

LabVIEW 确实在非标单机设备、测试和测量系统中有着广泛的应用,特别是在科研、教育、实验室和小型自动化设备中表现突出。然而,LabVIEW 也具备一定的扩展能力,可以用于更复杂和大型的自动化系统。以下是对 LabVIEW 与组态软件在不同应用场景中…...

html--万年历

<!DOCTYPE html> <html lang"zh_CN"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><meta charset"utf-8" /><title>万年历</title><link rel"styles…...

2013年 阿拉斯加巴罗活动层厚度和土壤含水量

Pre-ABoVE: Active Layer Thickness and Soil Water Content, Barrow, Alaska, 2013 ABoVE前&#xff1a;阿拉斯加巴罗活动层厚度和土壤含水量&#xff0c;2013年 简介 文件修订日期&#xff1a;2018-01-10 数据集版本&#xff1a;1 摘要 该数据集提供了 2013 年 8 月在…...

超详解——python数字和运算——小白篇

目录 1.位运算 2. 常用内置函数/模块 math模块&#xff1a; random模块&#xff1a; decimal模块&#xff1a; 3.内置函数&#xff1a; 总结&#xff1a; 1.位运算 位运算是对整数在内存中的二进制表示进行操作。Python支持以下常见的位运算符&#xff1a; 按位与&…...

LabVIEW图像采集处理项目中相机选择与应用

在LabVIEW图像采集处理项目中&#xff0c;选择合适的相机是确保项目成功的关键。本文将详细探讨相机选择时需要关注的参数、黑白相机与彩色相机的区别及其适用场合&#xff0c;帮助工程师和开发者做出明智的选择。 相机选择时需要关注的参数 1. 分辨率 定义&#xff1a;分辨率…...

Java——IO流(一)-(2/9):File类的常用方法(判断文件类型、获取文件信息、创建删除文件、遍历文件夹)

目录 常用方法1&#xff1a;判断文件类型、获取文件信息 方法 实例演示 常用方法2&#xff1a;创建文件、删除文件 方法 实例演示 常用方法3&#xff1a;遍历文件夹 方法 实例演示 常用方法1&#xff1a;判断文件类型、获取文件信息 方法 File提供的判断文件类型、获…...

电子设计入门教程硬件篇之集成电路IC(二)

前言&#xff1a;本文为手把手教学的电子设计入门教程硬件类的博客&#xff0c;该博客侧重针对电子设计中的硬件电路进行介绍。本篇博客将根据电子设计实战中的情况去详细讲解集成电路IC&#xff0c;这些集成电路IC包括&#xff1a;逻辑门芯片、运算放大器与电子零件。电子设计…...

Unity3D测量面积和角度实现方法(二)

系列文章目录 unity工具 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、unity测量面积&#x1f449;1-1 视频效果&#x1f449;1-2 先创建预制体&#x1f449;1-3 在创建LineRenderer预制体&#x1f449;1-4 代码如下 &#x1f449;二、测量平面和测量空间切换&…...

b站是什么网站/如何联系百度推广

Atitit.rsa密钥生成器的attilax总结 1.1. 密钥生成器 1 1.2. 生成固定的密钥 2 1.2.1. 设置或重置 SecureRandom 对象的随机数种子 2 1.3. 密钥结构 2 1.1. 密钥生成器 public static Map<String, Object> initKey2(String md5_deta) throws Exception{ /** RSA算法要…...

无法访问服务器上网站/互联网广告公司

本文主要讲诉在使用VS2012SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改、删除、插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会判断数据的主键是否存在或重复,判断外键是否重复,这几个问题我推荐使用函数的形式完成,同时推荐一…...

健展公司/河南整站关键词排名优化软件

一、考试级别  考试级别分5个专业&#xff1a;计算机软件、计算机网络、计算机应用技术、信息系统、信息服务。每个专业又分三个层次&#xff1a;高级资格&#xff08;高级工程师&#xff09;、中级资格&#xff08;工程师&#xff09;、初级资格&#xff08;助理工程师、技术…...

微信公众平台开发代理/seo实战

集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。集合user:1:follow包含着"it"、"music"、"his"、"sports"四个元素。Redis除…...

网站建设+荆州/seo教程最新

文章目录1.示例代码2.监听不回调问题参考博客&#xff1a;相关博客&#xff1a;1.示例代码 class PersonKVO: NSObject { objc dynamic var name "li"objc dynamic var age 12}class ViewController: UIViewController {var person: PersonKVO PersonKVO()IBA…...

律师做推广宣传的网站/网络营销推广流程

摘要&#xff1a;我们知道在Enterprise Library1.1中对于每一个应用程序块都有一个对应的配置文件&#xff0c;而在Enterprise Library2.0中却把所有的配置信息都放在了应用程序配置文件&#xff08;App.config或Web.config&#xff09;中&#xff0c;在2.0下&#xff0c;我们如…...