【閱讀筆記】In-Domain GAN Inversion for Real Image Editing

論文名稱:In-Domain GAN Inversion for Real Image Editing

論文作者:Jiapeng Zhu, Yujun Shen, Deli Zhao, Bolei Zhou

發行時間:Submitted on 31 Mar 2020, last revised 11 May 2020

論文地址:https://arxiv.org/abs/2004.00049

代碼開源:https://github.com/genforce/idinvert



一. 概要

本文首次提出同時對重構圖像的潛在空間的語義級目標函數的像素級進行考慮,而不像傳統方法那樣(只關注像素級)無法將反演的潛碼定位到原始潛在空間的語義域上。即提出了 in-domain GAN inversion 的方法,具體實現如下:

  1. 首先對 domain-guided encoder 進行訓練,來將輸入圖像映射成 GANs 潛在空間的潛在編碼。
  2. 再使用 domain-regularized optimization 來對編碼器得到的潛在編碼進行微調來確保產生的潛在編碼在語義域內。

二. In-Domain GAN Inversion

image-20200630161231829

2.1. 模型說明

2.1.1. 符號說明

GAN 模型:

  • 生成器 G():ZXG(\cdot):\mathcal{Z}\to\mathcal{X},將潛在編碼生成爲高分辨率的圖像。
  • 辨別器 D()D(\cdot),判斷合成圖像的真僞。

GAN inversion 方法是學習生成器 G()G(\cdot) 的逆映射,即能找到一個最佳潛在編碼 zinvz^{inv} 來恢復給定的真實圖像 xrealx^{real}。文中將 GAN 學到的語義空間定義爲 S\mathcal{S}。期望 zinvz^{inv} 能通預訓練好的 GAN 的先驗知識 SS 保持一致。

2.1.2. 潛在空間的選擇

本文選擇的是在 StyleGAN 中的 W\mathcal{W} 空間,只是爲了方便起見,後續仍然使用 zz 來表示潛在編碼。

選擇的理由:

  1. 更加關注語義信息。
  2. 性能更佳。
  3. 引入比較簡單。

2.2. Domain-Guided Encoder

image-20200630163111681

上圖便是傳統的編碼器架構,從潛在空間 Z\mathcal{Z} 中隨機採樣出一些潛在編碼 zsamz^{sam},然後將其輸入生成器 G()G(\cdot) 中來得到相對應的合成圖像 xsynx^{syn}。之後編碼器就會採用 xsynx^{syn} 作爲輸入,在 zsamz^{sam} 的監督下進行訓練來得到最終的潛在編碼 zencz^{enc}。損失函數如下所示:
minΘELE=zsamE(G(zsam))2 \mathop{\min}\limits_{\Theta_E}\mathcal{L}_{E}=||z^{sam}-E(G(z^{sam}))||_2

其中,2||\cdot||_2 表示 l2l_2 距離,ΘE\Theta_E 表示編碼器 E()E(\cdot) 的參數。文中認爲,僅僅對 zsamz^{sam} 進行監督來實現的重構五注意得到一個準確的編碼器,而且這種方法並沒有考慮生成器 G()G(\cdot) 的梯度,相當於生成器的內部知識沒有被考慮進去,無法提供生成器的領域知識來指導編碼器的訓練。作者提出的解決方法如下圖所示。

image-20200630190415085

區別於傳統編碼器:

  1. 編碼器的輸出將作爲生成器的輸入,這樣我們的目標函數的參數將來源於圖像空間而不是潛在空間。其涉及到在訓練階段中生成器的語義知識,並提供準確的監督和更多的信息,保證輸出編碼與生成器的語義域保持一致。
  2. 我們的編碼器直接使用真實圖像進行訓練,而不是傳統的使用合成圖像訓練。因爲通常都是對真實圖像進行圖像操縱,顯然我們的這種方法更加適用。
  3. 訓練過程中固定預訓練好的生成器,而讓判別器和編碼器同時進行對抗式訓練。這樣可以從 GAN 模型中獲取更多的信息,同時確保輸入的編碼在語義上儘可能和生成器一致。

對應,我們訓練過程中的目標函數如下所示:
minΘELE=xrealG(E(xreal))2+λ1F(xreal)F(G(E(xreal)))2λ2ExrealPdata[D(G(E(xreal)))] \mathop{\min}\limits_{\Theta_E}\mathcal{L}_{E} = ||x^{real}-G(E(x^{real}))||_2+\lambda_1||F(x^{real})-F(G(E(x^{real})))||_2-\lambda_2\mathop{\mathbb{E}}\limits_{x^{real}\sim P_{data}}[D(G(E(x^{real})))]

minΘDLD=ExrealPdata[D(G(E(xreal)))]ExrealPdata[D(xreal)]+γ2ExrealPdata[xD(xreal)22] \mathop{\min}\limits_{\Theta_D}\mathcal{L}_{D} = \mathop{\mathbb{E}}\limits_{x^{real}\sim P_{data}}[D(G(E(x^{real})))]-\mathop{\mathbb{E}}\limits_{x^{real}\sim P_{data}}[D(x^{real})]+\frac{\gamma}{2}\mathop{\mathbb{E}}\limits_{x^{real}\sim P_{data}}[||\triangledown _xD(x^{real})||_2^2]

其中,PdataP_{data} 表示真實數據的概率分佈。γ\gamma 表示梯度正則化的超參數,實驗裏取值爲 1010λ1\lambda_1λ2\lambda_2 爲損失權重來平衡不同函數部分,實驗中對應的取值爲 5e55e^{-5}0.10.1F()F(\cdot) 表示 VGG 特徵提取模塊(conv4_3),這通常用來計算 perceptual-loss。這一訓練步驟主要是對編碼器和辨別器的參數進行更新,訓練完畢後,編碼器就能直接將輸入的圖像編碼成較合適的潛在編碼

2.3. Domain-Regularized Optimization

儘管我們提出的編碼器產生的潛在編碼能夠很好的重構目標圖像,也確保了其編碼語義性是有意義的,但仍然需要用 Domain-Regularized Optimization 來微調編碼使其更好擬合目標函數的像素值。簡而言之,本文提出一種優化方案來對編碼器產生的潛在編碼再次進行微調,來使得重構的結果更加精準

image-20200630195607267

如上圖所示,不同於傳統的自由地優化方案,文中提出的優化方案對潛在編碼的反推進行了限制。Domain-Regularized Optimization 主要有兩個改進點:

  1. 使用本文提出的編碼器的輸出的潛在編碼作爲優化起點,這樣可以避免潛在編碼陷入局部最小值,並且顯著縮短優化過程。
  2. Domain-Guided Encoder 作爲正則化器,將潛在編碼保留在生成器的語義域內。

對應目標函數爲:
zinv=argminzxG(z)2+λ3F(x)F(G(z))2+λ4zE(G(z))2 z^{inv}=\arg\mathop{\min}\limits_{z}||x-G(z)||_2+\lambda_3||F(x)-F(G(z))||_2+\lambda_4||z-E(G(z))||_2
其中,xx 表示待反轉的目標函數,λ3\lambda_3λ4\lambda_4 爲損失權重,實驗中對應的取值爲 5e55e^{-5}22

三. 實驗

3.1. 反演圖像的質量和速度

將文中提出的方法同一些其他的 GAN inversion 進行比較。具體比對有:

  • 傳統:
    • traditional encoder
    • MSE-based optimizationImage2StyleGAN
  • 本文提出的方法:
    • Domain-Guided Encoder(不包含Domain-Regularized Optimization
    • In-Domain Inversion(包含Domain-Regularized Optimization

定性結果如下圖所示,可見本文提出的編碼器在映射有較大的優勢,同時,完整的算法(e)的效果最好:

image-20200630204635668

定量分析如下表所示,可見我們的方法不但快速,而且具有更好的重建結果:

image-20200630204944802

3.2. 真實圖像編輯

文中分別對3種圖像編輯任務進行了評估:

  1. image interpolation:兩種圖像之間插值得到新圖像
  2. semantic image manipulation:通過操縱圖像的某一種或多種語義來得到新的圖像
  3. semantic image diffusion:將目標圖中最具代表性的區域擴散到另一幅圖像的上下文中,並保持對應區域不變。

3.2.1. Image Interpolation

圖像插值的本質是對潛在編碼進行語義插值:
z=λz1+(1λ)z2 z = \lambda z_1 + (1-\lambda)z_2
顯然,這種插值產生的語義變換是連續的。文中將之前的 SOTAImage2StyleGAN 和作者提出的 in-domain inversion 方法進行了比較,如下圖所示,顯然作者提出的方法產生的人臉圖像更加的平滑,產生的塔圖像更加的清晰也沒有那麼多的僞影。

image-20200630211253748

定量分析結果如下表所示,新方法的效果遠遠超過了之前的SOTA方法:

image-20200630211546808

3.2.2. Semantic Manipulation

InterFaceGAN中可得知,二元語義之間存在一邊界,詳細介紹可見鏈接。重點是可以利用線性變換來對潛碼進行處理。即:
xedit=G(zinv+αn) x^{edit}=G(z^{inv}+\alpha n)
這裏的 nn 其實就是潛在空間中特定語義所對應的法向量,具體是通過 SVM 對樣本進行分類來得到對應的邊界,然後就能得到一法向量,再對其歸一化便得到了 nn。而 α\alpha 便是操縱的程度。換句話說,如果潛在代碼向這個方向移動,則輸出圖像中包含的語義應該相應地有所變化

image-20200701011414535

首先看對人臉的定性分析,如上圖所示。Image2StyleGAN 在操縱眼鏡屬性時並沒有成功添加眼鏡,反而影響了頭髮,而作者提供的方法則成功了。Image2StyleGAN 處理後女演員的脖子變得較模糊。

image-20200701011809286

再看對塔的定性分析,如上圖所示,作者提出的 in-domain 方法在減少或增加語義上,產生的效果都超過了基於 MSE 優化的方法。這裏還有一個有趣的現象,在上圖的最後一行,in-domain 方法產生的結果忽略了紅色的巴士,這很好的說明了我們模型的語義性,即巴士這一對象不在塔合成模型的語義域中,所以不會生成它

定量分析結果如下表所示,從所有的評估指標來看作者提出的方法都優於 Image2StyleGAN

image-20200630211546808

3.2.3. Semantic Diffusion

語義擴散的目標是將目標圖中最具代表性的區域擴散到另一幅圖像的上下文中。即融合結果在適應上下文變化的同時還能保持目標圖像的特徵不變。

image-20200701014518226

上圖展示了一些成功語義擴散的效果圖,可以看到該算法較好地保持了目標人臉的身份,即圖像的中心區域同目標圖像完全相同,而且合理地融合了不同的環境。

image-20200701015248077

爲了更好的理解語義擴散,文中還展示了這一操作的中間結果,如上圖所示。進行語義擴散的實現步驟如下所示:

  1. 從目標圖像中crop出所需要的部分,將這部分patch粘貼到對應的上下文圖像上

  2. 將粘貼後的圖像輸入 In-Domain 編碼器中得到潛在編碼,便完成了潛在編碼的初始化

  3. 使用 Masked Optimization 對潛在編碼進行refine,即只使用目標圖像的前景區域進行重構損失 L=Mask(x)Mask(G(z))2+λ3F(Mask(x))F(Mask(G(z)))2L=||Mask(x)-Mask(G(z))||_2+\lambda_3||F(Mask(x))-F(Mask(G(z)))||_2 的計算

    • xx 是真實圖像

    • zz 是前一階段得到的潛碼

    • 這裏的 Mask()Mask(\cdot) 指僅保留patch中的內容,其他位置上像素的值則用 00 填充。

    • image-20200701023823335

從上圖的中間結果可得知如下三點:

  1. In-Domain 編碼器的輸出總是會重建一個有意義的臉,並保持大多數語義的輸入(例如,性別和頭髮)。這是因爲我們的編碼器產生的所有編碼都在語義域內。
  2. 掩碼優化這一方法能夠保留目標人臉的身份信息,並進一步將其風格(如膚色)運用到周圍環境中,實現無縫融合。其不改變中間 patch的內容,僅僅影響從編碼器初始化所繼承的上下文樣式(例如髮型)。換句話說,只使用前景patch作爲參考,周圍環境將自編碼器初始化開始自適應地改變
  3. Image2StyleGAN 在語義擴散任務中無法生成語義上有意義的臉部(臉部邊界不平滑),因爲其只關注像素值而不在意語義信息
image-20200701030209141

影響語義擴散任務的一個重要因素是 patch 的大小。作者做了一系列大小的實驗,實驗結果如上圖所示。顯然,patch塊越大,身份信息保存的更好。

3.3. 消融實驗

image-20200701032142963

本文在這一部分對 in-domain inversion 進行了分析。即通過更改 λ4\lambda_4 的取值來研究 Domain-Guided 編碼器在優化過程中起到的作用

上圖便是 λ4=0,2,40\lambda_4=0,2,40 所產生的效果:重構圖像的質量和編輯圖像的質量之間的權衡。**較大的 λ4\lambda_4 會使優化偏向於域約束,從而使得得到的潛在編碼在語義上更有意義。不過過大的代價是目標圖像不能理想地恢復每個像素上的值。**因此,實驗中 λ4=2\lambda_4=2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章