IP一致性:指的是给定输入的图像,要求保持图像中的ID不变,IP可能是Identity Property,要求能够识别出是同一个身份。
目前通过IP的一致性技术,可以用于短视频短剧上,是一个新兴的市场技术。
# IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models
Paper : https://papers.cool/arxiv/2308.06721
Page : https://ip-adapter.github.io/
类似于ControlNet,想要在已经预训练的网络中增加Adapter(类似于LLM中),从而维持IP一致性。
动机:目前如果在预训练中的网络中添加额外的信息,通常是直接和其他信息(Text)Concat在一起通过Cross-Layer,本文认为这样子会导致信息融合在一起,无法保证单一模态的信息强度,就容易导致IP变形。
![IP一致性_2024-07-18_](https://s2.loli.net/2024/07/18/Mxb9zRu2DgVY7Os.png)
通过使用两个cross-attn,将不同模态的信息分离,但是在这两个cross-attn的Q数输入是一致的。具体公式如下
$$\begin{aligned}\mathbf{Z}^{new}=\mathrm{Softmax}(\frac{\mathbf{Q}\mathbf{K}^{\top}}{\sqrt{d}})\mathbf{V}+\mathrm{Softmax}(\frac{\mathbf{Q}(\mathbf{K}^{\prime})^{\top}}{\sqrt{d}})\mathbf{V}^{\prime}\\\mathrm{where~}\mathbf{Q}=\mathbf{Z}\mathbf{W}_{q},\mathbf{K}=\boldsymbol{c}_{t}\mathbf{W}_{k},\mathbf{V}=\boldsymbol{c}_{t}\mathbf{W}_{v},\mathbf{K}^{\prime}=\boldsymbol{c}_{i}\mathbf{W}_{k}^{\prime},\mathbf{V}^{\prime}=\boldsymbol{c}_{i}\mathbf{W}_{v}^{\prime}\end{aligned}$$
需要注意的是两个Cross-áttn的Query输入是一致的,而对于文本的cross-attn是完全冻结的。
# DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation
Project page: https://dreambooth.github.io/
![IP一致性_2024-07-22_](https://s2.loli.net/2024/07/22/Pr1BGqQf8KdTJXw.png)
DreamBooth可以给定3~5张主体图像,微调预训练模型,生成主体类似的图像,它的核心思想通过微调模型,使得TextEncoder的某个特定token可以和模型生成的特定主体(Obeject)相联系,例如将Kitty和我家的狗联系起来,如果输入的prompt含有“Kitty”,那么模型生成的图像中,主体就是我家的狗。
Method:
1. 如何设计训练数据。文本提示采用简单的结构,通常包含一个独特标识符和主体的类别名称。例如,"A [V] dog",其中"[V]"是独特标识符,"dog"是主体的类别名称。V实在 tokenizer寻找出现频数较少的。
2. 为了防止模型在微调过程中逐渐忘记如何生成与目标主体相同类别的其他主体(即语言漂移),作者提出了一种类别特定先验保留损失(Class-specific Prior Preservation Loss)。先在一个类别中生成几张图像,要求模型在微调的时候,对于该类别生成尽量一致的图像,只有在输入特定的token的时候,才生成特定的主体。
![IP一致性_2024-07-26_](https://s2.loli.net/2024/07/26/L9PxfrA8eu3vkMY.png)
$$\mathbf{L} = \mathbb{E}_{\mathbf{x},\mathbf{c},\boldsymbol{\epsilon},\boldsymbol{\epsilon}^{\prime},t}[w_t\|\hat{\mathbf{x}}_\theta(\alpha_t\mathbf{x}+\sigma_t\boldsymbol{\epsilon},\mathbf{c})-\mathbf{x}\|_2^2+\\\lambda w_{t^{\prime}}\|\hat{\mathbf{x}}_\theta(\alpha_{t^{\prime}}\mathbf{x}_{\mathrm{pr}}+\sigma_{t^{\prime}}\boldsymbol{\epsilon}^{\prime},\mathbf{c}_{\mathrm{pr}})-\mathbf{x}_{\mathrm{pr}}\|_2^2],\\ \mathbf{x}_{pr}是class \ image的形式$$
- 微调预训练模型:使用少量(大约3-5张)特定主体的图像对预训练的文本到图像扩散模型进行微调。这样做的目的是将特定主体的实例嵌入到模型的输出域中。
- 使用唯一标识符:为每个主体分配一个独特的标识符,并在文本提示中结合使用这个标识符和主体的类别名称(例如,“一个[V]狗”),这样可以帮助模型在保持类别先验的同时,学习将标识符与特定主体绑定。
- 设计文本提示:为了简化过程并避免编写详细的图像描述,作者选择使用简单的文本提示,如“a [V] [class]”,这有助于将模型对特定类别的先验知识与主体的独特标识符结合起来。
- 罕见标识符(Rare-token Identifiers):为了避免模型对标识符有预先的知识,作者寻找词汇表中的罕见标记,并将其反转到文本空间,以最小化标识符具有强先验的概率。
- 类别特定先验保留损失(Class-specific Prior Preservation Loss):为了解决语言漂移问题(即模型在微调后逐渐忘记如何生成与目标主体相同类别的其他主体),作者提出了一种新的损失函数。这种损失函数通过使用模型自身生成的样本来监督模型,以保留类别先验,并鼓励生成多样化的图像。
在Diffuser中有DreamBooth的实现,可以支持微调TextEncoder和UNet,在训练前生成class images。
# InstantID : Zero-shot Identity-Preserving Generation in Seconds (2024.01)
[Page](https://instantid.github.io/)
![IP一致性_2024-08-12_](https://smms.app/2024/08/12/ryfb2DpVJizUjnq.png)
这篇论文试图解决的问题是个性化图像合成中的一个关键挑战:在保持高保真度的同时,如何实现零次拍摄(zero-shot)的身份(ID)保持生成。论文讨论了以下几个方面的问题:
- 现有方法的局限性:现有的个性化图像生成方法,如Textual Inversion、DreamBooth和LoRA等,虽然在生成与参考图像风格、主题或角色ID一致的图像方面取得了显著进展,但它们的实际应用受到高存储需求、漫长的微调过程以及需要多个参考图像的限制。
- ID嵌入方法的挑战:现有的基于ID嵌入的方法虽然只需要一次前向推理,但面临一些挑战,如需要对大量模型参数进行微调、与社区预训练模型不兼容,或者无法保持高面部保真度。
- 身份细节的精确保留:人类面部身份(ID)涉及更微妙的语义,并且需要比一般风格或对象更高的细节和保真度标准,这使得生成精确保留身份细节的图像成为一个特别具有挑战性的任务。
目前,需要资源:
DreamBooth(需要>5张图片,微调整个模型) > IP-Adapter(需要>5张图片,只用微调Image Embedding的crossAttention Layer) $\approx$ InstantID(需要1张脸部图片,微调一个IdentityNet)
## Method
论文提出了一种名为InstantID的方法来解决零次拍摄身份保持图像生成的问题。InstantID的核心设计包括以下几个关键部分:
- ID嵌入:使用预训练的面部模型(目前非常成熟的人脸识别模型来提取Embedding)来提取参考面部图像中的身份嵌入,这些嵌入包含了丰富的语义信息,如身份、年龄和性别等。与CLIP图像嵌入相比,这种方法能够提供更强的语义细节和更高的保真度。
- 图像适配器:引入了一个轻量级的适配器模块,该模块具有解耦的交叉注意力机制(和IP-Adapter一致),允许将图像作为视觉提示与文本提示一起用于图像生成过程。这种设计使得InstantID能够灵活地处理各种风格的图像个性化。
- IdentityNet:设计了一个IdentityNet(就是一个ControlNet,只不过额外的监督信号是Face Embedding),它通过整合面部图像、面部关键点图像和文本提示来引导图像生成过程。IdentityNet在生成过程中完全由面部嵌入指导,而不使用任何文本信息,从而确保了面部身份的保留。
训练和推理策略:在训练过程中,只优化Image Adapter和IdentityNet的参数,而保持预训练文本到图像扩散模型的参数不变。在推理过程中,InstantID能够通过单步前向传播生成身份保持的图像,无需微调。
![IP一致性_2024-08-12_](https://s2.loli.net/2024/08/12/C36A8rwLTgsW5cV.png)
它的模型能够在保证Face的特征情况下,使用文本对于人脸生成进行控制,也是小红书之前火了一阵子的模型.
# An Image is Worth One Word: Personalizing Text-to-Image Generation using Textual Inversion(Textual Inversion)

IP一致性论文的更多相关文章

  1. CCProxy

    我在之前的博客里提到了用Teamviewer + CCProxy做内网穿透,当时只是简单提了一下,因为发现这种方式网速比较慢.今天又用到了它,虽然慢点,但是总比没的用好,哈哈哈.不得不感叹CCProx ...

  2. Computer Networking: A Top Down Approach

    目录 Chapter 1: Computer Networks and the Internet 1. What is the Internet? 2. The Network Edge 3. The ...

  3. Computer Neworking: A Top-Down Approach

    目录 Chapter 1: Computer Networks and the Internet 1. What is the Internet? 2. The Network Edge 3. The ...

  4. 分布式一致性算法:Raft 算法(论文翻译)

    Raft 算法是可以用来替代 Paxos 算法的分布式一致性算法,而且 raft 算法比 Paxos 算法更易懂且更容易实现.本文对 raft 论文进行翻译,希望能有助于读者更方便地理解 raft 的 ...

  5. 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)

    编者按:这篇文章来自简书的一个位博主Jeffbond,读了好几遍,翻译的质量比较高,原文链接:分布式一致性算法:Raft 算法(Raft 论文翻译),版权一切归原译者. 同时,第6部分的集群成员变更读 ...

  6. Raft 一致性算法论文译文

    本篇博客为著名的 RAFT 一致性算法论文的中文翻译,论文名为<In search of an Understandable Consensus Algorithm (Extended Vers ...

  7. Raft一致性共识算法论文学习

    论文地址:https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf 看完raft共识算法,脑袋非常懵,所以写一篇学习笔记,记录一下. raft ...

  8. 搜索学术论文訪问google的能用的几个IP地址

    google搜索引擎打不开时的解决的方法,谷歌(google)的IP是多少? google IP镜像. 这里搜集了几个经过測试可用的IP,用来在不能域名訪问google的时候进行訪问 更新一个最新的. ...

  9. 【论文阅读】分布一致性算法Paxos 《The Part-Time Parliament》

    论文原文.翻译稿.PPt:https://1drv.ms/u/s!Ak-jGl23kTuMimOZzV-MyLQUYmsN?e=DL1xHD

  10. 服务发现 ap cp 强一致性 最终一致性 dns vip ip

    为什么基于域名 08 | 服务发现:到底是要CP还是AP? https://time.geekbang.org/column/article/208171 为什么需要服务发现?先举个例子,假如你要给一 ...

随机推荐

  1. R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点

    目录 R 语言入门学习笔记:软件安装踩坑记录--删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点 软件版本及环境 遇到的问题描述 问题的分析和探究 最终的解决方案 ...

  2. MegaCli命令使用整理

    1. 软件安装 rpm -ivh Lib_Utils-1.00-09.noarch.rpm rpm -ivh MegaCli-8.02.21-1.noarch.rpm 2. 常用命令 /opt/Meg ...

  3. Springboot3.0+spring6.0+JDK17+配置jsp和打war包

    由于某些缘故,公司的产品需要升级,但并不希望花费大量时间重写前端代码(原来的就不是前后分离的).所以虽然spring和springboot都升级为最新的版本,但是依然还是需要支持jsp,并继续用打包为 ...

  4. 从github下好dirsearch后出现要下载文件依赖错误

    pip3 install -r requirements.txt

  5. Java面试知识点(五)hashmap、hashtable和hashset

    1. 关于 HashMap 的一些说法: a) HashMap 实际上是一个 "链表散列" 的数据结构,即数组和链表的结合体.HashMap 的底层结构是一个数组,数组中的每一项是 ...

  6. “科来杯”第九届山东省大学生网络安全技能大赛决赛部分wp

      1.损坏的流量包 wireshark打不开,丢进winhex里,找关键字flag 哎,没找到. 那就仔细看看,在最后发现一串类似base64的密文 base64解密 得到flag 2.签到题 一个 ...

  7. 测试人必会 K8S 操作之 Dashboard

    在云计算和微服务架构的时代,Kubernetes (K8S) 已成为管理容器化应用的标准.然而,对于许多新手来说,K8S 的操作和管理常常显得复杂而神秘.特别是,当你第一次接触 K8S Dashboa ...

  8. Git 清除缓存账密

    [已解决] git push 报错:git: 'credential-manager' is not a git command. See 'git --help'. 解决方案1)运行 git con ...

  9. oeasy教您玩转vim - 49 - # 命令进阶

    ​ 命令进阶 回忆上节课内容 我们上次研究vim的历史 为什么会有行编辑器这种东西 竟然是当年 没有显示器只有纸的时代的无奈之举 vim进化到今天 依然还有好多人使用 而且ssh连接的时候直接vim就 ...

  10. DuiLib的编译

    Duilib编译需要注意两点: 加入预处理器:WIN32;_DEBUG;_WINDOWS;UILIB_STATIC; 到这一步还是报错,报错的是DuiString  +=  这一行报错,还有Util这 ...