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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索C语言的内存魔法:动态内存管理解析

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 静态开辟内存 通过前面的学习,我们已经掌握了两种开辟内存的方…

auto.js教程(autojs教程、autox.js、autoxjs)笔记(一)Autojs概述

参考文章:【自动化技术】Autojs从入门到精通 参考文章:AutoXJS开发入门简介菜鸟教程 参考文章:关于Auto.js的下架说明 参考文章:Auto.js 4.1.0 文档 文章目录 001--【Autojs概述】1、Autojs是什么,能做什么&#x…

【算法与数据结构】496、503、LeetCode下一个更大元素I II

文章目录 一、496、下一个更大元素 I二、503、下一个更大元素II三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、496、下一个更大元素 I 思路分析:本题思路和【算法与数据结构】739、LeetCode每日温度类似…

大脑是宇宙中最复杂的物体——科学家们试图破译它,读懂人们的思想

2023年,德克萨斯大学HuthLab进行的一项研究在神经科学和技术领域引发了震动。通过人工智能(AI)和脑成像技术的结合,无法与外界交流的人的思想首次被翻译成连续的自然语言。 这是迄今为止最接近读心术的科学方法。在过去的二十年里,神经成像技…

Zookeeper集群搭建(3台)

准备工作 1、提前安装好hadoop102、hadoop103、hadoop104三台机器,参照:CentOS7集群环境搭建(3台)-CSDN博客 2、提前下载好Zookeeper安装包并上传到/opt/software上、安装包,链接:https://pan.baidu.com/…

如何解决利用cron定时任务自动更新SSL证书后Nginx重启问题

利用cron定时任务自动更新SSL证书后,用浏览器访问网站,获取到的证书仍然是之前的。原因在于没有对Nginx进行重启。 据说certbot更新完成证书后会自动重启Nginx,但显然经我检测不是这回事儿。 所以我们需要创建一bash脚本,然后定时调用这个脚…

Java多线程:定时器

👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、Timer类二、手动实现定时器1、实现逻辑2、问题描述2.1、问题一:线程安全问题2.2、问题二:使用 slee…

[C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改

问题描述 WPF中DataGrid的选中行或选中者单元格&#xff0c;在焦点失去后&#xff0c;颜色会很淡&#xff0c;很不明显&#xff0c;不容易区分。 解决方法 在失去焦点的情况下&#xff0c;如何设置行或单元格与选中的时候颜色一样&#xff1f; <DataGrid.Resources>&…

滑块识别验证

滑块识别 1. 获取图片 测试网站&#xff1a;https://www.geetest.com/adaptive-captcha-demo 2. 点击滑块拼图并开始验证 # 1.打开首页 driver.get(https://www.geetest.com/adaptive-captcha-demo)# 2.点击【滑动拼图验证】 tag WebDriverWait(driver, 30, 0.5).until(la…

利用YOLOv8 pose estimation 进行 人的 头部等马赛克

文章大纲 马赛克几种OpenCV 实现马赛克的方法高斯模糊pose estimation 定位并模糊:三角形的外接圆与膨胀系数实现实现代码实现效果参考文献与学习路径之前写过一个文章记录,怎么对人进行目标检测后打码,但是人脸识别有个问题是,很多人的背影,或者侧面无法识别出来人脸,那…

Golang GC 介绍

文章目录 0.前言1.发展史2.并发三色标记清除和混合写屏障2.1 三色标记2.2 并发标记问题2.3 屏障机制Dijkstra 插入写屏障Yuasa 删除写屏障混合写屏障 3.GC 过程4.GC 触发时机5.哪里记录了对象的三色状态&#xff1f;6.如何观察 GC&#xff1f;方式1&#xff1a;GODEBUGgctrace1…

算法学习——LeetCode力扣二叉树篇1

算法学习——LeetCode力扣二叉树篇1 144. 二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 描述 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&a…

大水仙花数求解

输入位数&#xff0c;求解水仙花数。暴力求解&#xff0c;位数如果太多&#xff0c;会超时。 思路&#xff1a; &#xff08;1&#xff09;11333355和33331155看上去是不一样的两个数&#xff0c;但是它们又一样&#xff0c;因为相同数字出现的次数一样。 &#xff08;2&…

深度学习图像分类相关概念简析+个人举例3(CNN相关补充,附详细举例代码1)

【1】激活函数&#xff08;Activation Function&#xff09;&#xff1a;在深度学习&#xff08;CNN&#xff09;中&#xff0c;激活函数用于引入非线性性质&#xff0c;帮助模型学习复杂的关系。常见的激活函数有ReLU、Sigmoid和Tanh等。 &#xff08;1&#xff09;ReLU激活函…

2万字曝光:华尔街疯狂抢购比特币背后

作者/来源&#xff1a;Mark Goodwin and whitney Webb BitcoinMagazine 编译&#xff1a;秦晋 全文&#xff1a;19000余字 在最近比特币ETF获得批准之后&#xff0c;贝莱德的拉里-芬克透露&#xff0c;很快所有东西都将被「ETF化」与代币化&#xff0c;不仅威胁到现有的资产和商…

详细介绍Python网络编程模块

根据前面对网络分层棋型的介绍&#xff0c;我们知道实际的网络模型大致分为四层&#xff0c;这四层各有对应的网络协议提供支持&#xff0c; 网络层协议主要是 IP&#xff0c;它是所有互联网协议的基础&#xff0c;其中 ICMP&#xff08;Internet Control Message Protocol&…

JAVA设计模式之策略模式详解

策略模式 1 策略模式概述 策略模式(strategy pattern)的原始定义是&#xff1a;定义一系列算法&#xff0c;将每一个算法封装起来&#xff0c;并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。 其实我们在现实生活中常常遇到实现某种目标存在多种策略…

Netty应用(一) 之 NIO概念 基本编程

目录 第一章 概念引入 1.分布式概念引入 第二章 Netty基础 - NIO 1.引言 1.1 什么是Netty&#xff1f; 1.2 为什么要学习Netty&#xff1f; 2.NIO编程 2.1 传统网络通信中开发方式及问题&#xff08;BIO&#xff09; 2.1.1 多线程版网络编程 2.1.2 线程池版的网络编程…

6.JavaScript中赋值运算符,自增运算符,比较运算符,逻辑运算符

赋值运算符 就是简单的加减乘除&#xff0c;没啥可说的这里直接上代码比较好 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…

一文彻底搞懂Kafka如何保证消息不丢失

文章目录 1. kafka 架构2. producer端是如何保证数据不丢失的2.1 同步发送2.2 异步发送2.3 批量发送 3. consumer端是如何保证数据不丢失的3.1 手动提交3.2 幂等性消费 4. broker端是如何保证数据不丢失的4.1 副本机制4.2 ISR机制4.3 刷盘机制 1. kafka 架构 Producer&#xff…