何子慶,聶紅玉2,劉 月,尹 洋
(1.西南交通大學 信息科學與技術學院, 成都 610097; 2.重慶交通職業學院 大數據學院,重慶 402247)
圖像識別一直是計算機視覺領域內的熱門研究,大多數圖像識別的方法都是利用卷積神經網絡模型(CNN)來實現,但是卷積神經網絡模型需要使用規模巨大的訓練數據集來進行訓練,導致網絡模型收斂速度很慢,并且需要很多訓練技巧來提高識別率。文獻[1]提出的生成式對抗網絡(GAN),已經被證明功能強大,既可以利用生成器模擬復雜的數據分布,又可以利用判別器進行特征提取。GAN應用廣泛,包括語言處理[2]、圖像修復[3]等。但是如何將GAN強大的特征提取能力應用到圖像識別任務上是一個具有挑戰性的問題。文獻[4]針對GAN不能生成具有特定屬性圖片的問題提出了條件生成對抗網絡CGAN,利用數據標簽指導數據生成,構建了有監督的生成對抗網絡模型。文獻[5]針對GAN的網絡模型訓練不穩定的缺點,提出一種深度卷積生成對抗網絡(DCGAN)模型,可以通過無監督學習訓練深度卷積生成對抗網絡模型,然后在有監督學習任務中重復利用判別模型的一部分作為特征提取器。條件深度卷積對抗網絡CDCGAN結合了CGAN和DCGAN的優點,在DCGAN的基礎上引入條件y指導訓練。但是這幾種方法,都沒有從根本上解決GAN產生的收斂速度慢、訓練不穩定、生成樣本多樣性不足、collapse mode等問題。
文獻[6]提出了一種用Wasserstein距離代替GAN中JS散度作為懲罰函數的對抗網絡模型WGAN,解決了GAN訓練不穩定問題。文獻[7]又對WGAN模型進行了改進,提出了帶有梯度懲罰的WGAN:WGAN -GP,比WGAN擁有更快的收斂速度,也可以產生更高質量的生成樣本。
本文結合CDCGAN和WGAN-GP的優點,提出一種混合網絡模型:帶有梯度懲罰的條件Wasserstein生成對抗網絡模型(CDCWGAN-GP)。首先訓練此對抗網絡模型,然后從訓練好的網絡模型中提取判別器D來進行圖像分類任務。在這里,本文設計了一個具有識別全局和局部一致性的判別器:全局判別器需要完整圖像的輸入來提取整體圖像的特征,局部判別器只需要從一小塊區域上提取更加細微的特征,這樣可以大大增強判別器提取特征的能力。通過實驗結果可以證明,相比于其他類似的網絡模型,本文提出的CDCWGAN-GP網絡模型在圖像識別任務中獲得了更出色的結果。
生成式對抗網絡模型GAN已經被證明了既可以生成高質量的圖像,也擁有強大的特征提取能力。我們用生成器(G)代表生成模型,判別器(D)代表判別模型[8]。在圖像識別的任務中,GAN網絡同時訓練G和D,生成器G把從先驗分布P_z中采樣得到的隨機矢量z映射到圖像空間;判別器D判斷輸入圖像是不是“真實的”,優化公式如下:
Ez-Pz(z)[log(1-D(G(z))]
(1)
D的輸入參數x代表一張圖片,輸出D(x)代表x為真實圖片的概率,如果為1,就代表100%是真實的圖片,如果為0,就代表不可能是真實的圖片;類似D(x),D(G(z))代表判別器判斷由生成器產生的生成圖片G(z)是否為真實圖片的概率;這樣,G和D構成了一個動態的“博弈過程”。在最理想的狀態下,G可以生成足以“以假亂真”的圖片G(z),對于D來說,它難以判定G生成的圖片究竟是不是真實的,此時D(G(z))=0.5。GAN模型流程圖如下:

圖1 GAN模型的流程圖
條件生成對抗網絡CGAN將屬性信息y融入生成器G和判別器D中,屬性y可以是任何標簽信息,例如圖像的類別、人臉圖像的面部表情等。優化公式如下:
+Ez-Pz(z)[log(1-D(G(z/y))]
(2)
CGAN的目標函數類似GAN的目標函數,在圖像識別任務中,y代表圖片的標簽信息。D(x/y)就代表真實輸入x與標簽y融合后輸入到判別器中得到是否為真實數據的概率;D(G(z/y))就代表判別器判斷由生成器產生的生成數據與y融合后的數據是否為真實的概率。
帶條件的輸入可以指導網絡生成我們想要的某種圖片信息,同時也相當于是從無監督模型到有監督模型。
深度卷積對抗網絡DCGAN是把GAN與CNN結合起來的網絡模型,而條件深度卷積對抗網絡(CDCGAN)就是把CGAN與DCGAN結合起來的網絡模型。CDCGAN是在DCGAN的框架下,將生成器每層的輸入都加上標簽y,同樣將判別器的每層輸入也加上標簽y,利用標簽y指導樣本的生成。


圖2 CDCGAN網絡結構示意圖
1.4.1 WGAN網絡
Wasserstein距離又叫Earth-Mover(EM)距離,定義如下:
(3)
WGAN網絡中構造了一個包含參數ω且最后一層不是非線性激活層的判別器網絡D,在限制ω不超過某個范圍的條件下,使得:
L=Ex~Pr[D(x)]-Ex~Pg[D(x)]
(4)
盡可能取到最大,此時L就近似等于真實分布與生成分布之間的Wasserstein距離(忽略常數倍數K)。
WGAN與GAN相比,其實只改了4點,如下[9]:
1)判別器最后一層去掉sigmoid。
2)生成器和判別器的loss不取log。
3)每次更新判別器的參數之后把它們的絕對值截斷到不超過一個固定常數c。
4)不要用基于動量的優化算法(包括Momentum和Adam)。推薦RMSProp和SGD。
1.4.2 WGAN-GP網絡
WGAN-GP網絡改進了WGAN網絡,使用一個當且僅當其梯度小于或等于1的范數時的可微函數1-Lipschitz對約束函數L進行梯度懲罰。算法如下:
(5)



(6)
這里θ代表U[0,1]的隨機數。相比于WGAN,WGAN-GP有以下幾個特點:
1)該模型提出了在原來WGAN模型的基礎上利用梯度懲罰項來約束Wasserstein距離,避免WGAN模型有可能產生的訓練不穩定和生成數據病態的問題。
2)該模型收斂速度更快,生成樣本質量也更高
3)該模型適應性更強,在不同架構下都可以得到穩定的訓練結果。
本文將CDCGAN和WGAN-GP結合起來,從而得到本文的條件梯度Wasserstein 生成對抗網絡(CDCWGAN-GP)模型。為了提高判別器的提取圖像特征能力,本文將判別器D分為全局判別器和局部判別器,把兩個判別器連接起來一起打分。然后,我們將訓練好的網絡中的判別器D提取出來,構建一個新的卷積網絡進行微調,從而完成圖像分類任務。
在CDCWGAN-GP中,判別器D希望真實數據分布與生成數據分布之間的距離L越大越好,相反,生成器G希望L越小越好,優化公式為:
(7)

(8)
y代表圖像的標簽,在本文中就是圖片的類別。不同WGAN-GP的目標函數,CDCGAN-GP的生成器輸入數據融合了圖片標簽信息,而標簽信息可以指導生成器的樣本生成。判別器D和生成器G的損失函數下:
(9)
判別器的損失函數由兩部分構成:1.生成樣本通過判別器得到的損失;2.真實樣本通過判別器得到的損失,并在前添加負號;兩部分加起來就是判別器的損失函數。
loss(G)=-Ex~Pg[D(x/y)]
(10)
生成器的損失函數定義為生成樣本通過判別器得到的損失,再添加負號。
我們以訓練集CIFAR10為例,圖像大小為32*32。生成器G的輸入z為服從正態分布的100維的隨機噪聲向量,將z與類別標簽y(10維)連接形成一個大小為[64,110]的張量,通過一個linear全連接層將z變換為維度是2 048的向量,然后將其reshape為維度大小是[512,2,2]的張量,進行非線性relu函數變換,得到第一層網絡的輸出。然后通過四層卷積核大小為5*5,步長為(2,2)的轉置卷積層[10],輸出都用非線性relu函數激活,得到大小為[32,32,3]的張量,最后用tanh函數激活,得到生成器的輸出圖片。

圖3 CDCWGAN-GP生成器結構示意圖

類型卷積核大小步長卷積核個數concat//110linear//2048reshape//512deconv2d(1)5?52?2256deconv2d(2)5?52?2128deconv2d(3)5?52?264deconv2d(4)5?52?23
無論是GAN模型還是DCGAN模型中,判別器的網絡模型都是不斷縮小特征圖從而提取到一整張圖片的全局特征,全局特征可以代表一張圖片的整體結構,但是對于圖片中的局部特征并不能很好地表達出來。為了加強模型中判別器提取圖像特征的能力,本文再設計一個局部判別器,用于提取圖片中局部特征,最后將全局判別器和局部判別器結合起來一起打分。
以CIFAR10數據集為例。全局判別器的輸入是一張維度為[3,32,32]大小的圖像,經過五層卷積核大小為5*5,步長為2*2的卷積層,每層輸出都要進行leakyrelu函數變換,得到大小為(512,1,1)的張量,最后reshape成一個維度大小是[1,512]的特征向量。
局部判別器的網絡結構類似于全局判別器,只不過局部判別器的輸入是以原圖中心點為中心,大小是原圖1/4的圖像,尺寸為16*16。經過四層卷積核大小為5*5,步長為2*2的卷積層,每層輸出都要進行leakyrelu函數變換,最后reshape成一個大小為(1,512)的特征向量。
最后我們將全局判別器和局部判別器的輸出用concat函數直接連接起來,形成一個維度大小為1 024的特征向量,然后經過linear全連接層,輸出為1或者0代表輸入圖像的真或者假。
這里我們不同于CDCGAN的網絡,由于我們之后還要將判別器提取出來進行圖像分類, 所以判別器D每層的輸入沒有加入標簽y。并且由于我們使用了梯度懲罰,所以最后的輸出去掉sigmoid函數。
本文對數據集進行批量化處理,batch的大小設為64。

表2 全局判別器的網絡層

表3 局部判別器的網絡層

表4 concat連接層
由于是對每個batch中的每一個樣本都做了梯度懲罰,因此判別器中不能用batchnormalization[11],但是可以使用其他的 Normalization方法[12],比如Layer Normalization、InstanceNormalization。在本文的D網絡,再訓練G網絡,并且每訓練5次D網絡,再訓練1次G網絡,目的就是為了保證D網絡大致滿足Wasserstein距離的條件。在WGAN網絡模型中訓練網絡并不建議用Adam優化器,但是在本文的網絡模型中因為使用了WGAN-GP的訓練方式,所以還是可以用Adam優化器,且參數設定為:β1=0.000 5,β2=0.9,并且本文采用了適應性更強的根據訓練次數可變的學習率,學習率初始化為0.002,當訓練的迭代次數epoch大于設定的訓練次數的一半時,學習率變為原來的十分之一,當訓練的迭代次數epoch大于設定的訓練次數的五分之四時,學習率再變為上一次的十分之一。可變化的學習率可以讓參數調整變得更加有效。

圖4 CDCWGAN-GP判別器結構示意圖
當訓練好CDCWGAN-GP網絡模型后,把判別器D提取出來,將最后一層linear全連接層的輸出改為n(將要分類的類別),最后加上Sofmax分類器,構建一個新的卷積網絡用于圖像識別。卷積網絡的損失函數是Softmax[14]的結果與標簽y的交叉熵,使用Adam優化器進行優化(β1=0.000 5,β2=0.9),并且同樣對數據集進行批量化處理,batch的大小設為64。新的用于圖像識別的網絡只需要進行參數微調,就可以得到很好地分類效果了。在生成式對抗模型中,由于生成器可以生成高質量的樣本,所以判別器不僅能通過原始數據集學習圖像特征,而且還可以通過生成樣本學習到更多的圖像特征。并且本文設計的具有全局和局部一致性的判別器,能更有效的提取到圖像的內部隱含特征,從而有效提高了圖像識別的準確率。
本文分別在FASHION-MNIST[15]和CIFAR-10數據集上進行實例驗證。實驗環境為:Intel(R) Core(TM) i7-7700K CPU @4.20 GHz 四核處理器,金士頓 DDR4 2 400 MHz 16 GB運行內存(RAM),Nvidia GeForce GTX 1 080 (8 GB/戴爾)GPU,Tensorflow(1.4.0)平臺。
許多網絡模型在MNIST數據集上的分類測試結果都己經接近100%,并且MNIST數據集的識別并不能代表真正的計算機視覺問題。所以,我們采用FASHION-MNIST數據集代替MNIST數據集。類似MNIST數據集,FASHION-MNIST數據集包含了7萬張商品照片,其中分為10個類別,訓練集有6萬張,測試集有1萬張,每張圖片都是灰度圖片,且像素大小為28*28。
首先我們訓練對抗網絡,訓練初期,判別器的損失迅速增加,而生成器損失緩慢減少。隨著訓練對抗的不斷進行,判別器損失的增幅減慢,而生成器損失的降幅加快,最終生成器和判別器的對抗達到一個比較穩定的范圍,模型達到收斂。
在整個訓練過程中,生成器G和判別器D一直在進行對抗,訓練開始后,判別器強于生成器,意味著生成樣本與判別樣本的Wasserstein距離較大。隨著訓練次數的不斷增加,對抗趨勢最終將會穩定在一個范圍內,此時意味著生成樣本與判別樣本的Wasserstein距離較小,生成器會略強于判別器。通過對抗網絡得到的生成樣本如圖5所示。
圖5表明,當epoch達到50的時候,生成器就可以生成質量不錯的圖片,隨著epoch不斷增加,生成樣板的質量也越來越高。

表5 FASHION-MNIST各種方法的分類準確率對比

圖5 FASHION-MNIST生成樣本
當對抗網絡訓練好后,我們將判別器抽取出來再進行圖像分類實驗。實驗結果如圖6所示。

圖6 FASHION-MNIST分類準確率的變化
通過與DCGAN進行的實驗對比,突顯了本文模型的分類效果,實驗結果如圖6。其中藍色曲線為DCGAN+softmax的實驗結果,橙色曲線為CDCGAN-GP+softmax的實驗結果。可以發現,將判別器提取出來后,再通過較少的訓練次數進行微調就可以得到很好地分類效果。值得注意的是,本文提出的的CDCWGAN-GP相比DCGAN,收斂的速度更快,最終準確率也更高,可以達到94.5%。
表5將本文模型與傳統卷積神經網絡及其各類變種網絡模型[17]進行了實驗對比,在與本文網絡結構相似的非大型模型中,本文的分類準確率最高,更加突出顯示了本文模型分類能力的優越性。值得特別說明的是,通過在 CDCWGAN-GP訓練對抗網絡的過程中間接進行的數據增強效果優于對原始數據進行預處理的數據增強效果。
CIRAR-10數據集中一共有6萬張彩色圖片,包含了來自10個類別的自然圖像,每張圖片大小是32*32。其中,訓練集有5萬張圖片,5等分地分為5個訓練批,測試集有1萬張圖片。訓練中的損失如下:在CIFAR10上的訓練過程中,整個網絡的判別器損失d_1oss呈增加趨勢,且增幅不斷減慢,而生成器損失g_loss呈增加趨勢,且增幅不斷加快,最終判別器和生成器的對抗趨于穩定的狀態,模型達到收斂。

表6 CIFAR10各種方法的分類準確率對比
CIRFAR-10數據集的生成樣本如圖7所示,可以發現,隨著epoch增加,生成樣本的效果越來越好,當epoch達到150后,生成樣本的效果達到最優。
最后,通過對判別器參數進行微調,得到分類的實驗結果如圖8。一開始分類的準確率就可以達到80%左右,當epoch達到20的時候,準確率趨于穩定,可以達到88%左右。圖8表明本文模型的分類損失隨著epoch增加而逐漸降低。

圖7 CIFAR10生成樣本

圖8 CIFAR10的分類準確率的變化
在CIFAR-10數據集上, 同樣將本文模型與DCGAN模型進行了實驗比對,如圖8通過實驗結果可以證明,相比DCGAN模型,我們的模型收斂速度更快,并且分類的結果準確度也更高。
表6是本文模型與其他模型[18-19]在CIFAR-10數據集上進行的實驗結果比對。可以發現,本文模型優于其他的比較模型且取得了最佳的效果。
本文結合WGAN-GP網絡模型和CDCGAN網絡模型,提出了混合模型—條件梯度Wasserstein生成對抗網絡CDCWGAN-GP。并且為了能更全面的提取圖像的特征,將判別器分為了全局判別器和局部判別器,利用兩個判別器一起打分,從而更好地識別圖像的全局和局部一致性。利用本文的模型來進行圖像識別,可以使準確率顯著提升。本文提出的模型不僅能得到質量很高的生成樣本,而且相比傳統的GAN訓練方式,收斂速度更快,訓練時也更加穩定,再利用具有全局和局部一致性的判別器能更好地提取圖像特征并進行特征表達。在FASHION-MNIST和CIFAR10數據集上進行的實驗證明,相比于其他類似的方法,本文的模型分類效果更加出色,證明了此模型的可行性。在以后的工作中,作者將針對高分辨率圖像該如何訓練,對抗模型什么時候達到最優效果,以及不同參數(例如不同優化器的選擇,batch的大小不同)對精度的影響等問題進行更加深入的研究。