完整筆記:http://www.gwylab.com/note-gans.html
———————————————————————
3. 如何解決BIG TRANSFORMATION
我們前面提到的風格轉換都是比較小幅度的風格轉換,有的時候我們會需要做非常大的風格轉換,譬如把真人照片轉成動漫照片。大風格的轉換我們容易想到的一個思路是auto-encoder:
也就是說,輸入一個真人的照片,通過一個encoder提取出它的人臉特征,再放入到一個decoder中輸出一張動漫人物的照片,這兩張照片的差異是可以非常大的。
現在我們進一步希望,x domain和y domain的照片能夠互相轉換,于是我們再增添一個auto-encoder:
這意味着,輸入x domain的圖檔就放入x encoder中,輸入y domain的圖檔就放入y encoder中,它們都能提取出對應的人臉特征,然後如果需要輸出x domain的圖檔就把特征放入x decoder中, 如果需要輸出y domain的圖檔就把特征放入y decoder中,這樣就能實作在兩個domain間的互相轉換。
當然上述我們希望這個模型具有的功能是在x domain和y domain之間互換,也就是圖檔的訓練路徑是
->
->
->
和
->
->
->
。
那如果僅僅是按照這樣的路徑訓練的話,
與
完全沒有關系,
與
也完全沒有關系,事實上它就等價于兩個單獨訓練的auto-encoder。為了改善這一模型,我們可以增添兩條訓練路徑,如下圖所示:
在這兩種路徑下,一張圖檔會進入同一個domain的encoder和decoder,我們希望最終輸出的圖檔能和原始圖檔越相似越好。但是僅僅隻有minimize reconstruction是不夠的,我們還希望輸出的圖檔盡可能清晰,于是分别加入一個discriminator。
這樣在這種訓練路徑下,模型産生的圖檔就既和原圖比較相似也有着盡可能高的清晰度。但是現在還需要考慮一個新的問題,就是模型目前隻能保證一張圖檔
走
和
這條路,或者一張圖檔
走
和
這條路,能夠産生和原圖高度相似(這兒的相似是要求像素無差)的圖檔,但是模型不能保證,一張圖檔
走
和
這條路産生的圖檔和原圖
是相似的(這兒的相似是要求看着像同一個人,通常輸出會很清楚但明顯不是同一個人)。這是因為,domain x和domain y的差異很大,
與
學到的特征提取方法也會不一樣,譬如
用第1,2維提取頭發和眼睛資訊,但是
用3,4維提取頭發和眼鏡資訊,這樣
在解
提取的特征資訊時就會提取出錯誤的特征資訊。那在文獻上為了解決這個問題,出現了各式各樣的解法,下面會一一介紹。
3.1 CoGAN
CoGAN(又稱CoupledGAN)采用了一個最直接的解決思路,既然錯誤的出現是
和
的差異導緻的,那我何不讓
和
盡可能地相似?具體來說,就是讓
和
的輸出盡可能地相似。那為了讓二者輸出盡可能相似,CoupleGAN便讓
和
的最後幾層的參數是共享的,也就是
和
的最後幾層hidden layer是完全一樣的,這樣它們提取出的臉部特征(下稱face attribution)在結構上就非常相似。同理,既然face attribution差不多了,
和
的前面幾層參數也是共享的。
CoGAN有一種極端的情況,就是
和
的所有參數都共享,隻是額外的增加一個輸入變量0或1,1表示輸入來自x domain,0表示輸入來自y domain。在這種情況下,
和
可以合并為一個encoder。
3.2 Guillaume Lample
我們的目的,實質上是希望
和
産生的face attribution盡可能一緻,那Guillaume Lample方法就是給face attribution增添一個discriminator,去判斷這個face attribution是來自于x domain還是y domain,那
和
為了騙過這個discriminator,就會産生盡可能一緻的face attribution,這樣discriminator就無法判斷出
和
輸出結果的差異。
3.3 ComboGAN
實際上,從
和
産生的圖檔或者從
和
産生的圖檔無法和原圖相似的本質原因,是特征資訊的丢失。那我們現在把兩條路拼在一起,形成一個
->
->
->
->
->
->
’的大回路,如果我們增添一個reconstruction loss,要求
’和
盡可能地相似,這樣就會逼迫着
->
和
->
這兩段路盡可能的不丢失原圖的特征資訊,最終就能解決圖檔不相似的問題。這個方法就是利用了Cycle consistency的ComboGAN。
3.4 XGAN
不同于ComboGAN利用的是Cycle consistency,XGAN利用的是Semantic consistency(語義保持),也就是說不同于ComboGAN希望圖像到圖像能保持一緻,XGAN希望的是特征到特征能保持一緻。這樣在計算相似性的時候不再是用pixel-wise的計算,而是latent相似性的計算。
如上圖所示,在
->
之後會得到一個
,然後繼續走半個循環得到
,即
->
->
->
->
,XGAN便是希望
與
能夠越接近越好。