博客 / 詳情

返回

MasaCtrl 論文匯報

MasaCtrl發佈於ICCV2023, 是一個比較老的論文,這裏研究這個主要是因為和研究內容相近。我想着是就算方法可能已經沒那麼新,其中的思想或多或少是可以借鑑的。

MasaCtrl主要致力於解決兩個問題:

  1. T2I生成圖像,如生成連續圖像以做動畫需求等時(其實套到我們的課題裏就是對應大圖裏的各個小圖)很難保持一致或很難完成複雜的non-rigid editing任務,其中一致性保持失敗的樣例如下圖中圖所示:image
    這貓在沒有masactrl模型加持下花紋明顯與原圖不一致,這在生成連續圖像時是致命的。
  2. 就算部分模型(如Imagic: Text-based real image editing with diffusion models. )較好的解決了圖像的一致性問題,但他需要微調,不管是生成動畫還是像我們任務一樣要生成小圖拼接合成大圖的情形,需要微調意味着大量的算力和時間成本。

而MasaCtrl就是致力於同時解決這兩個問題,即開發出一種無需微調即能夠保持圖像一致性的model。

為了實現上述目標,MasCtrl在原有基於LDM的base checkpoint(如sdxl-turbo、 SD1.5等)上做了如下改動:

  1. 提出了Mutual Self-Attention機制。
  2. 設計了能夠提取關鍵信息、引導Mutual Self-Attention的mask,通過cross-attention得到。

下面分別對其進行闡述:

1.Mutual Self-Attention

Mutual Self-Attention與Cross-Attention不同,cross-attention是經過embedding後的prompt和\(Z_t\)的交叉注意力,目的是為了將Prompt融入latent space,以改變擴散方向至prompt要求(如下圖)。在擴散過程中,經過Inversion後反向傳播 t 時刻的潛在表示\(Z_T\)可以在訓練中得到query矩陣\(Q_z\),與來自Prompt得到的\(presentation-\tau_\theta\)訓練得到的矩陣Key, Value\(K_\tau、V\tau\)做公式(1)操作:

\(\text{CrossAttention}(Q_z, K_\tau, V_\tau) = \text{softmax}\left( \frac{Q_z K_\tau^T}{\sqrt{d_z}} \right) V_\tau \tag{1}\) (1)

image

而mutual self-attention則不同,它所做的是兩個擴散過程中,同步位點之間的注意力操作。首先生成一幅圖像或反轉一幅真實圖像,形成源圖像合成的擴散過程(DP1)和生成新圖像或編輯現有圖像的新擴散過程(DP2)中,可以使用 DP2 自特徵中的查詢特徵來查詢 DP1 自特徵中相應的 Key 和 Value 特徵。如下圖,也就是對Target圖像中的\(Q,讓他與Source圖像中的K_S,V_S\)進行點積運算\(\text{CrossAttention}(Q, K_S, V_S)\),以在訓練後得到保留源圖像特徵元素的,並帶有新提示詞生成的semantic layout的新的\(Z_0\)

image

值得注意的是,Mutual Self-Attention之被設計在了Unet的decoder部分,這是因為可以觀察到 U-Net 淺層(如編碼器部分)的query特徵太過於抽象,無法獲得與修改後的提示相對應的清晰佈局和結構(如下圖所示)。因此無法獲得所需的layout。因此在decoder階段才更好。

image

2.Mask-Guided Mutual Self-Attention

Key: foreground and the background, segment

為什麼在進行復雜的non-rigid操作時新圖像不容易保持與原圖像的一致性呢?這主要是因為背景和對象的相似程度過高,因此對foreground和background進行segment是一個可行的方法。作者從參考文獻([10], [32])中瞭解到,與提示詞相關的cross-attention maps包含了大部分的結構信息, 因此利用語義交叉注意圖創建一個掩碼,以區分源圖像 \(I_s\) 和目標圖像 \(I\) 中的foreground和background。

這個是我感覺最有用的部分,就算是不適用MasaCtrl的方法,這個思想也感覺會有用的。我們的課題任務其實也是foreground和background的平衡關係。最重要的是小圖的內容:在前面的實驗中,一直有一個問題,那就是模型生成的圖像具有一定的不穩定性。見下圖:本來應該是每個小圖都是一隻完整的貓,然後共同構成一隻被隱藏的大貓。但是藍色框內生成了一隻貓的局部,而且紅色框內生成的貓幾乎是看不到的。雖然這應該是因為總體優化損失函數導致和小圖失衡,但是如果藉助cross-attention的segment,對找到這個大圖小圖平衡的位點,説不定有奇效。

image

接下來是具體操作:

首先還是兩個Prompt:生成原圖的\(P_S和生成目標圖的P\)分別經過交叉注意力在U-net中前向傳播。同時每個token各自得到一張分辨率為16x16的交叉注意力圖(如下例),然後對其平均分別得到總的、由\(P_S\)與生成原圖的\(U-net\)計算交叉注意力得到的\(Mask:M_S和P與生成target圖像的U-net計算得到的Mask:M\),亦如下圖:

image

然後經由下面三個公式得到最終的交叉注意力輸出\(\overline{f^{l}}\):

image

其中\(f^{l}_o代表前景部分,f^{l}_b代表背景部分\),因此在實際計算時,前景和背景各司其職,對在分割後自己的區域做交叉注意力查詢,即公式8。就可以解決對前景和背景的混淆導致的一致生成失敗。

然後是Pipeline的陳述:image

其實已經很清晰了,原圖\(I_S在經過Encoder,Inversion後得到潛在表示的編碼Z_T\), 先經過T個\(U-net\)直接正常去噪,走LDM、\(Decoder\)得到重建圖像\(I^*_S\)。而對於\(edit圖像I\),為了在能得到合適的Layout後再進行Mutual Self-Attention操作,選取恰當的起點S。即在\(t = T - S\) 以後,對於每一個\(P_S\)\(P\)提示詞下的\(U-net,在 encoder 部分\)與提示詞做交叉注意力查詢操作,得到\(M和M_S\)後通過公式6-8得到最終的\(\overline{f^{l}}\),並在decoder中與前面説的逐層對應的\(\text{CrossAttention}(Q, K_S, V_S)\)合流。如此反覆經過剩下的\(T - S\)步後,得到生成的target圖像\(I\).

這裏額外説一下對免微調的思考:為什麼LoRA需要微調、Imagic需要微調,但是MasaCtrl不需要微調?

微調對模型的再訓練會改變原有參數,引入新的參數。因為LoRA引入新的風格,這是原有生成圖像中所沒有的,因此他需要通過微調。而根據我的理解,保持圖像的一致性,起碼在理論上是個可以不需要微調的事情,因為在原圖上已經給出了足夠的關於原圖的信息。不得不承認,微調是一個在想不出合適的對圖中信息最大化利用的情況下一個解決方案。而為了避免微調這樣多此一舉的事情。應該在不動原參數的情況下。將需要保持一致的信息提取出來。因此他們設計了Mutual Self-Attention和mask來提取原圖、新圖,以及前景、背景這些結構信息。感覺這個思考是有推廣價值的。

免微調另一個好處是可以更好的跟Controlnet等結合,以控制姿勢。

(可不可能完成Controlnet和大模型的交互以生成姿勢以更好的卡像素位置即讓小圖主體自帶的顏色與其大圖對應位置的顏色更相符?)

原論文沒有給出漲點的表格,也沒有消融實驗。最後放幾張實驗結果:

多模型對比:

image

結合Controlnet等的實例:

image

上面提到的兩篇可能作為依據的重要參考文獻:

[10] Amir Hertz, Ron Mokady, Jay Tenenbaum, Kfir Aberman, Yael Pritch, and Daniel Cohen-Or. Prompt-to-prompt image editing with cross attention control. arXiv preprint arXiv:2208.01626, 2022.

[32] Raphael Tang, Akshat Pandey, Zhiying Jiang, Gefei Yang, Karun Kumar, Jimmy Lin, and Ferhan Ture. What the daam: Interpreting stable diffusion using cross attention. arXiv preprint arXiv:2210.04885, 2022.

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.