InstantID Zero-shot Identity-Preserving Generation in Seconds

InstantID: Zero-shot Identity-Preserving Generation in Seconds

TL; DR:InstantID = IP-Adapter + (Face) ControlNet,实现了具有较高保真度的人脸 ID 生成。

方法

InstantID 想做到的事情是:给定一张参考人脸 ID 图片,生成该 ID 的多种姿势,多种风格的图片,并保证和参考图人脸 ID 的保真度。模型的整体结构总览如下图所示,主要由三个模块组成:

  1. Face(ID) embedding 模块:用于捕捉参考图的人脸 ID 特征
  2. 一个轻量的适配模块(加解耦的交叉注意力层):用于理解视觉 prompt
  3. IdentityNet:用于人脸的精细生成

在这里插入图片描述

ID Embedding

CLIP 这种弱对齐数据训练出的模型,提取出的 image features 比较泛,比较杂,粒度比较粗。不适合于提取精细的、高保真的人脸特征。作者这里用了一个人脸识别或 ReID 中预训练好的人脸模型来提取参考图像中的人脸 ID 特征。

Image Adapter

image prompt 可以用来控制一些很难用文本描述的生图细节(如人体姿态、纹理细节等),极大地补充了图像生成模型的可控生成能力。与 IP-Adapter 类似,InstantID 这里用交叉注意力层(图示上方)来将图片特征注入到扩散模型的 UNet 中。不同之处还是没有用 CLIP 的 image embedding,而与 ID embedding 一样是用的人脸的 Embedding。

IdentityNet

虽然模型已经能够同时参考文本 prompt 和图像 prompt 进行生成了(相当于 IP-Adapter),但想要精确地保持参考人脸的特征,生成出 ID 一致的高保真度的人脸,这还不够。因此,作者还引入了一个 IdentityNet,其实就是一个 Face ControlNet。但是与 ControlNet 有两点不同:一是没有使用全部的人脸关键点,而是使用了五点,这是为了对人脸有控制的同时保持一定的自由度;二是没有使用文本 prompt 特征,而是将 face embedding,通过 cross attention 引入进来,这是为了避免额外的文本信息和背景信息对人脸保真的干扰。

效果展示

看一下 InstantID 主页 show 出来的不同人脸在不同画风、不同 prompt 下的生成结果,可以看到保真度还是很高的,基本都能认出来。

在这里插入图片描述

总结

InstantID = IP-Adapter + (Face) ControlNet 看效果人脸的保真度还是不错的。但是仅能聚焦在人脸,可以试着搞搞人物全身特征的定制化。

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

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

相关文章

基于单片机的电子秤设计

摘 要 本文设计了一种以51单片机来进行控制的电子秤系统,系统的电路部分由以下几个电路模块组成:数据采集和数据处理电路、模数转换电路、LED及蜂鸣器报警电路、最小系统电路、液晶显示电路、矩阵按键电路等。接通电源后,单片机会把压力传感…

DeepSeek发布多模态大型语言模型DeepSeek-VL,技术创新性突出

近日,DeepSeek团队发布了一项创新性突出的多模态大型语言模型DeepSeek-VL。该模型参数规模为1.3B和6.7B,采用了创新的联合视觉和语言预训练方法,旨在解决传统的单模态预训练方法的局限性。 DeepSeek-VL在数据准备、模型架构和训练方法等多方面都有创新工作。在数据准备方面,采用…

抠图透明背景怎么做?3种方法教你抠图换背景

抠图透明背景怎么做?抠图透明背景是一项在图像处理中常见的任务,它可以帮助我们去除图片中的多余部分,使主体部分与背景分离,从而得到一个透明背景的效果。这一技巧在多个领域都有广泛应用,掌握这种技巧,不…

OMP(Orthogonal Matching Pursuit,正交匹配追踪)算法

OMP(Orthogonal Matching Pursuit,正交匹配追踪)算法,这是一种在信号处理和压缩感知领域经常使用的算法,特别适用于从稀疏信号中恢复出信息。 示例 我们可以通过一个简化的例子来理解它: 想象你有一本非常厚的书,这本书里充满了各种故事。但现在,你只能通过书中的一…

C++第四弹---类与对象(一)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 类与对象 1、面向过程和面向对象初步认识 2、类的引入 3、类的定义 4、类的访问限定符及封装 4.1、访问限定符 4.2、封装 5、类的作用域 6、类的…

并发支持库(2)-原子操作

c中的原子用于实现对象的线程安全的操作,避免数据竞争,每一个原子操作可以看作一个不可分割地整体。 本文章的代码库:https://gitee.com/gamestorm577/CppStd atomic atomic是一个类模板,每个atomic模板的实例化都定义了一个原…

电动汽车安全吗?

新能源汽车通常搭载电池系统、电驱动系统以及电控系统,这些部件的安全性能直接关系到整车的安全性。 电动汽车的安全要求通常由国际、国家或地区性的标准和规范来定义和规范。以下是一些常见的电动汽车安全标准: ISO 6469 系列标准:ISO&…

如何在WordPress网站上设置多语言展示

在今天的全球化世界中,拥有多语言网站对于吸引更广泛的受众至关重要。前不就我们遇到Hostease的客户咨询我们的在线客服,他想要对他的wordpress网站支持多语言。我们提供给客户可以尝试以下的插件来支持多语言。 在本教程中,我们将逐步介绍如…

【PCB 小工具】saturnpcb

saturnpcb 官网 打开长这样子; 上面是老版本;看下最新的 推荐还是官方下载 有人在说 这玩意需要在设置板材时候选择;

软件杯 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 🔥 优质…

【Javaweb】【瑞吉外卖】上传下载实现

上传文件 原理:前端让用户选择一个文件,点击丢给后端上传,后端servlet接收到这些请求就进行应答构建连接,完了就开始接收。 但实现这些原理可以不是很懂。servlet封装了一下,spring boot也封装了一下。实现就比较简单…

什么是大顶堆?举个例子

一、什么是大顶堆? 大顶堆(Max Heap)是一种二叉堆的实现,它满足以下性质: 任意节点的值都大于等于其子节点的值。根节点(堆顶)的值是整个堆中最大的。 大顶堆通常用于实现优先队列等数据结构…

嘿!终于等到了!应用开发云资源套餐如约而至!

MemFire Cloud平台更新啦!!此次更新我们推出了万众期待的计费套餐,下面给大家带来详细的介绍~ 计费模式为“基础套餐按量付费”,您可选择购买带有一定配额的基础套餐,超出配额部分可以通过开启“超限按量”功能来转为…

C语言入门学习 --- 4.数组

文章目录 第四章数组1.一维数组的创建与初始化。1.1一维数组的创建1.2一维数组的初始化1.3一维数组的使用1.4一维数组在内存中的存储 2.二维数组的创建与初始化2.1二维数组的创建2.2二维数组的初始化2.3二维数组的使用 2.4二维数组在内存中的存储3.数组越界4.数组作为函数参数4…

AbilityStorage理解与反思

1.简介: AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。 2.那么Module分为三类:Hap,Har,Hsp 官网上的表述容易误解:实际上AbilitySta…

表单修饰符和事件修饰符

表单修饰符和事件修饰符 表单修饰符 v-model.lazy v-model.lazy 失去焦点后再收集数据 <div id"app"><textarea name"" id"" cols"30" rows"10" v-model.lazy"a"></textarea>{{a}}<textar…

【深度学习】深度估计,Depth Anything Unleashing the Power of Large-Scale Unlabeled Data

论文标题&#xff1a;Depth Anything Unleashing the Power of Large-Scale Unlabeled Data 论文地址&#xff1a;https://arxiv.org/pdf/2401.10891.pdf 项目主页&#xff1a;https://depth-anything.github.io/ 演示地址&#xff1a;https://huggingface.co/spaces/LiheYoung…

PyCharm 中 Python 解释器的配置

温馨提示&#xff1a;本文 PyCharm 版本是 2022.3.3 前言 作为 Python 新手&#xff0c;在了解了基本语法之后&#xff0c;肯定得先用 IDE 工具写个 Hello World&#xff0c;来了解 Python 编程语法及 IDE 工具的常规配置和使用&#xff0c;这里我用的 IDE 工具是 PyCharm。 …

C++:构造函数赋初值的几种形式

构造函数用于类对象的初始化&#xff0c;没有返回值也不用写void&#xff0c;函数名与类名相同。构造函数可以有形参也可以无参&#xff0c;构造函数要写在类里边。语法&#xff1a;public: 类名(){ *** }。构造函数在创建对象&#xff08;实例化&#xff09;时会被调用且只有一…

leetcode第49题字母异位词分组

49. 字母异位词分组 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 输入: strs ["eat", "tea", "tan", "ate", "na…