簡介
示例
- 圖像着色
- 圖像超像素
- 背景模糊
- 人臉生成
- 人臉定制
- 文本生成圖片
- 字體變換
*風格變換 - 圖像修復
……
基礎
生成模型和GAN
生成模型不嚴謹的定義:一個能夠生成我們想要的數據的模型(圖模型、函數、神經網絡)
生成式對抗網絡(GAN)的目的是訓練這樣一個生成模型,生成我們想要的數據。
生成式對抗網絡中生成一詞的由來。
GAN
框架
工作原理
隨機噪聲z:從一個先驗分布(人為定義,一般是均勻分布或者正態分布)中隨機采樣的向量。
就像下面這樣的分布:
真實樣本x:從數據庫中采樣的樣本;合成樣本G(z):生成模型G輸出的樣本。
判別器(Discrimination):區分真實(real)樣本和虛假(fake)樣本。對於真實樣本,盡可能給出高的評分1;對於虛假數據,盡可能給出低的評分0.
生成器(Generator):欺騙判別器 。生成虛假數據,使得判別器D能夠盡可能給出高的評分1 .
目標函數
訓練算法
1.隨機初始化生成器和判別器
2.交替訓練判別器D和生成器G,直到收斂
(1)步驟1:固定生成器G,訓練判別器D區分真實圖像與合成圖像。
生成器無需優化可以mask掉
**簡單:用監督訓練的方式學習一個兩類別的分類器! **
步驟2:固定判別器D,訓練生成器G欺騙判別器D。
更新生成器參數,使其合成的圖片被生成器D賦予高分
訓練策略
KL散度和JS散度
數據分布
極大似然估計
極大似然估計 等價於 最小化生成數據分布和真實分布的KL散度
高斯分布去擬合數據分布,結果並不滿意。需要一個更通用的模型!
cGAN條件生成式對抗網絡
為什么要控制生成數據的類型?
很多有意義的任務都需要學習條件生成模型!
很難剛好生成對應類型的數據,為什么呢?
條件是狐狸,但生成狐狸或狗時都能欺騙成功。
GAN V.S cGAN
DCGAN
原始GAN,使用全連接網絡作為判別器和生成器
- 不利於建模圖像信息
- 參數量大,難以優化
DCGAN,使用卷積神經網絡作為判別器和生成器
判別器:滑動卷積
生成器:滑動反卷積
批歸一化
激活函數