李宏毅學習筆記31.GAN.02.Conditional Generation by GAN

簡介

上節講了GAN,GAN的主要作用是用來做生成對象,輸入向量,得到對應的對象,但是生成的對象無法控制,因此本節來討論如何考慮控制生成對象。Conditional GAN和GAN的Generator是一樣的,差別就是在Discriminator。
公式輸入請參考:在線Latex公式
先來看個文字生成圖片的例子:

Text-to-Image

Traditional supervised approach

用傳統的做法來怎麼做?• Traditional supervised approach
在這裏插入圖片描述
以上是數據的例子,我們訓練一個NN,然後輸入一個文字,輸出對應一個圖片,我們希望圖片與目標圖片越接近越好。
在這裏插入圖片描述
這樣做有什麼問題?我們來看一下,例如文字:train對應的圖片有很多張。例如下面的火車有正面,有側面的,如果用傳統的NN來訓練,模型會想讓火車長得像左邊,又像一個右邊的,這樣的結果是不好的。模型會想產生多張圖像的平均,結果就會很模糊。
在這裏插入圖片描述

Normal GAN

如果是用GAN來做:
先用Generator來生成圖片,輸入是兩個:一個是條件,一個是從某個分佈中sample出來的向量。
在這裏插入圖片描述
然後Discriminator來判斷圖片是否是生成的:
在這裏插入圖片描述
Generator will learn to generate realistic images ….
But completely ignore the input conditions.
這樣做是有問題的,因爲Discriminator只會根據生成的圖片是否清晰,是否真實來進行判別,所以Generator 只會按這個標準來生成圖片,而沒有去按條件(例如:火車)來生成圖片。

Conditional GAN

因此要改進爲Conditional GAN,這個時候Generator的部分不變,但是Discriminator要改爲:
在這裏插入圖片描述
這裏的Discriminator吃兩個輸入:一個是條件,一個是要判斷的圖片對象。輸出是一個向量,輸出向量要判斷兩個事情:
x is realistic or not + c and x are matched or not
下面是輸出向量的例子:
在這裏插入圖片描述

算法

·In each training iteration:
Learning Discriminator
·Sample mm positive examples {(c1,x1),(c2,x2),,(cm,xm)}\{(c^1,x^1),(c^2,x^2),\cdots,(c^m,x^m)\} from database. 這裏是Conditional GAN所以每個樣本包含兩個東西,都是image和text的pair。這個是真實樣本,要給高分的
·Sample mm noise samples {z1,z2,,zm}\{z^1,z^2,\cdots,z^m\} from a distribution
·Obtaining generated data {x~1,x~2,,x~m},x~i=G(ci,zi)\{\tilde x^1,\tilde x^2,\cdots,\tilde x^m\},\tilde x^i=G(c^i,z^i).這裏是生成對象,要給低分
·Sample mm objects {x^1,x^2,,x^m}\{\hat x^1,\hat x^2,\cdots,\hat x^m\} from database
·Update discriminator parameters θd\theta_d to maximize
V~=1mi=1mlogD(ci,xi)+1mi=1mlog(1D(ci,x~i))+1mi=1mlog(1D(ci,x^i))\tilde V=\cfrac{1}{m}\sum_{i=1}^mlogD(c^i,x^i)+\cfrac{1}{m}\sum_{i=1}^mlog(1-D(c^i,\tilde x^i))+\cfrac{1}{m}\sum_{i=1}^mlog(1-D(c^i,\hat x^i))
θdθd+ηV~(θd)\theta_d\leftarrow \theta_d+\eta\triangledown\tilde V(\theta_d)
這裏和上節中的GAN算法就是多了最後一項,就是圖片和文本不對應也是給低分。


Learning Generator
·Sample mm noise samples {z1,z2,,zm}\{z^1,z^2,\cdots,z^m\} from a distribution
·Sample mm conditions {c1,c2,,cm}\{c^1,c^2,\cdots,c^m\} from a database
·Update generator parameters θg\theta_g to maximize
V~=1mi=1mlog(D(G(ci,z))),θgθg+ηV~(θg)\tilde V=\cfrac{1}{m}\sum_{i=1}^mlog(D(G(c^i,z^))),\theta_g\leftarrow \theta_g+\eta\triangledown\tilde V(\theta_g)

Conditional GAN - Discriminator

常見的Discriminator構架如下圖,把x丟到一個NN裏面得到一個向量表示,然後把文字丟到一個NN裏面得到一個向量表示,把兩個向量concat起來之後,丟到一個NN裏面得到具體的分數。
在這裏插入圖片描述
但是有三個文章提出來的Discriminator構架貌似效果也還不錯:
在這裏插入圖片描述
感覺有點像之前講的魔主化的東西。把一個x丟到一個NN裏面,出來一個結果:x是否是真實對象。另外還出來一個向量表示(embedding),然後把條件文本和剛纔的向量表示丟到另外一個NN(這個NN同時看到兩個東西)裏面,得到對象和文本是否匹配的結果。
比起上面模型而言,上面模型雖然能work,但是給出的分數並沒有告訴我們爲什麼得到這個分數。下面的模型則可以看出來,是不匹配,還是生成對象有問題。
[ Augustus Odena et al., ICML,2017]
[ Takeru Miyato, et al., ICLR,2018]
[ Han Zhang, et al., arXiv,2017]

作業實例

學生做的效果:
在這裏插入圖片描述
在這裏插入圖片描述
可以看到裏面有些圖片翻車,右下角那個圖片的眼睛一個紅一個藍。

Stack GAN

先生成小圖,再生成大圖。
大概流程:先有一個Generator1吃文字描述(先要embedding變成φt\varphi_t)生成一個64×64的小圖片,然後經過一個Discriminator1,判斷小圖片和文字是否匹配,如果匹配,進入Generator2,吃小圖片和φt\varphi_t,然後得到大圖片,然後經過一個Discriminator2,判斷大圖片和文字是否匹配
文獻:Han Zhang, Tao Xu, Hongsheng Li, Shaoting Zhang, Xiaogang Wang, Xiaolei Huang, Dimitris Metaxas, “StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks”, ICCV, 2017
在這裏插入圖片描述
可以把以上過程重複多次,有論文生成1024×1024的超級大圖。

Image-to-image

在這裏插入圖片描述
可以有很多用途,白天變黑夜,黑白變彩色等,例子:
在這裏插入圖片描述
文獻:https://arxiv.org/pdf/1611.07004

傳統做法

先收集大量的樣本:
在這裏插入圖片描述
然後訓練模型:
在這裏插入圖片描述
在測試的結果卻很模糊,原因在上面有講:It is blurry because it is the average of several images.
在這裏插入圖片描述

Conditional GAN

Generator:
在這裏插入圖片描述
Discriminator,這裏注意要吃兩個東西,條件和要判斷的對象:
在這裏插入圖片描述
看到使用條件GAN生成的結果更加清晰了,但是這裏有點問題,就是左上角那裏多了一些東西
在這裏插入圖片描述
因此可以針對這個進行改進,在Generator生成對象的時候加上限制,要使得生成的對象與真實對象越接近越好:
在這裏插入圖片描述
最後結果:
在這裏插入圖片描述

Patch GAN

當用一個Discriminator來進行評估整個大張的圖片的時候會有很多問題:容易overfitting,訓練時間長。因此可以用多個Discriminator來進行評估。每個Discriminator檢查的區域的大小是超參數。不能太小例如一個pixel那麼整個圖片就會糊掉。
文獻:https://arxiv.org/pdf/1611.07004.pdf
在這裏插入圖片描述

Speech Enhancement

給一段聲音去掉噪音
在這裏插入圖片描述

傳統做法

先要有數據:
在這裏插入圖片描述
然後訓練一個NN,注意這裏會直接套CNN
在這裏插入圖片描述
效果當然不好,要用條件GAN

Conditional GAN

在這裏插入圖片描述
Generator:
在這裏插入圖片描述
Discriminator:
在這裏插入圖片描述

Video Generation

看一段影片,然後預測接下來發生什麼事情。
在這裏插入圖片描述
還有用GAN來玩遊戲,如果不用GAN,就是會有問題,例如角色往左或者往右都是正確的,那麼用傳統的學習得到的結果就是進行平均,然後角色就會定住不動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章