【深度学习】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损失优化。

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信好友朋友圈的三天、半年可见怎么破?方法拿走不谢

『Code掘金』问大家,有没有这种经历,当你想去翻某人的朋友圈时,对方设置成了3天可见,之前的内容没法看到了。 不过没关系!今天『Code掘金』给大家分享一款导出朋友圈的工具,让大家留住痕迹。 WechatMomen…

PostgreSQL中有没有类似Oracle的dba_objects系统视图

PostgreSQL中有没有类似Oracle的dba_objects系统视图 在PostgreSQL中,没有一个完全集成了所有对象信息的视图(类似于Oracle中的DBA_OBJECTS)。但是,PostgreSQL提供了一些系统目录表和视图,可以用来获取数据库对象的信…

初探沁恒CH32V307VCT6评估板 1-1外部中断EXTI

旋转编码器计次 1,创建 .C .H 文件 Count_Sonser.c Count_Sonser.h 2,包含头文件 #include "ch32v30x.h" //#include "debug.h" #include "Count_Sonser.h" 注意:如果不包含第一第二个头文件uint、int这…

如何掌握 Java 正则表达式 的基本语法及在 Java 中的应用

正则表达式是一种用于匹配字符串的模式,在许多编程语言中广泛使用。Java 正则表达式提供了强大的文本处理能力,能够对字符串进行查找、替换、分割等操作。 一、正则表达式的基本语法 正则表达式由普通字符和特殊字符组成。普通字符包括字母、数字和标点…

通过 echo 命令向 /sys/class/gpio/export 写入一个GPIO编号,但遇到 “Device or resource busy

通过 echo 命令向 /sys/class/gpio/export 写入一个GPIO编号,但遇到 "Device or resource busy" 错误时,这通常意味着该GPIO引脚已经被其他驱动或用户空间程序导出并使用了。 要解决这个问题,可以尝试以下步骤: 检查GP…

SpEL表达式使用方法

1 SpEL简介 SpEL(Spring Expression Language)是一种用于在Spring框架中进行数据绑定和执行业务逻辑的表达式语言。Spring EL提供了一种简洁、灵活和强大的方式来访问对象的属性、调用方法、执行运算和逻辑判断等操作。 官方文档:https://d…

C# 多线程:并发编程的利器

在现今日益复杂的软件开发环境中,多线程编程已经成为提升应用程序性能和响应速度的关键技术。C# 作为一种现代、功能强大的编程语言,提供了丰富的多线程支持,使开发者能够充分利用多核处理器和并行计算的优势。本文将深入探讨C#中的多线程编程…

网络协议三

数据中心 一、DNS 现在网站的数目非常多,常用的网站就有二三十个,如果全部用 IP 地址进行访问,恐怕很难记住 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 …

汇凯金业:贵金属交易规则有哪些

贵金属投资目前非常火热,许多投资者从中获得了可观的收益。新手投资者在进入贵金属市场及其交易之前,务必要了解清楚贵金属的交易规则。了解规则和差异能帮助新手更好地进行贵金属投资交易。下面我们以现货类贵金属为例,详细说明贵金属的交易…

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户修改密码实现

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计59条视频,包括:2024版 Django5 Python we…

关于在 Ubuntu 下安装配置和调优 FTP 服务器

今天我在阿贝云的免费服务器上部署测试FTP服务器,这个阿贝云真是个不错的免费云服务器啊,配置虽然不高,但完全足够搭建一个FTP服务器使用了。1核CPU、1G内存、10G硬盘、5M带宽,对我这个喜欢折腾的家伙来说可太好用了。 首先,让我简单介绍下今天要用到的FTP服务器软…

Mybatis杂记

group by查询返回map类型 1,2 List<Map<String, Object>> getCount();xml: <select id"getCount" resultType"java.util.HashMap">SELECT company_id, ifnull(sum(count_a count_b),0) ctFROM test.com_countWHERE is_del 0 GROUP BY…

天气数据集2-应用RNN做天气预测

二、用循环神经网络做天气(温度)预测 本项目是基于Pytorch的 RNN&GRU模型&#xff0c;用于预测未来温度 数据集: https://mp.weixin.qq.com/s/08BmF4RnnwQ-jX5s_ukDUA 项目代码: https://github.com/disanda/b_code/tree/master/Weather_Prediction RNN 模型本质是用于预…

MySQL(四)查询

1、MySQL限性约束 —非空、唯一(自增)、主外键、检查(MySQL存在但是不能用)。 约束主要完成对数据的校验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 1)常用五类约束 not null :非空约束,指定某列不为空。 unique:唯一约束,指定某列和几列组…

基于springboot的-仓库 管理系统【附:资料➕文档】

前言&#xff1a;我是源码分享交流Coding&#xff0c;专注JavaVue领域&#xff0c;专业提供程序设计开发、源码分享、 技术指导讲解、各类项目免费分享&#xff0c;定制和毕业设计服务&#xff01; 免费获取方式--->>文章末尾处&#xff01; 项目介绍&#xff1a; 管理员…

【VUE】el-table表格 实现滚动到底部加载更多数据

废话不多说&#xff0c;直接上代码 <template></template>部分代码 <!-- 表格 --> <el-tableid"mytable"v-loading"listLoading"highlight-current-rowrow-key"project_id":data"tableData"border:reload"…

java中的三种拷贝方法

在Java编程中&#xff0c;理解深拷贝&#xff08;Deep Copy&#xff09;、浅拷贝&#xff08;Shallow Copy&#xff09;和引用拷贝&#xff08;Reference Copy&#xff09;是非常重要的。这三种拷贝方式涉及对象复制和内存管理。以下是对它们的详细解释&#xff1a; 1. 引用拷…

数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析

基于TSMC 12nm ARM A55 upf flow后端设计实现训练营将于6月中旬正式开班&#xff01;小班教学&#xff01;目前还有3个名额&#xff0c;招满为止&#xff01;有需要可以私信小编 ic-backend2018报名。吾爱IC社区所有训练营课程均为直播课&#xff01; 这个课程支持升级成双核A…

服务器禁止密码登陆

转载请标明出处&#xff1a;https://blog.csdn.net/donkor_/article/details/139444224 文章目录 一、前言二、编辑sshd_config文件三、重启服务四、总结 一、前言 复杂的密码&#xff0c;登陆服务器的时候&#xff0c;也是很不方便的。并且频繁登陆&#xff0c;暴露给外界&am…

事件总线vueEvent

一个组件结束后要更新另一个组件数据&#xff0c;但是另一个组件和这个组件没有上下级关系 在 Vue 中&#xff0c;非父子组件之间进行通信通常需要使用事件总线或者其他的全局事件管理器。在你的代码片段中&#xff0c;vueEvent 似乎是一个事件总线对象&#xff0c;通过 emit 方…