【论文阅读笔记】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 与我们使用的人脸模型中固有的偏差有关的一些限制(具体指?)

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

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

相关文章

Linux操作系统基础(六):Linux常见命令(一)

文章目录 Linux常见命令 一、命令结构 二、ls命令 三、cd命令 四、mkdir命令 五、touch命令 六、rm命令 七、cp命令 八、mv命令 九、cat命令 十、more命令 Linux常见命令 一、命令结构 command [-options] [parameter]说明: command : 命令名, 相应功能的英文单词…

Dubbo源码一:【Dubbo与Spring整合】

正常在项目中,我们都是在Spring环境下使用Dubbo,所以我们这里就在Spring的环境下看看Dubbo是如何运作的 入口 在源码下载下来之后,有一个dubbo-demo目录,里面有一个基于spring注解的子目录dubbo-demo-annotation, 里面有一个生产…

【PyQt】10 QLineEdit

文章目录 前言一、回显模式(EchoMode)1.1 四种回显模式1.2 代码展示运行结果 二、校验器2.1 代码2.2 运行结果 三、通过掩码限制输入3.1 代码3.2 运行结果 总结 前言 1、QLineEdit 可以输入单行文字 2、回显模式 3、校验器 4、掩码输入 一、回显模式&am…

k8s-资源限制与监控 15

资源限制 上传实验所需镜像 Kubernetes采用request和limit两种限制类型来对资源进行分配。 request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能 运行Pod。 limit(资源限额):即运行Pod期间,可能内存使用量会增加&#xff0…

Jupyter Notebook如何在E盘打开

Jupyter Notebook如何在E盘打开 方法1:方法2: 首先打开Anaconda Powershell Prompt, 可以看到默认是C盘。 可以对应着自己的界面输入: 方法1: (base) PS C:\Users\bella> E: (base) PS E:\> jupyter notebook方法2&#x…

跳表详解和实现|深挖Redis底层数据结构

文章目录 跳表前言项目代码仓库认识跳表跳表的实现思路跳表性能分析对比平衡树(avl和红黑树)和哈希表使用手册成员变量成员函数构造析构迭代器sizeclearemptyoperatorfindinserterase 跳表细节实现节点定义跳表结构定义构造、析构、拷贝构造和赋值重载si…

人工智能算法:理解其工作原理及其在现实世界中的应用

随着科技的飞速发展,人工智能(AI)已逐渐成为我们生活中不可或缺的一部分。从智能语音助手到自动驾驶汽车,再到医疗诊断系统,人工智能算法正以前所未有的速度改变着我们的世界。本文将带您深入探讨人工智能算法的工作原…

【MySQL】数据库的基础——数据库的介绍、MySQL的介绍和架构、SQL分类、MySQL的基本使用、MySQL的存储引擎

文章目录 MySQL1. 数据库的介绍1.2 主流数据库 2. MySQL的介绍2.1 MySQL架构2.2 SQL分类2.3 MySQL的基本使用2.4 MySQL存储引擎 MySQL 1. 数据库的介绍 数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。它是长期存储在计…

uni-app x,一个纯原生的Android App开发工具

uni-app x,下一代uni-app,一个神奇的产品。 用vue语法、uni的组件、api,以及uts语言,编译出了kotlin的app。不再使用js引擎和webview。纯纯的kotlin原生app。 uni-app x,让“跨平台开发性能不如原生”的这条曾广为流…

LLM之LangChain(七)| 使用LangChain,LangSmith实现Prompt工程ToT

如下图所示,LLM仍然是自治代理的backbone,可以通过给LLM增加以下模块来增强LLM功能: Prompter AgentChecker ModuleMemory moduleToT controller 当解决具体问题时,这些模块与LLM进行多轮对话。这是基于LLM的自治代理的典型情况,…

Linux 命令基础

Shell概述 Linux操作系统的Shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 Shell是用户和Linux内核之间的接口程序,如果把硬件想象成一个球体的中心,内核围绕在硬件的外层管理着…

keil调试出现cannot evaluate新思路

我在用最新的keil时也出现了这个问题,网上说的办法几乎没啥用,包括魔术棒的设置和将变量定义为全局变量,都没用。 这里我使用的是keil5.13,编译器是AC6.21,硬件是STM32F407VET6 可以看到,即使是定义为全局变…

问题:超声波纵波斜入射时,当入射角大于第一临界角小于第二临界角时,在第二介质内只有折射横波。 #微信#经验分享#其他

问题:超声波纵波斜入射时,当入射角大于第一临界角小于第二临界角时,在第二介质内只有折射横波。 参考答案如图所示

对于模糊查询的SQL,怎么优先返回等值记录

说明:记录一次SQL改进的方法,希望能对大家有启发。 场景 前端项目有一个输入框,根据输入的银行名称,去模糊查询对应的数据库表,返回结果集,显示到下拉列表中。 因为银行名称字段包括了分行名&#xff0c…

缓存穿透、缓存击穿与缓存雪崩

缓存穿透、缓存击穿与缓存雪崩 1.本质区别 缓存穿透指的是数据库不存在数据,导致无法缓存,每次查询都查数据库,数据库压垮 缓存击穿指的是缓存键值对key过期了,key过期期间,大量请求访问,不经过缓存&…

ONLYOFFICE桌面编辑器8.0新特性:PDF表单、RTL支持、Moodle集成、本地界面主题等

ONLYOFFICE是由领先的IT公司—Ascensio System SIA经验丰富的IT专家开发的项目。这是一款强大的在线编辑器,能够为提供高效的文本文档、电子表格、演示文稿、表单和 PDF 编辑工具。 继 ONLYOFFICE 文档 v8.0发布后,适用于 Linux、Windows 和 macOS 的免费…

C++中类的6个默认成员函数【构造函数】 【析构函数】

文章目录 前言构造函数构造函数的概念构造函数的特性 析构函数 前言 在学习C我们必须要掌握的6个默认成员函数,接下来本文讲解2个默认成员函数 构造函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是&#xff0c…

电商网站基础布局——以小兔鲜为例

项目准备 /* base.css */ /* 內减模式 */ * {margin: 0;padding: 0;box-sizing: border-box; }/* 设置网页统一的字体大小、行高、字体系列相关属性 */ body {font: 16px/1.5 "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","Hiragino Sans…

Codeforces Round 106 D. Coloring Brackets 【区间DP + 记忆化搜索实现】

D. Coloring Brackets 约定 ∣ S ∣ ≤ 700 |S| \leq 700 ∣S∣≤700 题意 给定一个正则括号序列 s s s,我们需要求出合法的染色方案数。合法的条件为: 每个符号要么不染色,要么染红色,要么染蓝色对于每对配对的括号&#xf…

(十八)springboot实战——spring securtity注解方式的授权流程源码解析

前言 在上一节内容中,我们介绍了如何在FilterSecurityInterceptor过滤器中处理用户的授权流程,并分析了其源码,spring security还提供了方法级别的授权方式,通过EnableMethodSecurity注解启用权限认证流程,只需要在方…