論文名稱:Image2StyleGAN: How to Embed Images Into the StyleGAN Latent Space?
論文作者:Rameen Abdal, Yipeng Qin, Peter Wonka
發行時間:Submitted on 15 Dec 2019, last revised 31 Mar 2020
論文地址:http://openaccess.thecvf.com/content_ICCV_2019/html/…
代碼開源:[none]
一. 概要
本文提出一種將指定圖像編碼到 StyleGAN 中的 latent space 中的有效算法, 這種編碼使語義圖像編輯操作可應用於現有照片. 研究編碼算法的結果可爲StyleGAN潛在空間的結構提供有價值的見解. 本文的主要貢獻就是:
- 提出一種有效的編碼算法, 可以將給定圖像映射到預先訓練的 StyleGAN 的擴展潛空間 中.
- 深入瞭解了 StyleGAN 潛在空間的結構.
- 對向量使用三個基本運算來研究編碼的質量, 這樣可以更好地瞭解潛在空間以及如何編碼不同類別的圖像.
二. 圖像編碼潛在空間的研究
2.1. 各種種類的圖像編碼
論文中收集了一個包含25張不同圖像的小規模數據集, 該數據集涵蓋了5個類別: 人臉, 貓, 狗, 車, 畫, 每個類別各有五張圖像. 之所以這樣選擇, 是因爲貓, 狗和繪畫與人臉具有相同的整體結構, 只是描繪方式不同, 而汽車則是與人臉沒有結構相似性.
編碼的結果如上圖所示, 儘管文中模型是在人臉數據集上進行訓練的, 但是編碼算法能讓能生成高質量的貓, 狗, 車, 畫的圖像, 儘管比人臉的效果差, 可見編碼算法的有效性和泛化性.
2.2. 人臉圖編碼的魯棒性
2.2.1. 仿射變換
如上圖所示, styleGAN 的編碼對仿射變換非常的敏感. 仿射變換分爲 平移、調整大小、旋轉. 其中, 平移的效果最差, 因爲其可能會產生無效的臉部編碼效果; 而對於調整大小和旋轉, 產生的圖像雖然是有效的, 但丟失了較多細節, 比常規編碼效果糟. 這表示學習到的表示在一定程度上仍與圖像大小和位置有關.
2.2.2. 缺陷圖編碼
由上圖可知, 雖然移除了某些五官信息, 但是編碼生成的結果對其他仍然存在的五官很好的復原了. 可見不同的面部特徵的編碼是彼此獨立. 一方面, 這種現象對於一般的圖像編輯是有益的. 另一方面, 這表明潛在空間不會迫使編碼的圖像成爲完整的面孔, 即它不會修補丟失的信息.
2.3. 編碼空間的選擇
在 styleGAN 中存在多個潛在空間可用於編碼. 兩個明顯的候選空間是 初始潛在空間 和 中間潛在空間 . 其中 維的向量 是由 維的向量 經過 個全連接層所得到的. 論文中給出的理解是直接將 或 進行編碼式不容易的.
因此文中給出的建議是編碼擴展的編碼空間 中:
- 是由 個不同的 向量連接(串聯)而成的
- 這 個不同的 向量是由 styleGAN 中的生成器裏的 層 AdaIN 所接受輸入, 這樣每一個 向量都對應於 styleGAN 的一個層.
三. 編碼算法
文中的方法是將給定的圖像編碼到預訓練好的生成器集合中, 從合適的初始化 開始, 通過最小化給定的圖片和由 生成的圖像的相似度損失來使其逐漸逼近於最優的 . 僞代碼如下所示:
3.1. 初始化
文中給出了兩種初始化 的方法:
- 隨機初始化, 每個參數獨立於均勻分佈
- 觀察得出的平均latent code vector , 因爲其可辨別出低質量的人臉圖像
文中更推薦使用 作爲初始化, 期望優化收斂到更接近與 的 .
爲了評估這兩種方法, 文中設計了實驗來評估 loss損失 和 距離. 實驗結果如下表所示, 對於人臉類圖像, 使用 進行初始化不但使得 更接近於 , 而且損失降低了很多. 對於非人臉類圖像, 則隨機初始化的效果更好, 從自覺上看, 該現象表明該分部僅具有一個臉部簇, 其他的實例都是圍繞在該簇的分散點, 並不會按照其他實例的模型進行構造! 定性結果如上圖所示.
3.2. 損失函數的選擇
損失函數的選擇是 VGG-16中的感知損失與逐像素的MSE損失的加權和: 其中 是輸入圖像, 是預訓練GAN的生成器, 是圖像的標量的數量( ), 是需要優化的 latent code vector.
憑經驗讓 來獲得良好性能, 對於式子中的 , 是: 其中, 是輸入圖像, 是 VGG-16中 conv1_1, conv1_2, conv3_2 和 conv4_2 的特徵輸出, 是第 層輸出的標量數, 是對所有 根據經驗獲得的.
之所以這樣設計損失函數, 是因爲 **僅按像素方式的 MSE 損失無法找到高質量的嵌入. 因此, 感知損失充當某種正則化器, 以將優化引導到潛在空間的正確區域. **
如上圖所示, 可見文中的最終方法是最佳性能的.
3.3. 超參數設置
使用 Adam 優化器, 對應學習率爲 , , , . 個優化步驟.
如下圖所示, 人臉損失下降最快, 約 個步驟收斂. 貓, 狗 和 汽車在約 個步驟較慢收斂. 繪畫則收斂最慢, 約 才收斂.
四. 編碼的意義
4.1. 圖像變換
給定兩個編碼圖像及其對應的 latent code 向量 和 , 通過線性插值計算進行如下變換: 隨後就使用變換得到的新編碼 再生成圖像.
在實驗中, 如上圖所示, 文中方法在人臉的變換效果上很棒, 但在其他類別之間進行變換則效果較差. 文中給出的觀點是 styleGAN 中的 latent space 專用於人臉, 因爲在非人臉類間的變化的中間圖像中存在人臉輪廓. 作者還推測對於非人臉的圖像變換的編碼方式是這樣進行的:
- 最初的圖層會創建一個類似人臉的結構.
- 隨後的圖層會在這個結構上進行繪畫.
- 因此不再可被識別.
4.2. 風格遷移
給定兩個編碼圖像及其對應的 latent code 向量 和 , 利用交叉操作來實現風格遷移.
爲了方便描述, 文中將提供內容而被改變風格的潛在編碼記爲 , 而僅提供風格而不在乎圖像主題的潛在編碼記爲 . 這樣的話, 文中給出的方法是 保留 的前9層(對應的分辨率爲 ), 而用 中的後9層替換掉原來的(對應的分辨率爲 ), 便得到了風格遷移後的新 latent code. 之所以這樣做是因爲低級特徵決定了圖像的主體, 而高級特徵則是決定了顏色等精細特徵.
4.2.1. 人臉類間遷移
首先看人臉之間的風格遷移, 如上圖所示, 遷移的效果還是可以得, 可見 styleGAN 對人臉的處理能力是很強的.
4.2.2. 不同類間遷移
再看不同類別的編碼圖像之間的風格遷移, 上圖便是遷移結果, 只有人臉作爲內容圖時效果還算可以, 其他則效果較差. 這表明文中的方法雖然能夠傳遞低級特徵(顏色, 紋理等), 但不能忠實地維護非人臉圖像的結構內容. 這說明了 styleGAN 的泛化和表達能力很容易駐留在同較高空間分辨率相對應的樣式層中.
4.3. 表情傳遞
給定三個輸入向量 , , , 其中 是目標圖像的 latent code, 對應於原圖像的中性表情的 latent code, 對應於一種更獨特的表情(哭、笑等). 那麼表情傳遞的計算式爲: 爲了消除噪聲(例如背景噪聲), 文中設置了閾值, 即對 latent code 在各通道的差值的 範數 設置了下限閾值, 低於該閾值的通道將會被零向量所替換. 在上圖進行的實驗中, 文中設置閾值爲 , 並對所得到的的向量進行歸一化以控制表達式在特定方向上的強度. 上圖得到的表情傳遞結果具有較高的質量.
五. 結論
提出了一種有效的算法, 將給定的圖像嵌入到StyleGAN的潛在空間中. 該算法支持語義圖像編輯操作, 例如圖像變換, 樣式轉移和表達轉移. 我們還使用該算法來研究Style-GAN潛在空間的多個方面. 我們提出了實驗, 以分析可以嵌入哪種類型的圖像, 如何嵌入圖像以及嵌入的意義. 我們工作的重要結論是, 在擴展的潛在空間W+中嵌入效果最好, 並且可以嵌入任何類型的圖像. 但是, 只有臉部的嵌入纔有意義.