楊耀坤,肖衛國,王 力
(北京控制與電子技術研究所,北京 100038)
自動駕駛、AI診療等技術正在逐步進入日常生活。這些新技術在研究和應用過程中對圖像數據的需求量越來越大[1]。在現實世界里,由于各種客觀條件的限制,大規模的圖像數據往往難以取得[2]。訓練數據不足的困境,阻礙了這些新技術的發展和應用。如何生成逼真度高、多樣性豐富的圖像樣本已經成為當前人工智能領域的研究熱點,而深度學習中的生成式模型正日漸成為圖像樣本生成的主流方法[3]。
然而當面對小樣本圖像生成問題時,已有生成式模型的效果并不好。小規模數據集(即圖像尺寸維度遠大于樣本集的數據規模)會影響生成式模型獲得滿意的圖像生成效果[4]。
針對小規模數據集圖像生成問題,本文對原始GAN進行了改進,提出了改進的深度卷積生成式對抗網絡MDCGAN。相較原始的GAN,MDCGAN幾乎完全使用了卷積層代替全鏈接層,使用了帶步長的卷積代替了上采樣。同時將條件信息y引入判別器和生成器中,條件信息y能夠為生成式對抗網絡增加條件,對生成數據起到監督作用。通過手寫數字生成實驗和建筑物輪廓生成實驗證明,我們提出的MDCGAN能夠基于小規模圖像數據集生成逼真度高、多樣性豐富的圖像。
GAN的理論來自于二人零和博弈[5],在博弈過程中,雙方都會根據對方策略不斷更新自身策略,最終博弈雙方會達到納什均衡狀態。GAN的邏輯框架包括判別器和生成器兩部分。分別用D來表示判別器模型,用G來表示生成器型。生成模型用來學習真實數據的分布,其輸入為真實數據x。判別模型用來判斷數據的真偽,其輸入為隨機變量z.GAN的計算流程與結構如圖1所示。將生成器的輸出定義為G(z),并希望G(z)盡量服從真實數據x的分布pdata。

圖1 GAN的計算流程與結構
GAN模型的損失函數如下
+Εz~pz(z)[log(1-D(G(z)))]
(1)
訓練網絡D最大化logD(x),即最大化正確判別數據真偽的概率,訓練網絡G最小化log(1-D(G(z))),即最大化D的損失函數。G隱式地定義了一個概率分布pg,在模型的訓練過程中pg會逐漸收斂到數據的真實分布pdata.模型達到納什均衡狀態時,概率分布pg=pdata,生成器G具備了擬合數據真實分布的能力。
針對小樣本圖像生成問題,本文提出了改進的MDCGAN,MDCGAN可以視為一種帶條件約束的DCGAN。MDCGAN沿用了DCGAN的網絡結構,MDCGAN模型采用卷積層取代全鏈接層,采用帶步長的卷積運算取代上采樣運算[6]。將條件信息y引入判別器和生成器中,條件信息y能夠為生成式對抗網絡增加條件,對生成數據起到監督作用。條件信息y既可以是對象層面的圖像類別標簽,也可以是像素層面的圖像語義分割標注,如圖2和圖3所示。

圖2 圖像類別標簽

圖3 圖像語義分割標注
需注意的是,與條件生成式對抗網絡(CGAN)模型只在輸入時連接條件變量y不同[7],為了增強條件變量y在訓練中的引導作用,在模型中每一層的輸入數據都要連接條件變量y。
MDCGAN的生成器包含兩個全連接層和四個步幅為1/2的微步幅卷積層。通過步幅為1/2的微步幅卷積運算,輸出特征圖的尺寸被放大為輸入的兩倍。經過四個微步幅卷積運算后,生成器生成的圖像將擁有和輸入圖像系統的尺寸。MDCGAN 的生成器模型如圖4所示。

圖4 MDCGAN生成器的結構
MDCGAN的判別器模型包含四個步幅為2的卷積層和一個全連接層。通過步幅為2的步幅卷積運算,可以將輸出特征圖的尺寸縮減為輸入特征圖的一半。經過四個步幅卷積運算,可以確保判別器在學習中能夠提取到輸入圖像從像素級的特征到內容級的特征。MDCGAN 的判別器結構如圖5所示。

圖5 MDCGAN判別器的結構
在生成器和判別器的各層之后使用批量歸一化層,通過在每個批量中計算得到均值和方差后,將卷積層輸出信號進行規范化。批量歸一化層的使用能夠增加模型的穩定性,提高模型的收斂速度。
根據生成器和判別器的特點且經過實驗測試,各層激活函數使用如下策略效果較好:生成模型的最后一層使用Sigmoid,其它層使用ReLU
σRe lu(x)=max(0,x)
(2)
判別器的所有層選用收斂速度快又不易使神經元壞死的Leaky ReLU函數.在Leaky ReLU函數中,所有模型的泄漏斜率均設置為0.01

(3)
在生成器的輸出卷積層中,使用 Tanh取代Relu,Tanh能夠將輸出歸一化至區間[-1,1]

(4)
將隨機噪聲pz(z)作為生成器網絡的輸入,將生成器網絡定義為G(z/y;θg),其中θg代表參數,將輸出的圖象定義為G(z/y)。將判別器網絡定義為D(x/y;θd),其中,θd為參數,將輸出(即對應的輸入被判定為真的比率)定義為D(x/y)。交替優化生成器和判別器,使得生成器能夠不斷提高輸出圖像的逼真度,使得判別器難以區分其真假,即學習最小化logD(x/y)+log(1-D(G(z/y)));判別器則能夠不斷提升分辨輸入圖像真假的能力,即學習最大化logD(x/y)+log(1-D(G(z/y))).MDCGAN的損失函數如下所示
+Εz~pz(z)[log(1-D(G(z/y)))]
(5)
通過實驗發現,對于同樣大小的數據集,模型參數越多,越容易出現訓練不穩定的情況。對MDCGAN的生成器,讓各個反卷積層的輸出通道數減半,由卷積核的尺寸可知,模型參數數量減少為原來的1/4,該方法對于穩定訓練起到了明顯的效果。
原始GAN模型利用動量來加快訓練速度[5],但使用了帶有優化超參數的Adam優化器。發現建議的學習率0.001太高,而使用0.0002代替。此外發現將動量項β1保持在建議值0.9會導致訓練震蕩和不穩定性,而將其減小到0.5有助于穩定訓練。
在手寫數字數據集MNIST和建筑物輪廓數據集上訓練了MDCGAN模型.下面給出了有關每個數據集用法的詳細信息和實驗結果。
MNIST 數據集包含0~9的10類手寫數字圖像,每個圖像都有對應的類別標簽。從MNIST數據集中隨機取出6000個訓練樣本組建小規模訓練集和1000個測試樣本組建小規模測試集,對MDCGAN模型進行訓練和測試。為了保持對抗平衡,判別器與生成器的更新次數比例為 1:3(即更新一次判別器之后,再更新三次生成器)。手寫數字圖像生成過程如圖6所示。

圖6 手寫數字圖像的生成過程
使用選取的小規模測試集對訓練完成的MDCGAN模型進行測試,測試集上的圖像生成效果如圖7所示(左圖是測試集原始圖像,中圖是GAN生成的圖像,右圖是MDCGAN生成的圖像)。

圖7 測試集上生成的手寫數字圖像
可以看出,MDCGAN模型能夠生成比GAN模型更清晰更逼真的手寫數字圖像。在選取的小規模測試集上,用最近鄰分類器分別對原始MNIST圖像、GAN生成的圖像、MDCGAN生成的圖像進行分類,以分類正確率作為對模型捕捉圖像數據分布能力的評價指標,見表1.

表1 測試圖像的分類正確率
MDCGAN模型實現了與真實圖片在最近鄰分類器上相近的分類正確率,這表明MDCGAN模型在對從MNIST中選取的小規模數據集的數據分布進行建模方面性能出色。
建筑物數據集包含建筑物彩色圖像和語義分割標注圖,包括1024×977像素、788×1024像素等圖像尺寸,整個數據集只有550個訓練樣本和84個測試樣本。使用訓練集對MDCGAN模型進行訓練,建筑物輪廓圖像生成過程如圖8所示(左圖是語義分割標注圖,中圖是MDCGAN模型生成的圖像,右圖是建筑物的真實圖像,圖像生成過程自上而下)。

圖8 建筑物輪廓圖像生成過程
判別器和生成器的損失函數曲線分別如圖9和圖10所示。當二者的損失函數相對穩定時,模型在訓練集上達到了納什均衡狀態。

圖9 判別器的損失函數曲線

圖10 生成器的損失函數曲線
MDCGAN模型在測試集上的效果如圖11所示。可以看出,對帶有語義分割標注信息的小規模建筑物輪廓數據集,MDCGAN模型能夠捕捉到圖像數據的真實分布,進而生成高清晰度高逼真度的建筑物輪廓圖像。

圖11 測試集生成的建筑物輪廓圖像
本文針對小規模數據集的圖像生成問題,提出了一種改進的MDCGAN。MDCGAN模型采用卷積層取代全鏈接層,采用帶步長的卷積運算取代上采樣運算。同時將條件信息y引入判別器和生成器中,條件信息y能夠為生成式對抗網絡增加條件,對生成數據起到監督作用。通過手寫數字生成實驗和建筑物輪廓生成實驗證明,所提出的MDCGAN能夠基于小規模圖像數據集生成逼真度高、多樣性豐富的圖像。