Pix2Pix模型解決了有Pair對數據的圖像翻譯問題;CycleGAN解決了Unpaired數據下的圖像翻譯問題。但無論是Pix2Pix還是CycleGAN,都是解決了一對一的問題,即一個領域到另一個領域的轉換。當有很多領域要轉換了,對於每一個領域轉換,都需要重新訓練一個模型去解決。這樣的行為太低效了。本文所介紹的StarGAN就是將多領域轉換用統一框架實現的算法。
下圖是StarGAN的效果,在同一種模型下,可以做多個圖像翻譯任務,比如更換頭髮顏色,更換表情,更換年齡等。
StarGAN,顧名思義,就是星形網絡結構,在StarGAN中,生成網絡G被實現成星形。如下圖所示,左側為普通的Pix2Pix模型要訓練多對多模型時的做法,而右側則是StarGAN的做法,可以看到,StarGAN僅僅需要一個G來學習所有領域對之間的轉換。
要想讓G擁有學習多個領域轉換的能力,需要對生成網絡G和判別網絡D做如下改動。
在G的輸入中添加目標領域信息,即把圖片翻譯到哪個領域這個信息告訴生成模型。
D除了具有判斷圖片是否真實的功能外,還要有判斷圖片屬於哪個類別的能力。這樣可以保證G中同樣的輸入圖像,隨著目標領域的不同生成不同的效果
除了上述兩樣以外,還需要保證圖像翻譯過程中圖像內容要保存,只改變領域差異的那部分。圖像重建可以完整這一部分,圖像重建即將圖像翻譯從領域A翻譯到領域B,再翻譯回來,不會發生變化。
D的訓練和G的訓練如下所示。
對D訓練
(a)D對真假圖片進行判別,真圖片判真,假圖片判假,真圖片被分類到相應域對G訓練
(b)真圖片+目的標籤c進入G生成假圖片
(c)假圖片+原始標籤c撇進入G又回去生成重構圖片(重構loss)
(d)D對假圖片進行判別,判假圖片為真
其次是類別損失,該損失被分成兩個,訓練D的時候,使用真實圖像在原始領域進行,訓練G的時候,使用生成的圖像在目標領域進行。
訓練D的損失:
再次則是重建函數,重建函數與CycleGAN中的正向函數類似。
在多數據集下訓練StarGAN存在一個問題,那就是數據集之間的類別可能是不相交的,但內容可能是相交的。比如CelebA數據集合RaFD數據集,前者擁有很多膚色,年齡之類的類別。而後者擁有的是表情的類別。但前者的圖像很多也是有表情的,這就導致前一類的圖像在後一類的標記是不可知的。
為了解決這個問題,在模型輸入中加入了Mask,即如果來源於數據集B,那麼將數據集A中的標記全部設為0。
1、CelebA:
CelebFaces Attributes (CelebA) dataset,有202599張人臉,作者對圖片進行了檢測,還使用以下屬性構建了七個domian:頭髮的顏色(黑色,金色,棕色),性別(男/女)、年齡(年輕/老)。
2、RaFD:
The Radboud Faces Database (RaFD) 由67個參與者收集的4824幅圖像組成,裡面有各種表情數據增強方面作者用水平翻轉,為了彌補數據的不足,當使用RaFD訓練時,作者以0.0001的學習率訓練所有模型100個周期,並在接下來的100個周期應用相同的衰減策略
比較對象:DIAT ,CycleGAN還有IcGAN
標籤c掩碼向量的設計,實現多數據集(掩碼m表示)多特徵(多條件GAN)訓練。