論文閱讀-Editing in Style: Uncovering the Local Semantics of GANs
概述
簡單來說, 本文針對的是控制和調節GAN模型生成圖像的局部特征.
跟換臉挺像的, 都是根據reference的一些屬性修改原圖片的屬性值, 比如鼻子眼睛. 當然本文的立意在於可解釋性, 現在GAN能生成幾乎以假亂真的圖像, 但是這些圖像為什么是這樣並不太好解釋. 盡管有一些工作可以通過漸進訓練獲得不同分辨率的特征. 但本文的核心是所謂"a disentangled representation", 意思是解纏屬性, 具體來說就是我們關注的屬性(比如人的嘴, 卧室里的枕頭等)可以獨立於其他屬性操作.
本文針對styleGAN的結構, 提出了一種簡單而優雅(作者原話)的方法, 可以將原始圖片中的本地語義特征轉化為reference圖片中的特征.
實際上face swapping有一些交換圖片表情的工作, 和本文很像. 但本文作者表示他們的模型是獨特的, 不需要換臉常用的空間處理, 比如扭曲和合成.
方法
特征分解
一圖流解釋全部.
真的是簡單而優雅...作者做特征分解的基本方法是, 對生成器的隱藏層做K-means, 然后k個類人工監督一下類別.(啊這....)
特征修改
StyleGAN
本文主要基於styleGAN進行屬性修改, styleGAN那篇文章我也看過屬實難讀, 建議移步其他人的解讀增進理解.
建議閱讀: https://zhuanlan.zhihu.com/p/62119852
styleGAN的結構如上圖所示. 輸入的latent code z經過一個非線性變換變成\(w\), 這個\(w\)經過一個仿射變換A, 輸入到生成器G中用以控制每一層的style. 作者將仿射變換后變化得到的style向量命名為\(\sigma\).
在本文中, 作者將target圖片\(S\)和reference的圖片\(R\)的\(\sigma\)經過styleGAN提取出來, 並給出了全局變換的公式:
也就是生成圖片G的\(\sigma\)的獲取方法, \(\lambda \isin [0,1]\). 這個公式獲得的圖片G可以獲得R全部的特征, 而丟失所有的S圖片特征.
為了只改變局部的特征(而不是吸收全部R的特征), 作者啟用一個矩陣轉化:
Q是個半正定矩陣, 從而確定R和S對G的影響. 實際上本文直接做了個對角矩陣, 作者說這是查詢向量, 實際上就是把R的特征直接替換掉S上的特征而已.
那么選擇\(Q\)中的值\(q\)就很重要了, 已知\(q \isin [0,1]^C\), 那么對角矩陣\(Q\)里誰是1誰是0就確定了我們要替換什么特征.
做法簡單粗暴:
這個公式體現了k-means時各個通道對k類的貢獻, 作者排了個序, 然后最相關的那一行q定為1, 然后逐漸衰減..(啊這...)
實驗
雖然方法很簡單但結果卻是挺離譜..
總結
學不來學不來...