論文鏈接:https://arxiv.org/abs/1703.10593
1. 介紹
圖像翻譯是指將圖片內(nèi)容從一個域轉換到另一個域。這類任務一般都需要兩個域中具有相同內(nèi)容的成對圖片作為訓練數(shù)據(jù)暇昂。比如在pix2pix中站玄,要將白天的圖片轉換成夜晚的圖片(圖 1)柳洋,那么就需要將同一個地方的白天和夜晚的圖片作為一對訓練數(shù)據(jù)對模型進行訓練。但是這種成對的訓練數(shù)據(jù)很難獲得。
CycleGAN的創(chuàng)新點就在于其能夠在沒有成對訓練數(shù)據(jù)的情況下蠢熄,將圖片內(nèi)容從源域遷移到目標域。CycleGAN在訓練時炉旷,只需要將源域的圖片和目標域的圖片作為輸入即可签孔,這里并不要求源域跟目標域的圖像內(nèi)容是匹配的。
2. 方法
CycleGAN的核心理念是窘行,如果有一個圖像風格轉換器 G 可以將 X 域的圖片轉換為 Y 域的風格饥追,而 F 可以將 Y 域的圖片轉換為 X 域的風格,那么 G 和 F 應該是互逆的罐盔。也就是說但绕, X 域的圖片經(jīng)過 G 轉換為 \hat{Y} 之后,\hat{Y}應該可以通過 F 轉換為 X 惶看。同樣地捏顺, Y 域的圖片經(jīng)過 F 轉換為 \hat{X} 之后,\hat{X}應該可以通過 G 轉換為 Y 纬黎。即:F(G(x))=x ; G(F(y))=y 幅骄。為了實現(xiàn)這一個Cycle Consistency,論文使用了一個Cycle Consistency Loss :
L_{cyc}(G,F) = E_{x\sim p_{data}(x)}[\left \| F(G(x)) - x \right \|_{1}] + E_{y\sim p_{data}(y)}[\left \| G(F(y)) - y \right \|_{1}]
CycleGAN的模型同時訓練兩個原始GAN:生成器G莹桅、F 和判別器 D_Y昌执、D_X 烛亦。G 用于將 X 域的圖片轉換成 Y 域風格的圖片,D_Y則分辨 \hat{Y} 的真假懂拾, F 將 Y 域的圖片轉換成 X 域的風格煤禽,D_X則判別 \hat{X} 的真假。這里用了兩個原始GAN的loss:
L_{GAN}(G,D_{Y},X,Y) = E_{y\sim p_{data}(y)}[log D_Y (y)] + E_{x\sim p_{data}(x)}[log (1-D_Y (G(x))]
L_{GAN}(F,D_{X},Y,X) = E_{x\sim p_{data}(x)}[log D_X (x)] + E_{y\sim p_{data}(y)}[log (1-D_X (F(y))]
所以CylceGAN總的目標函數(shù)是如下岖赋,\lambda 作為超參數(shù)控制Cycle Consistency 的重要性檬果。
使用Cycle Consistence Loss 之后,將 x 通過 G(x) 轉換之后唐断,再通過 F(G(x)) 重建的效果如下:
3. 效果
論文先將CycleGAN 跟當時的一些圖像風格轉換的方法在具有成對圖像的數(shù)據(jù)集上進行比較选脊。在這里,用完全監(jiān)督的方法pix2pix作為上界脸甘】疑叮可以看到,CycleGAN 生成的圖片對于除pix2pix以外的方法來說效果好很多丹诀。而相對于pix2pix钝的,CycleGAN 生成的圖片雖然不夠清晰,但基本接近铆遭。
接著硝桩,論文又研究了CycleGAN 的目標函數(shù)中每一部分所起的作用,效果如下(總的來說枚荣,每一部分都很重要)
4.總結
CycleGAN 解決了pix2pix 必須使用成對數(shù)據(jù)進行訓練的問題碗脊,原理比較簡單,但非常有效橄妆。只需要不同域的一系列圖片即可進行訓練衙伶。類似的工作還有DualGAN,DiscoGAN呼畸。三者的想法和模型基本一樣痕支,發(fā)在了不同的地方。蛮原。