論文名稱:
StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery
發表於 ICCV 2021,論文連結:
https://arxiv.org/abs/2103.17249
這篇研究旨在找到方法來透過文字對圖像進行修飾 (image manipulation),意即透過文字輸入來改變指定的圖像 attribute,以下為一些研究成果:
自 StyleGAN 問世之後,近期有越來越多研究關於如何利用 StyleGAN 的 latent space 來對圖像進行各式編輯,然而多數方法都需要人工檢查或利用標註的資料,才能對圖像進行語意上具有意義的操作。
StyleCLIP 利用了 CLIP (Contrastive Language-Image Pre-training) 模型的 encoding 能力與 StyleGAN 的生成能力,研究出一個可以只單純用文字輸入來編輯圖像的介面,而不需要人工進行資料的預處理。
了解 StyleCLIP 使用的方法之前,我們需要先對 StyleGAN 和 CLIP 兩個模型有一些簡單的認識。
CLIP 能夠將文字與圖片對應起來,給予指定的文字與圖像間一個相似程度的分數。其中心思想在於將文字與圖像對應到同一個 latent space 來進行比較:
輸入文字與圖像,兩者會分別通過 text encoder 與 image encoder 輸出對應的 embedding,計算內積得到相似分數,分數越高,代表文字和圖片越有可能指涉同樣的事物。
CLIP 模型是透過大量的文字和圖像配對 (pair) 來訓練而成的。
上圖左邊為傳統 GAN 模型的 generator,右邊為 StyleGAN 的 generator 架構。和傳統 GAN 不同的是,style-based generator 輸入的 latent 會先通過一個8層的 mapping network 得到 , 即可以用來控制圖像 style。而後 會經過矩陣 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
利用 StyleGAN 的 intermediate latent spaces 可以進行有意義且細緻的影像編輯,而迄今為止也有許多研究專注在如何能利用 latent spaces 產生更好的圖像編輯結果。
這篇論文提出的方法中,使用到的 和 兩個 latent spaces,其中 是 的延伸,對於所有 , 串接 18 個 ,即串接了餵向 synthesis network 每一層的 latent vector ,Style space 則是由 style 所構成。
研究表示比起 , 和 更加 disentagled (意思接近於獨立、分解),關於 和 詳細的探討內容可以參考以下兩篇論文:
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,三種方法的比較列於下表:
下圖顯示在 runtime 時以文字進行圖像編輯的流程:
給定一張輸入的圖像,進行 image inversion 後得到 latent code 。複製 成 並輸入進預訓練好的 StyleGAN,會得到一張輸出的圖片。將此圖和給定的文字提示 (text prompt) 輸入 CLIP,可以計算出圖片和文字之間的 cosine distance (越小代表兩者越接近)。
為了讓輸出的圖片和原始輸入的圖片可以維持同一個人物的樣貌,這裡另外用了預訓練的 network 做人臉辨識。定義輸入 CLIP 的文字和圖片之間的 cosine distance 為 , 和 之間的距離為 ,人臉辨識的 loss 為 ,目標為利用 gradient descent 最小化以下的 loss:
此方法中使用到的模型有做 image inversion 的 e4e、預訓練的 StyleGAN2、CLIP、以及做人臉辨識的 ArcFace。
一些利用 latent optimization 得到的圖像編輯結果如下:
Latent optimization 方法之下,每一次編輯圖片都需要花上數分鐘,因此作者提出了一個更有效率的方法:訓練 latent mapper。
給定輸入的圖像,進行 image inversion 後得到 latent code ,接著把 輸入訓練好的 mapper,這些 mapper 的 network 架構是 fully-connected networks。Mapper 會接著輸出 residual,與 相加後輸入預訓練好的 StyleGAN,便可以輸出編輯後的圖片。
在 StyleGAN 的論文中有提及,synthesis network 的每一層 layer 可以針對圖像的不同程度的細節進行生成,也因此這些 layers 可以被分成三組,分別是 coarse、medium、fine, 也拆成三部分並分別餵給每一組的 layers。這也是為何這裡的 latent mapper 被設計成三個,如此一來便可以針對不同程度的細節進行修改,甚至在訓練的時候只訓練其中一個 mapper,好讓其他 layers 控制的細節得以保持不被修改。
要訓練 latent mapper,需要最小化 loss function。定義編輯後的圖片與文字提示在 CLIP latent space 之間的 cosine distance 為 ,mapper 輸出的 residual 的 norm 為 ,人臉辨識的 loss 為 ,loss function 的總和如下:
目標即為最小化 loss 以得到最佳化的 mapper。
值得注意的是,每一組 text-guided mapper 僅能對應一段文字提示,也就是說一組 mapper 是針對一段特定的文字提示所訓練出來的。
以下是一些以 latent mapper 生成的圖像編輯結果:
為了能夠進行更細緻與 disentagled 的圖像編輯,作者提出了 global direction 方法,將一段輸入的文字提示對應到 style space 的一個 global direction,並對目標 latent code 進行操縱。
Global direction 的核心想法是希望可以在 style space 裡找到一個特定 direction ,只要遵循這個 direction 改變 latent code ,對於任意的圖像,都可以編輯指定的 attribute。
例如以下的圖示表達 grey hair 這個 attribute 在 中遵循某一個特定的方向:
對於一個輸入圖像的對應的 latent code ,其通過StyleGAN生成的圖像為 ,而通過 global direction 編輯後的圖像為 ,這裡 為 manipulation strength, 值越大,代表受 的影響越大。
作者透過 CLIP 做 encoding 的能力來估算 。我們知道 CLIP 模型會將輸入的文字和圖像對應到同一個 latent space,在訓練 CLIP 的過程中,所有的 latent code 都會被正規化 (normalize),因此只有 latent code 的方向具有意義。
給定輸入的圖像和目標圖像,定義兩者通過 image encoder 得到的差距為 ,並定義和這組圖像對應的中性文字和目標文字通過 text encoder 得到的差距為 ,在 CLIP space 裡面, 和 應接近平行且接近相等。因此,通過以文字提示獲得 ,亦即得到 ,我們可以評估 中每一個 dimension 和 的相關程度來計算出 。
若針對 的某一 dimension 做干擾得到 ,其通過StyleGAN生成的圖像為 。將原圖像與干擾後的圖像輸入 image encoder 後得到的 embedding 之間的差距定義為 ,則 在此 dimension 上的相關程度定義為 在 上的投影 。
有了每一個 dimension 上的相關程度後,我們忽略那些相關程度低於給定的 threshold 的數值,亦即:
稱作 disentanglement threshold,可以用來控制圖像編輯時的 disentaglement。下圖即為文字提示 grey hair 在不同的 與 下的圖像編輯結果。
由結果我們可以發現, 越大,則灰髮越明顯,反之負的 值會傾向讓髮色更黑;當 值越大,只有我們指定的 attribute (這裡為髮色) 會受影響,而當 值越小,一些相關的 attribute 也會受影響,例如上圖結果中,皺紋和臉型也會跟著髮色改變。
以下為一些利用 global direction 方法生成的圖像結果:
可以看到 global direction 不僅可以編輯人像,也可以編輯其他種類的圖像,例如汽車、狗等等。
首先針對各式基於文字的圖像編輯方法進行比較。作者比較了 TediGAN、本論文提出的 global direction 方法和 latent mapper 方法,結果如下:
輸入的文字提示分別為 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 方法的比較結果如下:
GANSpace 在改變指定特徵時,常會連帶改變了其他特徵,例如膚色或亮度,InterFaceGAN 則出現了完全改變人物身份的狀況。StyleSpace 和本篇論文提出的 global direction 所生成的圖像結果較為相似,能夠只改變指定特徵並維持其他特徵不變。
作者以 global direction 方法架設了一個 demo 網站,可以讓使用者自行上傳輸入圖像與調整參數,並得到圖像編輯結果,網站連結:
https://replicate.com/orpatashnik/styleclip?utm_source=arxiv