pix2pix是一個GAN模型改進的算法,要求訓練集有匹配對。與之相反的,是無匹配對的訓練集,即cyclegan。
[1611.07004] Image-to-Image Translation with Conditional Adversarial Networks (arxiv.org)
一、模型結構
模型結構如圖所示,對於生成器G,需要輸入一個標簽x。對於判別器D,則需要輸入圖片y及標簽x。作者使用了U-net網絡,大概長這個樣子。
一個大大的U形,一般用於語義分割,效果還不錯,是一個基准模型。
二、LOSS函數
其loss函數如上所示。
CGAN的loss如下所示,其實就是gan的損失函數稍微改了下:
L1 損失函數:
L1 loss是一種單純的絕對差損失,魯棒性強,但是很容易減少生成圖G的多樣性,傾向於生成真實圖y(原封不動照搬)。
有很多論文指出,這部分損失函數可以改為 內容損失。
關於內容損失,指的是淺層特征的損失,是屬於風格遷移方面的內容,一般使用VGG16來計算,因為經過了一些卷積層的抽象,具有一定的泛化能力。此外還有 風格損失,指的是深層特征的損失,這部分損失更關注特征與特征之間的關系,所以使用gram或協方差矩陣來計算損失。(VGG16是一個分類模型)
詳細內容可以看:風格遷移(style_transfer)網絡 - 知乎 (zhihu.com)
三、后續
文章后續稍微討論了一下優化器optim的問題。D、G都是交替訓練一次,使用了adam的優化方法,學習率為0.0002。批處理量是1,也可以設為1~10。
在文章中,Bathsize設為1是很合理的,他說雖然有BN層,一般不會batch size=1,但是實列歸一化的這種方法被證明有效,可以用。
總之,這個方法簡單粗暴,效果也不錯。