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. HTML5画布-小球碰撞

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` HTML5画布-小球碰撞 日期:2017-7-18 阿珏 ...

  2. MongoDB文档存储

    非关系型数据库存储 NoSQL,全称 Not Only SQL,意为不仅仅是 SQL,泛指非关系型数据库.NoSQL 是基于键值对的,而且不需要经过 SQL 层的解析,数据之间没有耦合性,性能非常高. ...

  3. 10-Python进程与线程

    Python进程 创建新进程 from multiprocessing import Process import time def run_proc(name): #子进程要执行的代码 for i ...

  4. RD/RT格式

    一.RD RD长度是8字节,包括Type和Value字段. Type字段:2字节 Value字段:6字节 Type字段的取值决定了Value字段的结构.每种类型的Value字段都由两个部分组成,分别是 ...

  5. JVM(Java虚拟机)整理(二):排错调优

    前言 上一篇内容:JVM(Java虚拟机)整理(一) Java 内存模型(JMM)详解 声明:本章节转载自 Info 上 深入理解Java内存模型.PDF文档下载 深入理解Java内存模型[程晓明] ...

  6. CF1862G 题解

    首先这个查询操作很迷,考虑先化简查询操作. 不难发现由于每次是加上一个逆的等差序列,因此一次操作完每个数与它的前驱之差一定会减少,因此加上等差序列的次数就等于全局每个数与它的前驱之差最大值. 又因为会 ...

  7. SpringBoot排查自动装配、Bean、Component、Configuration配置类

    排除自动装配AutoConfiguration @SpringBootApplication( exclude = { DataSourceAutoConfiguration.class, Mybat ...

  8. Python获得操作日志的最后几行记录

    该方法一般用于获得操作日志的最后几行记录 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 f = open('seek.txt', 'rb') 4 ...

  9. msgpack的使用

    1.引入包 <!--msgpack依赖--> <dependency> <groupId>org.msgpack</groupId> <artif ...

  10. SwiftUI学习01-基本使用

    SwiftUI 是苹果推出的一种现代化方式,用于创建跨所有 Apple 平台的用户界面.它通过声明性语法简化了 UI 的开发流程.下面是一个基本的 SwiftUI 示例,展示了如何使用 SwiftUI ...