Prompt-to-Prompt Image Editing with Cross Attention Control 论文阅读
date
Jun 14, 2023
Last edited time
Jun 14, 2023 05:21 AM
status
Published
slug
Prompt-to-Prompt-Image-Editing-with-Cross-Attention-Control论文阅读
tags
DL
CV
DDPM
summary
type
Post
Field
Plat
Motivation
- 相比于直接 text2image 生成,text-guided editing 要求原来图像绝大部分区变化不大,目前的方法需要用户指定 mask 来引导生成。
- 本文发现 cross-attention 对于 image 的布局控制很重要。
- 目前已有的纯 text-guided 的 editing(text2live)text2live,目前只能修改图片的纹理(外观),不能修改复杂的实体结构,比如把自行车换成一辆车。并且,他还需要训练。
Contribution
- 本文的 key idea 在于把 cross-attention map 嵌入到 diffusion 的过程中,利用 pixel 和 token 的关系来控制生成。
- 如上面的图所示,本文可以改变某个简单的 token,从而保持大部分场景不变,而改变小部分区域的置换;也可以全局地改变整个图;当然也可以加入一些新的信息。
- 本文的方法与别的方法不同,这个方法不需要——training, finetuning, extra data, optimization。只需要简简单单改一下输入的 prompt 即可。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0882518c-97c8-4a02-b167-38152e389b72%2FUntitled.png?table=block&id=df858adb-99bf-4b21-82a3-eed277b48bac&cache=v2)
Method
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2e37469b-5a82-4941-8097-b670fcd28787%2FUntitled.png?table=block&id=bda132be-8bf3-48a1-9574-68faf615abed&cache=v2)
- 先做 text-to-image 的 attention 操作,得到每个 token 对应的 attention map,接着有三种操作:
- 1token 换词,那么直接替换 attention map 即可。
- 加词,则是直接在对应位置加入新的 attention map。
- token 增强——直接提高对应的 map 的权重。
- 都建立在已经用一个 prompt 输入的基础上,但是如果是只有一个图,怎么直接修改? 用 captioning?)
- 生成的图片不仅和 random seed 有关,text embedding 与 pixel 之间相互的关系也很重要。(diffusion model 利用 cross-attention 来融合图文的信息并且预测噪声的,所以可以用 attention map 把关系给打出来~ 一个很有趣的发现:denoise 的早期就已经知道东西的位置和方向了,那么能否在这做一些加速的操作?以及后面的过程不要 guidance 会有问题吗?)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4f49f792-a245-4a99-a930-b8930baaf4e1%2FUntitled.png?table=block&id=0c701447-0e53-4558-b7ec-5bc60c59f02b&cache=v2)
- 下面是一个例子:只保留 butterfly 的 attention map,可以生成各种样式的图案:
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F086f0078-0b17-43ab-9adc-5026756d6dbb%2FUntitled.png?table=block&id=8e992856-30c9-4c53-b5ae-f4697c770527&cache=v2)
- 算法流程如下,必须确保随机种子一致才行。Edit() 是各种编辑操作。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1a34c431-6e8f-46b6-934a-f96260655503%2FUntitled.png?table=block&id=4f6e9469-ab99-46ca-9fe1-dd50449d8688&cache=v2)
- 不同程度的 injection(利用 t 来控制需要 inject 的步数)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fcbb4a8cf-d443-4da2-a214-e6b59a551d4e%2FUntitled.png?table=block&id=3d5117c6-3aed-40b0-ba66-9d23aebd38bf&cache=v2)
Application
Text-only Localized Editing
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F410ea551-14f4-4001-b294-fd169c98191c%2FUntitled.png?table=block&id=9e997c6f-9b70-469d-b271-3ea305329ab4&cache=v2)
Fader Control using Attention Re-weighting
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff72378b8-8a46-4917-b8d0-c814c62a5de7%2FUntitled.png?table=block&id=d1e06cdb-1efc-4891-b1d1-d223261e5b26&cache=v2)
Real Image Editing
- 最简单的做法:给 init image + 一句话,然后基于这句话进行重新改变的编辑。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F08e636b3-75d8-41a5-a8da-900277aa78c5%2FUntitled.png?table=block&id=b019cbc0-0a8e-49a0-8632-7f9feb496c57&cache=v2)
- 部分场景会失效——因为过大的 scale 会导致失真,过小的 scale 则导致不太能编辑。
- 解决方案:用 attention map 自动提取 mask 区域后,进行 blended diffusion 的操作。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4d0c6b49-7d1e-4aa5-8ed4-5041670f711f%2FUntitled.png?table=block&id=93d66e9c-6136-4ffd-9510-d8a654608232&cache=v2)
Limitations
- 目前的 inversion 需要用户给一个合理的 prompt。
- 目前的 cross-attention 是再小分辨率的层级做的,所以对于细节的生成不太好。
- 目前的方法不能对图中的物体进行移位操作。