pix2pixHD:High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
論文: ofollow,noindex">pix2pixHD
程式碼: NVIDIA/pix2pixHD" target="_blank" rel="nofollow,noindex">GitHub
這篇paper作為pix2pix(參見前一篇部落格)的改進版本,如其名字一樣,主要是可以產生高解析度的影象。具體來說,作者的貢獻主要在以下兩個方面:
- 使用多尺度的生成器以及判別器等方式從而生成高解析度影象。
- 使用了一種非常巧妙的方式,實現了對於同一個輸入,產生不同的輸出。並且實現了互動式的語義編輯方式
高解析度影象生成
為了生成高解析度影象,作者主要從三個層面做了改進:
- 模型結構
- Loss設計
- 使用Instance-map的影象進行訓練。
模型結構

pix2pixHD生成器結構
生成器由兩部分組成,G1和G2,其中G2又被割裂成兩個部分。G1和pix2pix的生成器沒有差別,就是一個end2end的U-Net結構。G2的左半部分提取特徵,並和G1的輸出層的前一層特徵進行相加融合資訊,把融合後的資訊送入G2的後半部分輸出高解析度影象。
判別器使用多尺度判別器,在三個不同的尺度上進行判別並對結果取平均。判別的三個尺度為:原圖,原圖的1/2降取樣,原圖的1/4降取樣。顯然,越粗糙的尺度感受野越大,越關注全域性一致性。
生成器和判別器均使用多尺度結構實現高解析度重建,思路和PGGAN類似,但實際做法差別比較大。
Loss設計
這裡的Loss由三部分組成:
- GAN loss:和pix2pix一樣,使用PatchGAN。
- Feature matching loss:將生成的樣本和Ground truth分別送入判別器提取特徵,然後對特徵做Element-wise loss
-
Content loss:將生成的樣本和Ground truth分別送入VGG16提取特徵,然後對特徵做Element-wise loss
pix2pixHD Loss
使用Feature matching loss和Content loss計算特徵的loss,而不是計算生成樣本和Ground truth的MSE,主要在於MSE會造成生成的影象過度平滑,缺乏細節。Feature matching loss和Content loss只保證內容一致,細節則由GAN去學習。
使用Instance-map的影象進行訓練
pix2pix採用語義分割的結果進行訓練,可是語義分割結果沒有對同類物體進行區分,導致多個同一類物體排列在一起的時候出現模糊,這在街景圖中尤為常見。在這裡,作者使用個體分割(Instance-level segmention)的結果來進行訓練,因為個體分割的結果提供了同一類物體的邊界資訊。具體做法如下:
- 根據個體分割的結果求出Boundary map
-
將Boundary map與輸入的語義標籤concatnate到一起作為輸入
Boundary map求法很簡單,直接遍歷每一個畫素,判斷其4鄰域畫素所屬語義類別資訊,如果有不同,則置為1。下面是一個示例:
Boundary map
語義編輯
不同於pix2pix實現生成多樣性的方法(使用Dropout),這裡採用了一個非常巧妙的辦法,即學習一個條件(Condition)作為條件GAN的輸入,不同的輸入條件就得到了不同的輸出,從而實現了多樣化的輸出,而且還是可編輯的。具體做法如下:

語義編輯
- 首先訓練一個編碼器
- 利用編碼器提取原始圖片的特徵,然後根據Labels資訊進行Average pooling,得到特徵(上圖的Features)。這個Features的每一類畫素的值都代表了這類標籤的資訊。
- 如果輸入影象有足夠的多,那麼Features的每一類畫素的值就代表了這類物體的先驗分佈。
- 對所有輸入的訓練影象通過編碼器提取特徵,然後進行K-means聚類,得到K個聚類中心,以K個聚類中心代表不同的顏色,紋理等資訊。
- 實際生成影象時,除了輸入語義標籤資訊,還要從K個聚類中心隨機選擇一個,即選擇一個顏色/紋理風格
這個方法總的來說非常巧妙,通過學習資料的隱變數達到控制影象顏色紋理風格資訊。
總結
作者主要的貢獻在於:
- 提出了生成高解析度影象的多尺度網路結構,包括生成器,判別器
- 提出了Feature loss和VGG loss提升影象的解析度
- 通過學習隱變數達到控制影象顏色,紋理風格資訊
- 通過Boundary map提升重疊物體的清晰度
可以看出,這篇paper除了第三點,都是針對性的解決高解析度影象生成的問題的。可是本篇工作只是生成了高解析度的影象,那對於視訊呢?接下來會介紹Vid2Vid,這篇paper站在pix2pixHD的基礎上,繼續做了許多拓展,特別是針對視訊前後幀不一致的問題做了許多優化。