【论文阅读笔记】InstantID : Zero-shot Identity-Preserving Generation in Seconds

本文主要是介绍【论文阅读笔记】InstantID : Zero-shot Identity-Preserving Generation in Seconds,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

InstantID:秒级零样本身份保持生成

  • 理解
  • 摘要
  • Introduction
    • 贡献
  • Related Work
    • Text-to-image Diffusion Models
    • Subject-driven Image Generation
    • ID Preserving Image Generation
  • Method
  • 实验
    • 定性实验
    • 消融实验
    • 与先前方法的对比
    • 富有创意的更多任务
      • 新视角合成
      • 身份插值
      • 多身份区域控制合成
  • 结论和未来工作

project:https://github.com/InstantID/InstantID
单位:小红书,北大

在这里插入图片描述

理解

很有意义的一篇文章,关注于人脸身份信息的保持来控制包含人物的图像生成;通过人脸识别网络的嵌入来保证身份一致性和细节,面部粗糙关键点过controlnet保持空间pose;支持非常丰富的下游任务

问题:

  1. 是否需要6千万的数据,数据小一点会怎么样呢?

摘要

  1. 现有的基于 ID 嵌入的方法,虽然只需要一个前向推理,但面临挑战:它们要么需要对众多模型参数进行广泛的微调,缺乏与社区预训练模型的兼容性,要么无法保持高人脸保真度
  2. 为了解决这些限制,我们引入了 InstantID,这是一种强大的基于扩散模型的解决方案。我们的即插即用模块擅长仅使用单个面部图像处理各种风格的图像个性化,同时确保高保真度
  3. 为此,我们设计了一种新的IdentityNet,通过施加强语义和弱的空间条件,将人脸和地标图像与文本提示相结合,引导图像生成
  4. InstantID 展示了卓越的性能和效率,证明了在身份保存至关重要的实际应用中非常有益。

Introduction

  1. 心有文生图大模型发展的焦点是个性化和定制的生成,试图根据一个或多个参考图像创建风格、主题或字符ID一致的图像。
  2. 挑战:是否准确保留了人类受试者的复杂身份细节
  3. 尽管增加文生图模型的方法controllnet、T2Iadapter、Uni-Controlnet等方法层出不穷,生成的图像与参考的保真度仍然只有部分
  4. 介绍现有方法不足,如Dreambooth、Textual Inversion、LORA等需要针对特定ID进行单独训练;或轻量级适配器用于推理,如Ipadapter使用交叉注意力注入图片信息
  5. 引入一种新的方法(InstantID),专注于即时身份保持图像合成。
    • 引入一个简单的即插即用模块来弥合高保真度和效率之间的差距,使其能够熟练地使用单个面部图像以任何风格处理图像个性化,同时保持高保真度。
    • 为了从参考图像中保留人脸身份,我们设计了一种新的人脸编码器,通过添加强语义和弱空间条件来保留复杂的细节,结合人脸图像、地标图像和文本提示来指导图像生成过程。
    • 我们通过以下方式将我们的工作与以前的工作区分开来:(1)可插入性和兼容性:我们专注于训练一个轻量级适配器而不是UNet的完整参数,使我们的模块可插拔并与社区中的预训练模型兼容; (2) 无调优:我们的方法只需要一个前向传播进行推理,无需微调。此功能使 InstantID 在实际应用中非常经济和实用; (3) 卓越的性能:只有一个参考图像,InstantID 实现了最先进的结果,显示出高保真度和灵活性。值得注意的是,它可以匹配甚至超过基于多个参考图像的 LoRA 等基于训练的方法的性能。

贡献

  • 我们提出了 InstantID,这是一种创新的 ID 保持适应方法,用于预训练的文本到图像扩散模型,以很好地弥合保真度和效率之间的差距。实验结果表明,与该领域其他最先进的方法相比,该方法具有良好的性能
  • InstantID是可插拔的,并与从同一基本扩散模型微调的其他自定义模型兼容,无需额外成本就可以在预训练模型中保留ID。此外,InstantID在原始稳定扩散模型中观察到的文本编辑保持了相当大的控制,使ID的平滑集成到各种样式中。
  • InstantID的优异性能和效率点燃了其在一系列现实应用中的巨大潜力,如新视图合成、ID内插、多ID和多样式合成

Related Work

Text-to-image Diffusion Models

不详细介绍了

Subject-driven Image Generation

定义:使用特定主题的有限图像集来生成基于文本描述的定制图像

ID Preserving Image Generation

ID-preserving 图像生成是主题驱动生成的一个特例,但它专注于具有强语义的人脸属性,并在现实场景中找到广泛的应用。
现有的工作主要可以分为两类, (LoRA) 是一种流行的轻量级训练技术,在定制数据集上进行训练之前,将最少数量的新权重插入到模型中。然而,LoRA 需要对每个新字符进行单独的训练,从而限制了其灵活性。
相比之下,最近的发展引入了无优化方法,绕过了额外的微调或反演过程。Face0用CLIP空间中的投影人脸嵌入覆盖最后三个文本标记,并使用联合嵌入作为条件来指导扩散过程。
PhotoMaker采用类似的方法,但通过微调图像编码器中的 Transformer 层的一部分并合并类和图像嵌入来增强其提取 ID 中心嵌入的能力。
FaceStudio提出了一种混合制导身份保持图像合成框架,其中人脸嵌入通过线性投影集成到 CLIP 视觉嵌入和 CLIP 文本嵌入中,然后将合并的指导嵌入融合到具有交叉注意的 UNet 中。IP-Adapter-FaceID使用来自人脸识别模型的人脸ID嵌入,而不是CLIP图像嵌入来保持ID的一致性

然而,这些方法要么需要训练 UNet 的完整参数,牺牲与现有预训练社区模型的兼容性,要么未能确保高人脸保真度。为了解决这些限制,我们引入了一个可插拔模块,该模块擅长弥合无训练和训练密集型方法之间的鸿沟。我们的方法在推理过程中不需要微调,与现成的预训练扩散模型(如 SD1.5 和 SDXL)无缝对齐,在人脸保存方面取得了卓越的保真度。

Method

在这里插入图片描述
直观理解:

  1. 通过Face Encoder来提取身份特征向量并通过可训练的Projection Net得到最终的Face Embedding
  2. Face Embedding有两个去向
    • 类似ipadapter使用image adapter构建doubled Cross attention注入身份ID信息,与ipadapter不同的点在于没有clip image encoder,因为clip无法关注到高层语义信息,只包含粗糙的纹理和颜色,无法进行高保证的语义保持
    • 类似Controlnet,使用并行的Unet Encoder注入空间信息,具体来说使用双眼鼻子嘴五个粗略关键点引导Controlnet向unet中注入脸部的空间位置信息,并只送入Face Embedding 信息从而保留原本Unet的文本编辑能力。前者粗略关键点的映射保证了可编辑性(只提供粗略位置,确保文本还能够对表情进行修改);后者文本提示并使用 ID 嵌入作为交叉注意力层条件使网络能够只关注 ID 相关的表示,不受人脸和背景的广义描述的影响
  3. 训练过程中只考虑Projection Net和Controlnet即可

实验

  1. 数据集
    • LAION-Face 5千万对
    • 1千万互联网收集图像,BLIP进行注释
  2. 人脸检测模型
    • 网址:https://github.com/deepinsight/insightface
    • 模型:antelopev2
  3. 资源
    • 基于 SDXL-1.0 模型
    • 48 个 NVIDIA H800 GPU (80GB) 上进行,每个 GPU 的批量大小为 2

在这里插入图片描述

定性实验

在这里插入图片描述

消融实验

  1. IdentityNet 单独实现了良好的 ID 保留,并且 Image Adapter 的添加进一步增强了面部细节恢复
    在这里插入图片描述

  2. 图片数量的影响在这里插入图片描述

与先前方法的对比

相比于ipadapter实现了更好的风格融入和控制
在这里插入图片描述
相比于LoRA无需额外训练,直接单次推理
在这里插入图片描述
换脸层面能够更自然的融合身份与图片风格
在这里插入图片描述

富有创意的更多任务

新视角合成

在这里插入图片描述

身份插值

这个face embedding具有这么好连续性是令人惊讶的
在这里插入图片描述

多身份区域控制合成

在这里插入图片描述

结论和未来工作

关注一下Limitation:

  • 模型中的 ID 嵌入虽然富含性别和年龄等语义信息,但具有高度耦合的面部属性,这对面部编辑提出了挑战。未来的发展可能涉及解耦这些面部属性特征以增强灵活性。
  • 我们可以观察到 InstantID 与我们使用的人脸模型中固有的偏差有关的一些限制(具体指?)

这篇关于【论文阅读笔记】InstantID : Zero-shot Identity-Preserving Generation in Seconds的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681549

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit