--- tags: Paper, StyleGAN, CLIP --- # 【論文筆記】StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery 論文名稱: StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery 發表於 ICCV 2021,論文連結: https://arxiv.org/abs/2103.17249 ___ 這篇研究旨在找到方法來透過文字對圖像進行修飾 (image manipulation),意即透過文字輸入來改變指定的圖像 attribute,以下為一些研究成果: ![](https://i.imgur.com/e1AnqXO.png) 自 StyleGAN 問世之後,近期有越來越多研究關於如何利用 StyleGAN 的 latent space 來對圖像進行各式編輯,然而多數方法都需要人工檢查或利用標註的資料,才能對圖像進行語意上具有意義的操作。 StyleCLIP 利用了 CLIP (Contrastive Language-Image Pre-training) 模型的 encoding 能力與 StyleGAN 的生成能力,研究出一個可以只單純用文字輸入來編輯圖像的介面,而不需要人工進行資料的預處理。 了解 StyleCLIP 使用的方法之前,我們需要先對 StyleGAN 和 CLIP 兩個模型有一些簡單的認識。 ## 預備知識 ### CLIP CLIP 能夠將文字與圖片對應起來,給予指定的文字與圖像間一個相似程度的分數。其中心思想在於將文字與圖像對應到同一個 latent space 來進行比較: ![](https://i.imgur.com/D67SOXL.png) 輸入文字與圖像,兩者會分別通過 text encoder 與 image encoder 輸出對應的 embedding,計算內積得到相似分數,分數越高,代表文字和圖片越有可能指涉同樣的事物。 CLIP 模型是透過大量的文字和圖像配對 (pair) 來訓練而成的。 ### StyleGAN ![](https://i.imgur.com/tg1MIHZ.png =500x) 上圖左邊為傳統 GAN 模型的 generator,右邊為 StyleGAN 的 generator 架構。和傳統 GAN 不同的是,style-based generator 輸入的 latent $z \in Z$ 會先通過一個8層的 mapping network 得到 $w \in W$,$w$ 即可以用來控制圖像 style。而後 $w$ 會經過矩陣 A 做仿射轉換 (affine transformation) 後得到 style,輸入 18 層的 synthesis network 的每一個 layer,經過 network 產生出一張生成的圖像。 正是因為這樣的架構,StyleGAN 的 latent spaces 提供了編輯圖像的能力。 論文連結: A Style-Based Generator Architecture for Generative Adversarial Networks https://arxiv.org/abs/1812.04948 ### Latent Space Editing 利用 StyleGAN 的 intermediate latent spaces 可以進行有意義且細緻的影像編輯,而迄今為止也有許多研究專注在如何能利用 latent spaces 產生更好的圖像編輯結果。 這篇論文提出的方法中,使用到的 $W^+$ 和 $S$ 兩個 latent spaces,其中 $W^+$ 是 $W$ 的延伸,對於所有 $w_{s} \in W^+$,$w_{s}$ 串接 18 個 $w$,即串接了餵向 synthesis network 每一層的 latent vector $w \in W$,Style space $S$ 則是由 style $s$ 所構成。 ![](https://i.imgur.com/xgu7T4A.png) 研究表示比起 $W$,$W^+$ 和 $S$ 更加 disentagled (意思接近於獨立、分解),關於 $W^+$ 和 $S$ 詳細的探討內容可以參考以下兩篇論文: Image2StyleGAN: How to Embed Images Into the StyleGAN Latent Space? https://arxiv.org/abs/1904.03189 StyleSpace Analysis: Disentangled Controls for StyleGAN Image Generation https://arxiv.org/abs/2011.12799 ## 方法 這篇論文一共提出了三種方法進行基於文字的圖像編輯,分別為 latent optimization,latent mapper 和 global direction,三種方法的比較列於下表: ![](https://i.imgur.com/zjj6GPQ.png =500x) ### Latent Optimization 下圖顯示在 runtime 時以文字進行圖像編輯的流程: ![](https://i.imgur.com/cdOOmw3.png) 給定一張輸入的圖像,進行 image inversion 後得到 latent code $w_{s} \in W^+$。複製 $w_{s}$ 成 $w$ 並輸入進預訓練好的 StyleGAN,會得到一張輸出的圖片。將此圖和給定的文字提示 (text prompt) $t$ 輸入 CLIP,可以計算出圖片和文字之間的 cosine distance (越小代表兩者越接近)。 為了讓輸出的圖片和原始輸入的圖片可以維持同一個人物的樣貌,這裡另外用了預訓練的 network 做人臉辨識。定義輸入 CLIP 的文字和圖片之間的 cosine distance 為 $D_{CLIP}$,$w_{s}$ 和 $w$ 之間的距離為 $L_{2}$,人臉辨識的 loss 為 $L_{ID}$,目標為利用 gradient descent 最小化以下的 loss: ![](https://i.imgur.com/dDDvvUk.png =450x) 此方法中使用到的模型有做 image inversion 的 e4e、預訓練的 StyleGAN2、CLIP、以及做人臉辨識的 ArcFace。 一些利用 latent optimization 得到的圖像編輯結果如下: ![](https://i.imgur.com/aywTM7a.png =500x) ### Latent Mapper Latent optimization 方法之下,每一次編輯圖片都需要花上數分鐘,因此作者提出了一個更有效率的方法:訓練 latent mapper。 ![](https://i.imgur.com/ulxV3Ek.png) 給定輸入的圖像,進行 image inversion 後得到 latent code $w \in W^+$,接著把 $w$ 輸入訓練好的 mapper,這些 mapper 的 network 架構是 fully-connected networks。Mapper 會接著輸出 residual,與 $w \in W^+$ 相加後輸入預訓練好的 StyleGAN,便可以輸出編輯後的圖片。 在 StyleGAN 的論文中有提及,synthesis network 的每一層 layer 可以針對圖像的不同程度的細節進行生成,也因此這些 layers 可以被分成三組,分別是 coarse、medium、fine,$w \in W^+$ 也拆成三部分並分別餵給每一組的 layers。這也是為何這裡的 latent mapper 被設計成三個,如此一來便可以針對不同程度的細節進行修改,甚至在訓練的時候只訓練其中一個 mapper,好讓其他 layers 控制的細節得以保持不被修改。 要訓練 latent mapper,需要最小化 loss function。定義編輯後的圖片與文字提示在 CLIP latent space 之間的 cosine distance 為 $L_{CLIP}$,mapper 輸出的 residual 的 $L_{2}$ norm 為 $L_{2}$,人臉辨識的 loss 為 $L_{ID}$,loss function 的總和如下: ![](https://i.imgur.com/hpDp1YA.png =400x) 目標即為最小化 loss 以得到最佳化的 mapper。 值得注意的是,每一組 text-guided mapper 僅能對應一段文字提示,也就是說一組 mapper 是針對一段特定的文字提示所訓練出來的。 以下是一些以 latent mapper 生成的圖像編輯結果: ![](https://i.imgur.com/TKt8j78.jpg =500x) ### Global Direction 為了能夠進行更細緻與 disentagled 的圖像編輯,作者提出了 global direction 方法,將一段輸入的文字提示對應到 style space $S$ 的一個 global direction,並對目標 latent code $s \in S$ 進行操縱。 Global direction 的核心想法是希望可以在 style space $S$ 裡找到一個特定 direction $\Delta s$,只要遵循這個 direction 改變 latent code $s$,對於任意的圖像,都可以編輯指定的 attribute。 例如以下的圖示表達 grey hair 這個 attribute 在 $S$ 中遵循某一個特定的方向: ![](https://i.imgur.com/xWpexc6.png) 對於一個輸入圖像的對應的 latent code $s \in S$,其通過StyleGAN生成的圖像為 $G(s)$,而通過 global direction $\Delta s$ 編輯後的圖像為 $G(s + \alpha \Delta s)$,這裡 $\alpha$ 為 manipulation strength,$\alpha$ 值越大,代表受 $\Delta s$ 的影響越大。 作者透過 CLIP 做 encoding 的能力來估算 $\Delta s$。我們知道 CLIP 模型會將輸入的文字和圖像對應到同一個 latent space,在訓練 CLIP 的過程中,所有的 latent code 都會被正規化 (normalize),因此只有 latent code 的方向具有意義。 給定輸入的圖像和目標圖像,定義兩者通過 image encoder 得到的差距為 $\Delta i$ ,並定義和這組圖像對應的中性文字和目標文字通過 text encoder 得到的差距為 $\Delta t$,在 CLIP space 裡面,$\Delta i$ 和 $\Delta t$ 應接近平行且接近相等。因此,通過以文字提示獲得 $\Delta t$,亦即得到 $\Delta i$,我們可以評估 $s$ 中每一個 dimension 和 $\Delta i$ 的相關程度來計算出 $\Delta s$。 若針對 $s$ 的某一 dimension 做干擾得到 $s + \alpha \Delta s_{c}$,其通過StyleGAN生成的圖像為 $G(s + \alpha \Delta s_{c})$。將原圖像與干擾後的圖像輸入 image encoder 後得到的 embedding 之間的差距定義為 $\Delta i_{c}$,則 $\Delta i$ 在此 dimension 上的相關程度定義為 $\Delta i_{c}$ 在 $\Delta i$ 上的投影 $\beta_{c}$。 ![](https://i.imgur.com/ARMvp1w.png) 有了每一個 dimension 上的相關程度後,我們忽略那些相關程度低於給定的 threshold $\beta$ 的數值,亦即: ![](https://i.imgur.com/6Nwd5tu.png =350x) $\beta$ 稱作 disentanglement threshold,可以用來控制圖像編輯時的 disentaglement。下圖即為文字提示 grey hair 在不同的 $\alpha$ 與 $\beta$ 下的圖像編輯結果。 ![](https://i.imgur.com/LZvzq02.png) 由結果我們可以發現,$\alpha$ 越大,則灰髮越明顯,反之負的 $\alpha$ 值會傾向讓髮色更黑;當 $\beta$ 值越大,只有我們指定的 attribute (這裡為髮色) 會受影響,而當 $\beta$ 值越小,一些相關的 attribute 也會受影響,例如上圖結果中,皺紋和臉型也會跟著髮色改變。 以下為一些利用 global direction 方法生成的圖像結果: ![](https://i.imgur.com/EUHfyF5.jpg) 可以看到 global direction 不僅可以編輯人像,也可以編輯其他種類的圖像,例如汽車、狗等等。 ## 與其他研究的比較 首先針對各式基於文字的圖像編輯方法進行比較。作者比較了 TediGAN、本論文提出的 global direction 方法和 latent mapper 方法,結果如下: ![](https://i.imgur.com/Ao493Ql.jpg) 輸入的文字提示分別為 Trump、mohawk、without wrinkles。文字提示 Trump 的結果顯示, global direction 能夠抓住一些相關的特徵,但並不完全是 Trump 的面貌,而 latent mapper 編輯的結果較為成功,可知 global direction 在改變人物身份上比較沒有那麼好的效果;文字提示為 without wrinkles 的結果顯示,global direction 能夠成功消除皺紋,且同時保持其他的特徵不被改變,但 latent mapper 失敗了,可知 global direction 能夠完成較為 disentagled 的任務。此外,TediGAN 在三個文字提示之下修改都失敗了。 Global direction 方法和其他 state-of-the-art StyleGAN manipulation 方法的比較結果如下: ![](https://i.imgur.com/uUrUDWI.jpg =600x) GANSpace 在改變指定特徵時,常會連帶改變了其他特徵,例如膚色或亮度,InterFaceGAN 則出現了完全改變人物身份的狀況。StyleSpace 和本篇論文提出的 global direction 所生成的圖像結果較為相似,能夠只改變指定特徵並維持其他特徵不變。 ___ 作者以 global direction 方法架設了一個 demo 網站,可以讓使用者自行上傳輸入圖像與調整參數,並得到圖像編輯結果,網站連結: https://replicate.com/orpatashnik/styleclip?utm_source=arxiv