尹玉婷,肖秦琨
(西安工業(yè)大學 電子信息工程學院,陜西 西安 710021)
近年來傳感器技術(shù)、互聯(lián)網(wǎng)物聯(lián)網(wǎng)通信技術(shù)以及計算機視覺技術(shù)迅速發(fā)展,人們越來越希望通過監(jiān)控系統(tǒng)和計算機視覺完成視覺事件的記錄以及對感興趣事件做出判斷的任務,從而實現(xiàn)人機交互等。各種新型虛擬增強現(xiàn)實應用技術(shù)在軍事科學工程、教育以及醫(yī)療、娛樂等各個方面得到了廣泛應用。VR的實際應用以當前計算機網(wǎng)絡視覺技術(shù)領(lǐng)域中視頻圖像圖片生成后的相關(guān)視覺技術(shù)應用為理論基礎(chǔ),將圖像生成后的影像圖片、視頻與其他視覺技術(shù)進行結(jié)合,構(gòu)造顯示出一個真實虛擬的“現(xiàn)實”并將世界展示出來。為了生成多樣化、清晰化的圖片,展開了對計算機模擬圖像生成方法的研究。
生成模型是通過應用最小—最大優(yōu)化框架來訓練和生成數(shù)據(jù)。近年來提出的圖像生成方法主要有兩種,一種是Goodfellow等人提出的生成對抗網(wǎng)絡[1](generative adversarial networks,GAN),另一種是自編碼器[2](auto encoder,AE)。GAN是由生成網(wǎng)絡和判別網(wǎng)絡組成,這兩種網(wǎng)絡之間是一種對抗博弈關(guān)系,生成網(wǎng)絡就像造“假幣”的機器,根據(jù)已有的“紙幣”(真實數(shù)據(jù))模仿生產(chǎn)出近乎真實的紙幣,判別網(wǎng)絡作為一個分類器起到了類似“驗鈔機”的作用,判斷紙幣的真?zhèn)?,也就是決策出生成數(shù)據(jù)是否真實。依據(jù)判別網(wǎng)絡給出的結(jié)果,生成網(wǎng)絡不斷改進網(wǎng)絡參數(shù)設(shè)置,提高自身的生成能力,使生成的結(jié)果更接近原始數(shù)據(jù)。從博弈論的角度來說,兩種網(wǎng)絡處于一種競爭關(guān)系,最終兩個網(wǎng)絡實現(xiàn)納什均衡。原始的生成對抗網(wǎng)絡在訓練過程中生成的圖像質(zhì)量不太穩(wěn)定,生成效果不理想。自動編碼器主要使用編碼—解碼框架生成數(shù)據(jù),學習編碼圖像和潛在對象代碼之間的編碼器和解碼器映射,其生成的圖像更加準確;但由于其使用均方誤差等作為損失函數(shù),生成的圖片沒有細節(jié),畫面不清晰,單純?yōu)榱伺袆e器無法判斷出圖片是否是真實樣本而過度發(fā)揮,造成圖片失真。基于這兩種方法各自的優(yōu)缺點,該文在GAN中引入深度卷積神經(jīng)網(wǎng)絡以及編碼原理,提高網(wǎng)絡提取特征的能力,該方法避免了生成圖片質(zhì)量不高、圖像失真的缺點,使得生成的圖像擁有更高的質(zhì)量。
機器學習的一個主要部分是生成模型與判別模型。在判別建模中,一個目標是根據(jù)給定的觀測值學習預測變量,另一個目標是解決學習所有變量的聯(lián)合分布這一更普遍的問題。生成模型可模擬在現(xiàn)實世界中如何生成數(shù)據(jù)。幾乎每門科學都將“建?!崩斫鉃橥ㄟ^假設(shè)理論并通過觀察測試這些理論來揭示這一生成過程。生成模型具有吸引力的原因有很多,將不知道或不關(guān)心的細節(jié)(即有害變量)視為噪聲。
設(shè)圖片的真實樣本數(shù)據(jù)為{x1,x2,…,xn},其整體用X表示,在理想情況下,根據(jù)真實樣本數(shù)據(jù)得到X的分布p(X),對p(X)進行采樣就可以得到所需的X,即p(Z|X)根據(jù)貝葉斯公式可得:
(1)
實際上,X的分布p(X)無法直接求得,此時引入隱變量Z希望在給定X的條件下可以推斷出Z的分布,由全概率公式得:
(2)
其中,p(X|Z)表示一個由Z生成X的模型,假設(shè)Z服從標準正態(tài)分布,即p(Z)~N(0,1)。首先從標準正態(tài)分布中采樣一個隱變量Z,然后根據(jù)隱變量Z來不斷擬合X,達到生成X的目的。
當Z為高維度變量時,那么
p(X)=?…p(X|Z)p(Z)dZ
(3)
實際中大多數(shù)Z的p(X|Z)都是0,對評估p(X)幾無用處。這需要一個對任意X能給出產(chǎn)生X的Z值分布的函數(shù)q(Z|X)。q下產(chǎn)生X的Z值空間很有希望遠小于先驗p(Z)的Z值空間,因而計算EZ~qp(X|Z)就更為簡便。但現(xiàn)在Z來自任意分布的q(Z)而非N(0,I),要用于優(yōu)化p(X)需先將EZ~qp(X|Z)和p(X)關(guān)聯(lián)起來。EZ~qp(X|Z)和p(X)之間的關(guān)系是變分貝葉斯方法的基礎(chǔ)之一。定義p(Z|X)和q(Z)之間的KL散度,希望其之間差異最小,即求解minKL[q(Z)‖p(Z|X)]。
(4)
由于X是給定數(shù)據(jù),則p(X)為定值,那么最小化minKL[q(Z)‖p(Z|X)]即最小化下式:
KL(q(Z)‖p(Z))-
(5)
變分自編碼器(variational auto-encoder,VAE)是無監(jiān)督深度學習中最重要的生成模型之一[3]。
圖1 自編碼器原理
變分自編碼器也就是在自編碼器的基礎(chǔ)上,構(gòu)建編碼網(wǎng)絡過程中對網(wǎng)絡結(jié)構(gòu)加以限制。根據(jù)貝葉斯理論,編碼器把輸入數(shù)據(jù)映射為在一個隱變量空間的后驗分布,但是根據(jù)式(1),輸入數(shù)據(jù)到隱變量的后驗分布并不好求出其解。編碼器就相當于一個變分推斷網(wǎng)絡[4],VAE給編碼器加了一個條件約束,讓編碼網(wǎng)絡不再是每次產(chǎn)生一個隱含向量而是生成兩個向量,其分布能夠大致上遵循一個標準正態(tài)分布,即就是編碼器一個用來計算均值,另一個計算標準差,隱向量從正態(tài)分布采樣得出。解碼器實現(xiàn)從隱向量到輸入數(shù)據(jù)的恢復,將低維數(shù)據(jù)還原為高維,此過程可以用似然函數(shù)p(X|Z)表示。由于解碼器的輸入為隱向量Z,其中丟失了原始數(shù)據(jù)的部分信息,因此對于圖片生成重構(gòu)出的原始圖片會存在失真、模糊等問題。變分自編碼器原理如圖2所示。
圖2 變分自編碼器原理
該文采用深度卷積生成對抗網(wǎng)絡來進行手寫字體圖像生成,圖像生成模型總體框架由兩部分組成,如圖3所示,左邊是判別網(wǎng)絡,又稱判別器(Discriminator),根據(jù)輸入圖片的真假輸出結(jié)果“1”或者“0”,當輸入的圖片為真實圖片時,輸出為“1”,否則判別器輸出為“0”;右邊是生成網(wǎng)絡,又稱生成器(Generator),它可以看作是一個變分自編碼器,經(jīng)過編碼獲取輸入圖片的隱空間信息,經(jīng)由解碼器生成新的圖片。
圖3 圖像生成模型總體框架
編碼器網(wǎng)絡通過將訓練數(shù)據(jù)集中的真實圖像進行編碼,將真實圖像映射出來到一個潛在空間,提取真實訓練圖像的物理特征[7]。生成器網(wǎng)絡將得到的真實圖像編碼作為輸入,以期生成能夠讓判別器不能正確判別的圖片。判別器網(wǎng)絡對真實圖片和生成圖片進行判別,判定其屬于真實圖片還是生成器生成圖片,為了避免前期網(wǎng)絡判別效果與后期網(wǎng)絡判別效果差距太大的缺點,網(wǎng)絡加入了隨機性技術(shù),提高了判別器網(wǎng)絡的穩(wěn)定性與魯棒性,得到了更好的判別效果,同時促使生成器生成更加真實的圖像。
生成器網(wǎng)絡將得到的真實圖像編碼作為輸入,以期生成能夠讓判別器不能正確判別的圖片。為了能夠生成高質(zhì)量的圖片,在輸入端進行改進,將真實圖片進行編碼操作,提取真實的圖像特征,編碼器也由神經(jīng)網(wǎng)絡構(gòu)成。對于每個得到的均值和方差,進入具有正態(tài)分布的噪聲,使其向滿足正態(tài)分布的特征向量靠近,然后將得到的特征向量輸入生成器生成圖像。生成模型的結(jié)構(gòu)如圖4所示。
圖4 生成器優(yōu)化模型
通常情況下,一般的CNN網(wǎng)絡包含輸入層、隱藏層和輸出層,中間的隱藏層是由卷積層、池化層和全連接層組成的[8-9]。輸入層負責接收數(shù)據(jù)并將數(shù)據(jù)傳遞給隱藏層,不進行計算。隱藏層的神經(jīng)元不與外部數(shù)據(jù)直接接觸,它將接收到的數(shù)據(jù)經(jīng)過激活函數(shù)計算后輸出傳遞給下一層隱藏神經(jīng)元或者輸出神經(jīng)元,隱藏層的層數(shù)和每層含有的神經(jīng)元數(shù)目屬于模型的超參數(shù),通常在訓練前使用驗證集尋找最佳的一組超參數(shù)集。輸出層是輸出網(wǎng)絡的計算結(jié)果,在訓練過程中,通常和訓練集中該次輸入對應的理想輸出進行比較,它們的差異就是網(wǎng)絡優(yōu)化的指標。但是在生成網(wǎng)絡的卷積結(jié)構(gòu)的改進上取消了池化層,而是將卷積層替代了池化層。
設(shè)圖像的真實樣本為x,經(jīng)過編碼器編碼后得到均值μ和方差σ,使用標準正態(tài)分布構(gòu)造隨機特征向量c。
c=μ+σ2⊙N(0,I)
(6)
(7)
(8)
根據(jù)式(8),可得經(jīng)過判別器后的輸出:
(9)
其中,D(x)的含義是判別樣本x正確的概率,那么(1-D(x))則為判別成錯誤樣本的概率。GAN網(wǎng)絡整個輸入數(shù)據(jù)要么是真實圖片要么是生成圖片,當網(wǎng)絡達到平衡時,判別器D(x)的概率會接近0.5,此時根據(jù)式(9)的定義,建立誤差函數(shù),其表達式為:
(10)
θd=(θf,θc)
(11)
生成模型通過反向傳播算法[10-11]可以調(diào)節(jié)生成網(wǎng)絡的權(quán)重大小,使偽圖像(就是生成的樣本圖片)與真實的樣本圖片不斷接近,判別模型的損失函數(shù)會不斷由大變小,生成模型的損失函數(shù)不斷由小變大,隨著時間的推移,最終使得網(wǎng)絡平衡的具體方法為最大化噪聲分布的熵值,最大化式(12):
(12)
判別網(wǎng)絡的改進設(shè)計如圖5所示。它相較于生成網(wǎng)絡沒有做出巨大改變,如果將這一過程比作編碼,將是一個編解碼操作,生成網(wǎng)絡是編碼器,而判別器就是解碼器。生成網(wǎng)絡實現(xiàn)反卷積,那么判別網(wǎng)絡完成卷積操作,實現(xiàn)生成網(wǎng)絡的逆過程。與生成網(wǎng)絡相同的是,同樣取消了池化層的操作,用卷積層來代替池化層[12]。
圖5 判別器優(yōu)化模型
設(shè)pdata(x)和pg(x)分別表示真實手寫字體樣本和優(yōu)化后的生成模型輸出的圖片樣本。判別網(wǎng)絡和生成網(wǎng)絡都有自己的損失函數(shù),但是GAN由這兩者組成,損失函數(shù)就依照下式進行修正:
pglog(1-D(x))dx
(13)
在訓練過程中,需要pdata(x)和pg(x)無限接近。在對式(13)進行優(yōu)化的過程中,需要對生成網(wǎng)絡和判別網(wǎng)絡分別進行交互迭代[13-14]。當訓練判別網(wǎng)絡時,將真實手寫字體圖片與生成的圖片混合在一起,作為輸入送入判別器,判別器會給出結(jié)果“0”或“1”,根據(jù)輸出值調(diào)整網(wǎng)絡參數(shù);當訓練生成網(wǎng)絡時,將兩個網(wǎng)絡看成一個網(wǎng)絡,隨機輸入一組數(shù)據(jù),生成網(wǎng)絡產(chǎn)生一張圖片,判別器給出判別結(jié)果,將差異反饋給生成網(wǎng)絡,調(diào)整參數(shù),如此進行交互迭代,直到最終兩個網(wǎng)絡達到穩(wěn)定。對判別網(wǎng)絡進行優(yōu)化[15]的時候,也需要對其進行最小化交叉熵操作,其損失函數(shù)如下:
pglog(1-D(x))]dx
(14)
式(15)是典型的統(tǒng)計分布問題,其最優(yōu)解為:
(15)
由于pdata(x)和pg(x)都表示概率大小,在實際訓練時,pdata(x)和pg(x)取值不可能為0,其取值一定為(0,1]之間的實數(shù)。根據(jù)上述理論,目標函數(shù)必須要在這個連續(xù)空間中處處可微,根據(jù)一階求導規(guī)則,目標函數(shù)V(D,G)在式(15)處取得最小值。當固定生成網(wǎng)絡時,判別網(wǎng)絡已經(jīng)具有最優(yōu)解,同時判別網(wǎng)絡達到了最好的性能。同理,在判別器最優(yōu)的條件下,將式(14)可以重寫為下面的形式:
V(D,G)=
-log(4)+2JS(pdata(x)‖pg(x))
當pg(x)=pdata(x)時,可以得到全局最小值-log(4)。
實驗數(shù)據(jù)集使用深度學習領(lǐng)域最常用的公共數(shù)據(jù)集—MNIST手寫體數(shù)字數(shù)據(jù)集,該數(shù)據(jù)集共包含70 000張28×28像素大小的手寫數(shù)字的灰度圖片,每一張灰度圖片都有對應的標簽,即圖片對應的數(shù)字。該實驗將數(shù)據(jù)集分成兩部分,其中訓練數(shù)據(jù)集images_num有60 000張圖片,剩下10 000張作測試數(shù)據(jù)集,實驗中判別網(wǎng)絡的學習率設(shè)為0.001,生成網(wǎng)絡的學習率設(shè)為0.001,訓練進程epoch為2 000,batch_size設(shè)為60,共有1 000個batch_num,每一個進程重復訓練這1 000個batch_num,由圖6可以看出,當隨著訓練進程epoch的增大,損失函數(shù)發(fā)生突變。這是由于在每一個epoch中,網(wǎng)絡前向傳播出輸出值,神經(jīng)網(wǎng)絡的參數(shù)太多,發(fā)生錯誤時進行反饋,訓練時間足夠長時,網(wǎng)絡會記住整個訓練細節(jié),造成訓練過度梯度消失。
為了防止訓練過度梯度消失,在生成網(wǎng)絡和判別網(wǎng)絡的每一個卷積層之后均使用批量歸一化操作,批量歸一化層對網(wǎng)絡中的激活值和梯度傳播進行歸一化,使網(wǎng)絡訓練成為更簡單的優(yōu)化問題。卷積層之后使用批量歸一化層,來加速網(wǎng)絡訓練并降低對網(wǎng)絡初始化的敏感度,可以防止訓練時梯度消失,隨著訓練進程的增加,網(wǎng)絡的損失函數(shù)也在不斷變化,訓練進程與模型損失函數(shù)的關(guān)系如圖6、圖7所示。
圖6 判別器和生成器的損失函數(shù)曲線
圖7 改進后判別器和生成器的損失函數(shù)曲線
圖7中表示判別網(wǎng)絡中正確判斷真實圖片類別和生成圖片類別的準確率,在加入卷積層之后均使用批量歸一化操作,損失函數(shù)沒有出現(xiàn)突變,沒有發(fā)生梯度消失。另外適當減少訓練時間,將訓練進程減少到1 000次,避免造成神經(jīng)網(wǎng)絡過度學習數(shù)據(jù)集的特征,過度擬合,使生成和判別效果大打折扣。最終判別器損失函數(shù)穩(wěn)定在2.6左右,生成器的損失一直在減小,穩(wěn)定在0.45左右。
圖8 不同迭代次數(shù)下生成的手寫字體
圖8表示在不同的訓練迭代次數(shù)下生成網(wǎng)絡生成的圖片??梢钥闯?,開始10個進程后,可以從隨機噪聲到隱約看出數(shù)字形狀,再到100個進程字體雛形顯現(xiàn),生成的字體沒有模糊,邊界清晰。實驗證明,該方法能夠完成手寫字體圖片的生成。
圖9 圖像生成效果對比
圖9表示在不同網(wǎng)絡下生成的圖片,左側(cè)是VAE生成圖像效果圖,中間是GAN生成圖像效果圖,右側(cè)是文中網(wǎng)絡生成圖像效果圖。能夠明顯看到,經(jīng)過相同的訓練輪數(shù),VAE生成的圖像比較規(guī)范,基本沒有噪點和亂點,但是圖像模糊,缺少細節(jié);GAN生成的圖像相比VAE細節(jié)明顯,但是存在噪點和亂點;文中提出的網(wǎng)絡生成的圖像則更加清晰,且噪點和亂點相比GAN更少。
除此之外,實驗還選取了基于RNN、PCA、SVM圖像識別,對比這些方法和文中方法在圖像識別的準確率。不同方法在MNIST數(shù)據(jù)集上的識別準確率對比如表1所示。
表1 不同方法的識別率
從表1可知,使用SVM和PCA的準確率可以達到91%左右,RNN方法的準確率可以達到96%左右,文中方法圖像識別的準確率可以穩(wěn)定保持在98%左右。根據(jù)對比結(jié)果,文中方法有更好的性能,生成的圖片更易被識別。
基于深度卷積神經(jīng)網(wǎng)絡和生成對抗網(wǎng)絡,引入變分自編碼器,深度卷積神經(jīng)網(wǎng)絡解決了傳統(tǒng)人工神經(jīng)網(wǎng)絡特征提取不準確,造成生成圖片質(zhì)量不高的問題;變分自編碼器的引入,充分發(fā)揮數(shù)據(jù)中的隱空間信息對圖片生成的促進作用。同時模型的改進,大大提高了網(wǎng)絡分類準確率。該模型的生成方法,彌補了訓練數(shù)據(jù)不足帶來的識別精度下降的缺點,除此之外,該模型的擴展還可以應用到其他圖形。但是該方法只在MNIST數(shù)據(jù)集上進行驗證,其穩(wěn)定性和生成性能還需要在其他數(shù)據(jù)集上作進一步的研究。