模板建站价格,dw网页制作怎么设置背景颜色,企业分类信息网,北京综素网址Prompt-to-Prompt Image Editing with Cross Attention Control (P2P)
Amir Hertz, Tel Aviv University, ICLR23, Paper, Code
1. 前言
编辑对这些生成模型来说是具有挑战性的#xff0c;因为编辑技术的一个固有特性是保留大部分原始图像#xff0c;而在基于文本的模型中…Prompt-to-Prompt Image Editing with Cross Attention Control (P2P)
Amir Hertz, Tel Aviv University, ICLR23, Paper, Code
1. 前言
编辑对这些生成模型来说是具有挑战性的因为编辑技术的一个固有特性是保留大部分原始图像而在基于文本的模型中即使对文本提示进行微小修改也往往会导致完全不同的结果。现有技术的方法通过要求用户提供空间掩模来定位编辑从而忽略掩模区域内的原始结构和内容来减轻这种情况。在本文中我们追求一个直观的示编辑框架其中编辑仅由文本控制。为此我们深入分析了一个文本条件模型并观察到交叉注意力层是控制图像空间布局与提示中每个单词之间关系的关键。根据这一观察结果我们提出了几个仅通过编辑文本提示来监控图像合成的应用程序。这包括通过替换单词进行本地化编辑通过添加规范进行全局编辑甚至精细地控制单词在图像中的反映程度。我们在不同的图像和提示上展示了我们的结果展示了高质量的合成和对编辑提示的逼真度。
2. 整体思想
通常U-Net结构用Cross-Attention接入文本再细致一点是Q来自扩散模型K和V来自文本Prompt。在Cross-Attention中细微的语义改变可能对采样有很大影响。本文希望固定背景和布局的语义细微调整特定文字的语义。换句话说本文微调Cross- Attention中的注意力图达到控制的目的。但是本文仅从Prompt出发无法像Mask方法保证背景完全一致性但从效果来看还是很好的。是值得细读的一篇文章。
3. 方法
设 I I I是由文本引导的扩散模型使用文本提示 P P P和随机种子 s s s生成的图像。我们的目标是编辑仅由编辑提示 P ∗ P^* P∗引导的输入图像从而生成编辑图像 I ∗ I^* I∗。如果我们想固定种子消除随机性然后仅通过改变文本来进行编辑就会出现以下问题。
可以看到原始图片的结构和背景都被替换。本文的观察来自于交叉注意力的注意力图这也是融合文本的地方。通过下图可以看到如果固定了注意力图那么的确可以达到较好的可编辑性。 注意力图在Cross-Attention中可以表示为 M s o f t m a x ( Q K T d ) M softmax(\frac{QK^T}{\sqrt{d}}) Msoftmax(d QKT) 其中 M i , j M_{i,j} Mi,j定义像素 i i i上的第 j j j个令牌的值的权重并且其中 d d d是Keys和Queries的潜在投影维度。直观地说交叉注意力输出 M V M V MV是值 V V V的加权平均值其中权重是与 Q Q Q和 K K K之间的相似性相关的注意力图 M M M。在实践中为了提高它们的表现力并行使用多头注意力然后将结果连接起来并通过学习的线性层来获得最终输出。
我们回到我们的关键观察点——生成图像的空间布局和几何结构取决于交叉注意力图。像素和文本之间的这种交互如下图所示其中绘制了平均注意力图。可以看出像素更容易被描述它们的单词所吸引例如熊的像素与单词“熊”相关。请注意进行平均是为了可视化在我们的方法中每个头部的注意力图都是分开的。有趣的是我们可以看到图像的结构已经在扩散过程的早期步骤中确定。 设 D M ( z t , P , t , s ) DM(z_t,P,t,s) DM(zt,P,t,s)是扩散过程的单个步骤 t t t的计算其输出噪声图像 z t − 1 z_{t−1} zt−1和注意力图 M t M_t Mt如果不使用则省略。我们用 D M ( z t , P , t , s ) { M ← o ~ M } DM(z_t,P,t,s)\{M←õM\} DM(zt,P,t,s){M←o~M}表示扩散步骤在该步骤中我们用额外的给定映射 M ^ \hat M M^覆盖注意力映射 M M M但保持所提供提示的值 V V V。我们还用 M t ∗ M^*_t Mt∗表示使用编辑提示 P ∗ P^* P∗生成的注意力图。最后我们将 E d i t ( M t M t ∗ t ) Edit(M_tM^*_tt) Edit(MtMt∗t)定义为一个通用的编辑函数在原始图像和编辑图像的生成过程中接收它们的第 t t t个注意力图作为输入。
我们用于受控图像生成的通用算法包括同时对两个提示执行迭代扩散过程其中根据所需的编辑任务在每个步骤中应用基于注意力的操作。我们注意到为了使上述方法发挥作用我们必须修复内部随机性。这是由于扩散模型的性质即使对于相同的提示两个随机种子也会产生截然不同的输出。形式上我们的通用算法是 这里其实就是把你想编辑的 P ∗ P^* P∗产生的注意力图替换或者修改原来 P P P的注意力图。图和替换或修改如下
单词交换。例如 P P Pa big red bicycle到 P ∗ P^* P∗“a big red car”。主要的挑战是在处理新提示的内容的同时保留原始组成。为此我们将源图像的注意力图注入到具有修改提示的生成中。然而所提出的注意力注入可能会过度约束几何结构尤其是当涉及大型结构修改时如“汽车”到“自行车”。我们通过建议更温和的注意力约束来解决这一问题 E d i t ( M t , M t ∗ , t ) : { M t ∗ if t τ M t otherwise Edit\left(M_{t}, M_{t}^{*}, t\right):\left\{\begin{array}{ll} M_{t}^{*} \text { if } t\tau \\ M_{t} \text { otherwise } \end{array}\right. Edit(Mt,Mt∗,t):{Mt∗Mt if tτ otherwise
添加新短语。例如 P P Pa castle next to a river到 P ∗ P^∗ P∗ “children drawing of a castle next to a river”。为了保留共同的细节我们只对来自两个提示的共同标记应用注意力注入。形式上我们使用对齐函数A该函数从目标提示 P ∗ P^* P∗接收令牌索引并在不匹配的情况下输出相应的令牌索引inP或None。然后编辑功能由下式给出 ( E d i t ( M t , M t ∗ , t ) ) i , j : { ( M t ∗ ) i , j if A ( j ) N o n e ( M t ) i , A ( j ) otherwise (Edit\left(M_{t}, M_{t}^{*}, t\right))_{i,j}:\left\{\begin{array}{ll} (M_{t}^{*})_{i,j} \text { if } A(j)None \\ (M_{t})_{i,A(j)} \text { otherwise } \end{array}\right. (Edit(Mt,Mt∗,t))i,j:{(Mt∗)i,j(Mt)i,A(j) if A(j)None otherwise
注意力重新加权。例如考虑提示 P P P“一个蓬松的红色球”并假设我们想使球或多或少蓬松。为了实现这种操作我们用参数 c ∈ [ − 2 2 ] c∈[−22] c∈[−22]缩放指定标记 j ∗ j^* j∗的注意力图从而产生更强/更弱的效果。其余的注意力图保持不变。即 ( E d i t ( M t , M t ∗ , t ) ) i , j : { c ( M t ) i , j if j j ∗ ( M t ) i , A ( j ) otherwise (Edit\left(M_{t}, M_{t}^{*}, t\right))_{i,j}:\left\{\begin{array}{ll} c(M_{t})_{i,j} \text { if } jj^* \\ (M_{t})_{i,A(j)} \text { otherwise } \end{array}\right. (Edit(Mt,Mt∗,t))i,j:{c(Mt)i,j(Mt)i,A(j) if jj∗ otherwise
4. 实验 上图是通过不同数量的扩散步骤注入注意力。在顶部我们显示源图像和提示。在每一行中我们通过替换文本中的单个单词并注入源图像的交叉注意力图来修改图像的内容该图的范围从0%左侧到100%右侧的扩散步骤。请注意一方面如果没有我们的方法就不能保证保留任何源图像内容。另一方面在所有扩散步骤中注入交叉注意力可能会过度约束几何结构导致对文本提示的保真度较低例如汽车第三排变成了具有完全交叉注意力注入的自行车。
更多结果如下