GAN學習筆記(二)——LAPGAN

本文基於2015年的經典論文:Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks
論文下載地址:https://arxiv.org/abs/1506.05751

LAPGAN是建立在GAN和CGAN基礎上的成功嘗試。在本文中,LAPGAN依然主要被用於生成圖像。

一、基礎知識
1 CGAN
有一篇論文單獨討論CGAN,這篇論文內容並不多因此沒有單獨寫文章詳解這篇論文。它主要是在GAN的基礎上加上了條件,這樣可以緩解GAN中生成的樣本過於自由的問題。具體方法是:將一個條件變量與噪聲和真實樣本經過一定數量的層次後分別進行concat。更多的解釋可以移步這篇博客

這裏寫圖片描述

GAN的公式:
這裏寫圖片描述
其中,h是真實樣本,z是噪聲。
CGAN的公式:
這裏寫圖片描述
其中,l是條件變量,它可以是類標,在LAPGAN中,它是圖片。

2 圖像金字塔
本文中用到了高斯金字塔,用於下采樣;
以及拉普拉斯金字塔,用於上採樣。
這裏寫圖片描述
高斯金字塔的構造過程:
(1) 對圖像進行高斯核卷積
(2) 將偶數行除去
用公式表示就是:
這裏寫圖片描述
拉普拉斯金字塔的構造過程:
數學定義:這裏寫圖片描述
式中的這裏寫圖片描述表示第i層的圖像。而UP( )操作是將源圖像中位置爲(x,y)的像素映射到目標圖像的(2x+1,2y+1)位置,即在進行向上取樣。符號 這裏寫圖片描述表示卷積, 這裏寫圖片描述爲5x5的高斯內核。
也就是說,拉普拉斯金字塔是通過源圖像減去先縮小後再放大的圖像的一系列圖像構成的。

這裏寫圖片描述
如圖所示,上方的人像從左向右是高斯金字塔自底而上的構建過程,下方的人像是拉普拉斯金字塔自頂向下構建的過程。

在論文原文中是這樣描述的:
先構建高斯金字塔:
這裏寫圖片描述
I0是原圖,I1到IK都是由它之前的I經過下采樣得到的。K是金字塔的級數,我們希望金字塔的級數能夠讓IK的像素足夠小,<=8*8爲宜。
第K層的拉普拉斯金字塔:
這裏寫圖片描述
其他層的拉普拉斯金字塔:
這裏寫圖片描述
用拉普拉斯金字塔恢復圖像:
這裏寫圖片描述
需要注意,文中爲了簡化計算,用的上採樣和下采樣方法與常規的高斯金字塔和拉普拉斯金字塔生成方式有差異。它取下采樣的方式就是互不相交的2*2的區域中像素求均值,生成拉普拉斯金字塔的方式就是在原圖上的2*2區域減去剛纔算出來的均值。在它提供的代碼中,上採樣和下采樣完全交給了Torch的image包實現(image.scale)。

二、LAPGAN原理:
1 用途:生成高品質的自然圖片
2 創新點:利用拉普拉斯金字塔,由粗到精逐級生成越發清楚的圖像。
3 突破:GAN只能生成低像素的圖片,而LAPGAN可以生成高像素的圖片。
4 本質:用CGAN生成拉普拉斯金字塔。
這裏寫圖片描述
該圖描述了LAPGAN的訓練過程,圖中的I0是64*64的圖像,一共使用了3個GAN,I1爲32*32,I2爲16*16,I3爲8*8。
拉普拉斯金字塔的頂端(也就是像素最低的圖像)用來訓練普通的GAN ,生成器的輸入只有噪聲。而後像素更高的圖像用來訓練CGAN,輸入的不光有噪聲,還有同級的高斯金字塔的圖像經過上採樣後得到的圖像(在一些情況下,還會加入類標,這個我們在後面的實驗中詳細介紹)。
這裏寫圖片描述
該圖描述了訓練好了的LAPGAN的使用過程。
這裏寫圖片描述
5 LAPGAN的優點:
①與Residual Network有異曲同工之妙,針對殘差的逼近和學習相對容易。
②逐級獨立訓練提高了網絡簡單記憶輸入樣本的難度,許多高性能的深度網絡都面臨着這樣的問題。
③減少了每一次 GAN 需要學習的內容,也就從而增大了 GAN 的學習能力。

三、模型和訓練
本文使用了三個數據集:
(1) CIFAR10:32*32,10類,共100k訓練樣本
(2) STL:96*96,10類,共100k訓練樣本
(3) LSUN:下采樣到64*64,10個不同自然場景,共10M訓練樣本
實驗平臺:Torch
源代碼:https://github.com/facebook/eyescream
https://gist.github.com/soumith/e3f722173ea16c1ea0d9
在所有的模型中,噪聲向量zk中的值都服從相同的分佈,落在[-1,1]的區間內。
針對CIFAR10和STL:
最初的尺寸:作用域8*8分辨率的圖像上,GK和DK都使用有兩個隱藏層的全連接神經網絡,激活函數爲ReLU。DK使用了Dropout,每層有600個神經元。GK每層有1200個神經元。ZK是一個100維的向量。
這裏寫圖片描述
後續的尺寸:對CIFAR10而言,通過在原始圖像上裁剪28*28的圖像擴充數據。金字塔的圖像尺寸按照8*8到14*14到28*28擴大。對STL而言,圖像尺寸按照8*8到16*16到32*32到64*64到96*96擴大。CIFAR10和STL的神經網絡都由擁有三層的Gk和2層的Dk組成。噪聲輸入作爲第四個通道和圖像輸入的三通道放在一起。
這裏寫圖片描述
藍色箭頭指向的圖片(也就是下采樣後再上採樣的模糊圖片),在CGAN中的地位就是條件變量。
值得注意的是,在生成器中的卷積層是作者自己定義的SpatialConvolutionUpsample層,因爲我們需要最後生成的圖片和輸入圖片的大小一樣,因此每次卷積前都會將feature map補零到卷積後恰好仍爲原來的尺寸。

在CIFAR10中,作者還做了將類標也作爲條件變量的實驗。CIFAR10有10類,條件變量是長度爲10的獨熱碼向量。如果圖片的尺寸爲x*x*3(三通道),那麼就將條件變量經過一個全連接層得到長度爲x*x的向量,將向量重新排列得到x*x的圖像,與原先的輸入concate,具體如下圖所示。
這裏寫圖片描述

參數選擇:
初始學習率:0.02
學習率下降方式:每完成一個epoch將學習率除以1.000004
初始動量:0.8
動量上升方式:每完成一個epoch將動量增加0.0008

在訓練過程中,作者利用Parzen窗估計器檢測對數似然函數(具體怎麼檢測在【第四部分 實驗和評估】中詳述)。注意:監測只是查看,是在驗證集上做的工作,這個結果不會在訓練過程中計算,更不會反向傳播,訓練過程中的損失反向傳播與常規的CGAN和GAN相同。

針對LSUN:
LSUN的數據量比較大,因此可以對它的每一個場景分別訓練一個LAPGAN模型。這樣就可以在評估過程中理解模型學習到的分佈的差異。LSUN使用的模型比CIFAR10略大,但內部結構大同小異,這裏放上網絡結構,不再贅述。
這裏寫圖片描述

四、實驗和評估
本文使用了3個不同的評估指標:
(1) 對數似然函數
(2) 直觀查看生成圖片
(3) 人工主觀評估
1 對數似然函數
本文對拉普拉斯金字塔上每一個尺度的模型都進行了一次利用高斯Parzen窗的對數似然函數評估。下面介紹如何計算高斯Parzen窗的對數似然函數。
對某一層的圖像I而言,它的下采樣是d(I),記爲l,上採樣是u(d(I)),將I-u(d(I))記爲h。構建下方的概率密度函數,描述當前的h是真實的I-u(d(I))產生的可能性。
這裏寫圖片描述
這事實上是一個條件概率的表達式,q1(l)是真實圖像I下采樣爲l的概率,q0(l,h)是在已知下采樣的圖片爲l的條件下,h爲真實的I-u(l)的概率。
這樣,我們有:這裏寫圖片描述
對每個固定的l,得到:這裏寫圖片描述
因此:
這裏寫圖片描述
q1和q0都用高斯Parzon窗計算:
這裏寫圖片描述這裏寫圖片描述
這裏寫圖片描述
其中,這裏寫圖片描述 是用驗證集調整的參數。
由於在生成圖像時,前一層生成的圖像又作爲後一層的下采樣圖像使用,也就是說,p(I)在生成更大尺寸的圖片時就處於q1(l)的位置。
因此求最後一層的對數似然函數時有這樣的關係:
這裏寫圖片描述

實驗結果顯示,LAPGAN比常規的GAN效果更好。
這裏寫圖片描述

2 直觀查看生成的圖片
下圖顯示了在CIFAR10上訓練的生成模型生成的圖像。從中可以看出:
① 我們的GAN做得比以前的論文好,這可能要歸功於CIFAR10上的數據擴充(每張圖裁了4個28*28);
② LAPGAN優於GAN,邊緣更加銳利;
③ 引入類標條件的LAPGAN優於普通LAPGAN,物體結構更加清晰;
④ 最右側的一列是與生成的圖片最相近的真實圖片,從中可以生成模型不是簡單記憶訓練數據。
這裏寫圖片描述

下圖顯示了在STL上訓練的生成模型生成的圖片。圖a中,雖然物體的形狀不清晰,但是依然保持着銳利的邊緣。圖b中可以看到圖片逐層產生的過程。
這裏寫圖片描述

下圖顯示了在LSUN上訓練的生成模型生成的圖片,展示了塔,臥室和教堂前。
這裏寫圖片描述
接下來以(a)圖舉例,a圖做了塔的實驗,從左到右是4*4擴充到64*64的過程。每一行之間使用的噪聲向量是相同的,只有每行最開始生成4*4的圖片時,輸入的噪聲向量是不同的,這些有差異的噪聲向量是用插值的方式逐步過渡的。如果網絡過擬合了——也就是說,如果網絡知識簡單記憶訓練樣本,在生成的圖像上我們可以觀察到突變。但是實際上,我們可以觀察到,生成的圖像是平滑變化的,它們看起來也貌似真實,而不是線性地融合兩張真實圖像。
作者在LSUN還做了很多其他實驗,有興趣可以查閱論文原文。

3 人工主觀評估
作者讓15位志願者參與評估實驗,看他們是否能區分生成的圖片和真實的圖片。用戶的評估界面如下圖所示。呈現給志願者的圖片從以下四個類別的圖片中隨機選取:三個用CIFAR10訓練得到的生成模型生成的圖片(LAPGAN,加了類標條件的LAPGAN,標準的GAN)以及真實的CIFAR10圖片。由於精確度收到觀察時間的影響,因此作者隨機選取圖片的展示時間(從50ms到2000ms不等),一旦超過了展示時間,圖像會被遮擋。在實驗開始前,會給志願者展示CIFAR10中的真實圖片。在從志願者那裏收集了10k數量級的樣本後繪製了下圖的結果圖像。結果顯示,LAPGAN生成以假亂真的圖片的能力優於普通GAN。
這裏寫圖片描述
圖中,豎線顯示的是個體間的差異。

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