尹玉婷,肖秦琨
(西安工業大學 電子信息工程學院,陜西 西安 710021)
近年來傳感器技術、互聯網物聯網通信技術以及計算機視覺技術迅速發展,人們越來越希望通過監控系統和計算機視覺完成視覺事件的記錄以及對感興趣事件做出判斷的任務,從而實現人機交互等。各種新型虛擬增強現實應用技術在軍事科學工程、教育以及醫療、娛樂等各個方面得到了廣泛應用。VR的實際應用以當前計算機網絡視覺技術領域中視頻圖像圖片生成后的相關視覺技術應用為理論基礎,將圖像生成后的影像圖片、視頻與其他視覺技術進行結合,構造顯示出一個真實虛擬的“現實”并將世界展示出來。為了生成多樣化、清晰化的圖片,展開了對計算機模擬圖像生成方法的研究。
生成模型是通過應用最小—最大優化框架來訓練和生成數據。近年來提出的圖像生成方法主要有兩種,一種是Goodfellow等人提出的生成對抗網絡[1](generative adversarial networks,GAN),另一種是自編碼器[2](auto encoder,AE)。GAN是由生成網絡和判別網絡組成,這兩種網絡之間是一種對抗博弈關系,生成網絡就像造“假幣”的機器,根據已有的“紙幣”(真實數據)模仿生產出近乎真實的紙幣,判別網絡作為一個分類器起到了類似“驗鈔機”的作用,判斷紙幣的真偽,也就是決策出生成數據是否真實。依據判別網絡給出的結果,生成網絡不斷改進網絡參數設置,提高自身的生成能力,使生成的結果更接近原始數據。從博弈論的角度來說,兩種網絡處于一種競爭關系,最終兩個網絡實現納什均衡。原始的生成對抗網絡在訓練過程中生成的圖像質量不太穩定,生成效果不理想。自動編碼器主要使用編碼—解碼框架生成數據,學習編碼圖像和潛在對象代碼之間的編碼器和解碼器映射,其生成的圖像更加準確;但由于其使用均方誤差等作為損失函數,生成的圖片沒有細節,畫面不清晰,單純為了判別器無法判斷出圖片是否是真實樣本而過度發揮,造成圖片失真。基于這兩種方法各自的優缺點,該文在GAN中引入深度卷積神經網絡以及編碼原理,提高網絡提取特征的能力,該方法避免了生成圖片質量不高、圖像失真的缺點,使得生成的圖像擁有更高的質量。
機器學習的一個主要部分是生成模型與判別模型。在判別建模中,一個目標是根據給定的觀測值學習預測變量,另一個目標是解決學習所有變量的聯合分布這一更普遍的問題。生成模型可模擬在現實世界中如何生成數據。幾乎每門科學都將“建模”理解為通過假設理論并通過觀察測試這些理論來揭示這一生成過程。生成模型具有吸引力的原因有很多,將不知道或不關心的細節(即有害變量)視為噪聲。
設圖片的真實樣本數據為{x1,x2,…,xn},其整體用X表示,在理想情況下,根據真實樣本數據得到X的分布p(X),對p(X)進行采樣就可以得到所需的X,即p(Z|X)根據貝葉斯公式可得:

(1)
實際上,X的分布p(X)無法直接求得,此時引入隱變量Z希望在給定X的條件下可以推斷出Z的分布,由全概率公式得:

(2)
其中,p(X|Z)表示一個由Z生成X的模型,假設Z服從標準正態分布,即p(Z)~N(0,1)。首先從標準正態分布中采樣一個隱變量Z,然后根據隱變量Z來不斷擬合X,達到生成X的目的。
當Z為高維度變量時,那么
p(X)=?…p(X|Z)p(Z)dZ
(3)
實際中大多數Z的p(X|Z)都是0,對評估p(X)幾無用處。這需要一個對任意X能給出產生X的Z值分布的函數q(Z|X)。q下產生X的Z值空間很有希望遠小于先驗p(Z)的Z值空間,因而計算EZ~qp(X|Z)就更為簡便。但現在Z來自任意分布的q(Z)而非N(0,I),要用于優化p(X)需先將EZ~qp(X|Z)和p(X)關聯起來。EZ~qp(X|Z)和p(X)之間的關系是變分貝葉斯方法的基礎之一。定義p(Z|X)和q(Z)之間的KL散度,希望其之間差異最小,即求解minKL[q(Z)‖p(Z|X)]。

(4)
由于X是給定數據,則p(X)為定值,那么最小化minKL[q(Z)‖p(Z|X)]即最小化下式:


KL(q(Z)‖p(Z))-

(5)
變分自編碼器(variational auto-encoder,VAE)是無監督深度學習中最重要的生成模型之一[3]。


圖1 自編碼器原理
變分自編碼器也就是在自編碼器的基礎上,構建編碼網絡過程中對網絡結構加以限制。根據貝葉斯理論,編碼器把輸入數據映射為在一個隱變量空間的后驗分布,但是根據式(1),輸入數據到隱變量的后驗分布并不好求出其解。編碼器就相當于一個變分推斷網絡[4],VAE給編碼器加了一個條件約束,讓編碼網絡不再是每次產生一個隱含向量而是生成兩個向量,其分布能夠大致上遵循一個標準正態分布,即就是編碼器一個用來計算均值,另一個計算標準差,隱向量從正態分布采樣得出。解碼器實現從隱向量到輸入數據的恢復,將低維數據還原為高維,此過程可以用似然函數p(X|Z)表示。由于解碼器的輸入為隱向量Z,其中丟失了原始數據的部分信息,因此對于圖片生成重構出的原始圖片會存在失真、模糊等問題。變分自編碼器原理如圖2所示。

圖2 變分自編碼器原理

該文采用深度卷積生成對抗網絡來進行手寫字體圖像生成,圖像生成模型總體框架由兩部分組成,如圖3所示,左邊是判別網絡,又稱判別器(Discriminator),根據輸入圖片的真假輸出結果“1”或者“0”,當輸入的圖片為真實圖片時,輸出為“1”,否則判別器輸出為“0”;右邊是生成網絡,又稱生成器(Generator),它可以看作是一個變分自編碼器,經過編碼獲取輸入圖片的隱空間信息,經由解碼器生成新的圖片。

圖3 圖像生成模型總體框架
編碼器網絡通過將訓練數據集中的真實圖像進行編碼,將真實圖像映射出來到一個潛在空間,提取真實訓練圖像的物理特征[7]。生成器網絡將得到的真實圖像編碼作為輸入,以期生成能夠讓判別器不能正確判別的圖片。判別器網絡對真實圖片和生成圖片進行判別,判定其屬于真實圖片還是生成器生成圖片,為了避免前期網絡判別效果與后期網絡判別效果差距太大的缺點,網絡加入了隨機性技術,提高了判別器網絡的穩定性與魯棒性,得到了更好的判別效果,同時促使生成器生成更加真實的圖像。
生成器網絡將得到的真實圖像編碼作為輸入,以期生成能夠讓判別器不能正確判別的圖片。為了能夠生成高質量的圖片,在輸入端進行改進,將真實圖片進行編碼操作,提取真實的圖像特征,編碼器也由神經網絡構成。對于每個得到的均值和方差,進入具有正態分布的噪聲,使其向滿足正態分布的特征向量靠近,然后將得到的特征向量輸入生成器生成圖像。生成模型的結構如圖4所示。

圖4 生成器優化模型
通常情況下,一般的CNN網絡包含輸入層、隱藏層和輸出層,中間的隱藏層是由卷積層、池化層和全連接層組成的[8-9]。輸入層負責接收數據并將數據傳遞給隱藏層,不進行計算。隱藏層的神經元不與外部數據直接接觸,它將接收到的數據經過激活函數計算后輸出傳遞給下一層隱藏神經元或者輸出神經元,隱藏層的層數和每層含有的神經元數目屬于模型的超參數,通常在訓練前使用驗證集尋找最佳的一組超參數集。輸出層是輸出網絡的計算結果,在訓練過程中,通常和訓練集中該次輸入對應的理想輸出進行比較,它們的差異就是網絡優化的指標。但是在生成網絡的卷積結構的改進上取消了池化層,而是將卷積層替代了池化層。
設圖像的真實樣本為x,經過編碼器編碼后得到均值μ和方差σ,使用標準正態分布構造隨機特征向量c。
c=μ+σ2⊙N(0,I)
(6)
(7)

(8)
根據式(8),可得經過判別器后的輸出:

(9)
其中,D(x)的含義是判別樣本x正確的概率,那么(1-D(x))則為判別成錯誤樣本的概率。GAN網絡整個輸入數據要么是真實圖片要么是生成圖片,當網絡達到平衡時,判別器D(x)的概率會接近0.5,此時根據式(9)的定義,建立誤差函數,其表達式為:
(10)

θd=(θf,θc)
(11)
生成模型通過反向傳播算法[10-11]可以調節生成網絡的權重大小,使偽圖像(就是生成的樣本圖片)與真實的樣本圖片不斷接近,判別模型的損失函數會不斷由大變小,生成模型的損失函數不斷由小變大,隨著時間的推移,最終使得網絡平衡的具體方法為最大化噪聲分布的熵值,最大化式(12):
(12)

判別網絡的改進設計如圖5所示。它相較于生成網絡沒有做出巨大改變,如果將這一過程比作編碼,將是一個編解碼操作,生成網絡是編碼器,而判別器就是解碼器。生成網絡實現反卷積,那么判別網絡完成卷積操作,實現生成網絡的逆過程。與生成網絡相同的是,同樣取消了池化層的操作,用卷積層來代替池化層[12]。

圖5 判別器優化模型
設pdata(x)和pg(x)分別表示真實手寫字體樣本和優化后的生成模型輸出的圖片樣本。判別網絡和生成網絡都有自己的損失函數,但是GAN由這兩者組成,損失函數就依照下式進行修正:

pglog(1-D(x))dx
(13)
在訓練過程中,需要pdata(x)和pg(x)無限接近。在對式(13)進行優化的過程中,需要對生成網絡和判別網絡分別進行交互迭代[13-14]。當訓練判別網絡時,將真實手寫字體圖片與生成的圖片混合在一起,作為輸入送入判別器,判別器會給出結果“0”或“1”,根據輸出值調整網絡參數;當訓練生成網絡時,將兩個網絡看成一個網絡,隨機輸入一組數據,生成網絡產生一張圖片,判別器給出判別結果,將差異反饋給生成網絡,調整參數,如此進行交互迭代,直到最終兩個網絡達到穩定。對判別網絡進行優化[15]的時候,也需要對其進行最小化交叉熵操作,其損失函數如下:

pglog(1-D(x))]dx
(14)
式(15)是典型的統計分布問題,其最優解為:
(15)
由于pdata(x)和pg(x)都表示概率大小,在實際訓練時,pdata(x)和pg(x)取值不可能為0,其取值一定為(0,1]之間的實數。根據上述理論,目標函數必須要在這個連續空間中處處可微,根據一階求導規則,目標函數V(D,G)在式(15)處取得最小值。當固定生成網絡時,判別網絡已經具有最優解,同時判別網絡達到了最好的性能。同理,在判別器最優的條件下,將式(14)可以重寫為下面的形式:
V(D,G)=
-log(4)+2JS(pdata(x)‖pg(x))
當pg(x)=pdata(x)時,可以得到全局最小值-log(4)。
實驗數據集使用深度學習領域最常用的公共數據集—MNIST手寫體數字數據集,該數據集共包含70 000張28×28像素大小的手寫數字的灰度圖片,每一張灰度圖片都有對應的標簽,即圖片對應的數字。該實驗將數據集分成兩部分,其中訓練數據集images_num有60 000張圖片,剩下10 000張作測試數據集,實驗中判別網絡的學習率設為0.001,生成網絡的學習率設為0.001,訓練進程epoch為2 000,batch_size設為60,共有1 000個batch_num,每一個進程重復訓練這1 000個batch_num,由圖6可以看出,當隨著訓練進程epoch的增大,損失函數發生突變。這是由于在每一個epoch中,網絡前向傳播出輸出值,神經網絡的參數太多,發生錯誤時進行反饋,訓練時間足夠長時,網絡會記住整個訓練細節,造成訓練過度梯度消失。
為了防止訓練過度梯度消失,在生成網絡和判別網絡的每一個卷積層之后均使用批量歸一化操作,批量歸一化層對網絡中的激活值和梯度傳播進行歸一化,使網絡訓練成為更簡單的優化問題。卷積層之后使用批量歸一化層,來加速網絡訓練并降低對網絡初始化的敏感度,可以防止訓練時梯度消失,隨著訓練進程的增加,網絡的損失函數也在不斷變化,訓練進程與模型損失函數的關系如圖6、圖7所示。

圖6 判別器和生成器的損失函數曲線

圖7 改進后判別器和生成器的損失函數曲線
圖7中表示判別網絡中正確判斷真實圖片類別和生成圖片類別的準確率,在加入卷積層之后均使用批量歸一化操作,損失函數沒有出現突變,沒有發生梯度消失。另外適當減少訓練時間,將訓練進程減少到1 000次,避免造成神經網絡過度學習數據集的特征,過度擬合,使生成和判別效果大打折扣。最終判別器損失函數穩定在2.6左右,生成器的損失一直在減小,穩定在0.45左右。

圖8 不同迭代次數下生成的手寫字體
圖8表示在不同的訓練迭代次數下生成網絡生成的圖片。可以看出,開始10個進程后,可以從隨機噪聲到隱約看出數字形狀,再到100個進程字體雛形顯現,生成的字體沒有模糊,邊界清晰。實驗證明,該方法能夠完成手寫字體圖片的生成。

圖9 圖像生成效果對比
圖9表示在不同網絡下生成的圖片,左側是VAE生成圖像效果圖,中間是GAN生成圖像效果圖,右側是文中網絡生成圖像效果圖。能夠明顯看到,經過相同的訓練輪數,VAE生成的圖像比較規范,基本沒有噪點和亂點,但是圖像模糊,缺少細節;GAN生成的圖像相比VAE細節明顯,但是存在噪點和亂點;文中提出的網絡生成的圖像則更加清晰,且噪點和亂點相比GAN更少。
除此之外,實驗還選取了基于RNN、PCA、SVM圖像識別,對比這些方法和文中方法在圖像識別的準確率。不同方法在MNIST數據集上的識別準確率對比如表1所示。

表1 不同方法的識別率
從表1可知,使用SVM和PCA的準確率可以達到91%左右,RNN方法的準確率可以達到96%左右,文中方法圖像識別的準確率可以穩定保持在98%左右。根據對比結果,文中方法有更好的性能,生成的圖片更易被識別。
基于深度卷積神經網絡和生成對抗網絡,引入變分自編碼器,深度卷積神經網絡解決了傳統人工神經網絡特征提取不準確,造成生成圖片質量不高的問題;變分自編碼器的引入,充分發揮數據中的隱空間信息對圖片生成的促進作用。同時模型的改進,大大提高了網絡分類準確率。該模型的生成方法,彌補了訓練數據不足帶來的識別精度下降的缺點,除此之外,該模型的擴展還可以應用到其他圖形。但是該方法只在MNIST數據集上進行驗證,其穩定性和生成性能還需要在其他數據集上作進一步的研究。