莫建文,徐凱亮
(桂林電子科技大學 信息與通信學院,廣西 桂林 541004)
利用自然語言描述自動生成語義匹配的逼真圖像,在圖像生成領域中一直是一項具有挑戰(zhàn)的研究任務。目的是為了學習一個從文本語義空間到彩色圖像空間的映射,生成逼真圖像的同時捕捉到文本的語義,即生成圖像應保留文本描述中的物體特征和語義細節(jié)。近年來,由于圖像生成領域越來越活躍,一些應用方面也都有了廣泛的需求,比如藝術生成,計算機輔助設計等。
目前文本到圖像生成的方法主要基于生成式對抗網(wǎng)絡[1](generative adversarial networks,簡稱GAN),方法是將整個文本描述編碼為一個全局的句子向量作為條件進行圖像生成,最先由Reed等[2]通過一個基于條件生成對抗網(wǎng)絡(condition generative adversarial networks,簡稱CGAN)[3]的框架來處理這項任務,并且提出了一種新的圖像文本匹配對抗訓練策略,這種方法成功生成了分辨率64×64的可信賴樣本,但幾乎無法生成生動的細節(jié)。為了更好地控制圖像生成,Reed等又提出生成對抗What-Where網(wǎng)絡模型(generative adversarial what-where network,簡稱GAWWN)[4],模型利用樣本標簽中給出的文本描述和具體的對象部件位置,生成分辨率128×128的圖像,而由于標簽獲取成本高,模型具有一定的局限性。為了生成更高質(zhì)量和分辨率的樣本,Zhang等[5]提出了堆疊式生成對抗網(wǎng)絡(stacked generative adversarial networks, 簡稱StackGAN),將生成網(wǎng)絡分為2個階段,先繪制出對象的大致輪廓和顏色,再通過多級殘差網(wǎng)絡修補生成樣本的細節(jié)和缺陷,最后生成分辨率256×256的樣本,極大提高了生成樣本的質(zhì)量。而后又提出了StackGAN的端對端改進方法StackGAN-v2[6],進一步優(yōu)化了模型的穩(wěn)定性,提高了生成樣本的多樣性。盡管以上方法生成樣本的分辨率越來越高,但對抗學習中判別器訓練速度普遍快于生成器,這會導致兩者訓練時難以達到納什平衡,使得生成樣本質(zhì)量難以提升。
除了通過增強生成器能讓訓練加快收斂,限制判別器使訓練更為平衡也能達到很好的效果。Peng 等[7]提出采用變分判別器瓶頸(variational discriminator Bottleneck,簡稱VDB),通過對數(shù)據(jù)樣本和編碼到的特征空間的互信息進行限制,提高判別器的判別難度,進而提高了對抗學習中的平衡性。生成對抗網(wǎng)絡中判別器在二分類任務上表現(xiàn)了強大的區(qū)分能力,Martineau[8]提出相對生成對抗網(wǎng)絡(relativistic standard GAN,簡稱RSGAN),使用相對判別器將真假樣本混合,利用“圖靈測試”的思想削弱了判別器的能力,VDB 則是通過對判別器加上互信息瓶頸來限制判別器的能力。另一方面,一般的生成對抗網(wǎng)絡沒有推理模型,這使得網(wǎng)絡模型訓練變得簡單,但同時模型也變得難以控制,這就是生成對抗網(wǎng)絡容易崩潰,難以收斂的原因。Kingma等[9]提出的變分自編碼器(variational-autoencoder,簡稱VAE)是另一種生成式模型,該方法引入變分推理,利用編碼器計算樣本的均值和方差,并對均值網(wǎng)絡加入高斯噪聲,使生成的樣本也具備多樣性,雖然該方法理論完備,但由于損失項中均方誤差是逐像素生成的方法,導致生成樣本較為模糊。在生成對抗網(wǎng)絡的基礎上,Lucic等[10]提出自監(jiān)督和半監(jiān)督的協(xié)同訓練方法,給判別器添加額外的特征提取器,將判別器訓練為分類器,為擴增的數(shù)據(jù)集做預測,利用少量的標注數(shù)據(jù)訓練就達到了很好的效果。Su[11]提出了的正交生成對抗網(wǎng)絡(Orthogonal GAN,簡稱O-GAN),該方法對判別器網(wǎng)絡的自由度進行正交分解,將額外的損失加入到目標損失中,使判別器成為一種有效的編碼器的同時保留判別的自由度。通過最大化特征向量與輸入的皮爾遜相關系數(shù)(Pearson correlation),增強兩者間的線性相關性,從而達到重構(gòu)的目的。
結(jié)合以上2個方面,借鑒O-GAN中最大化皮爾遜相關系數(shù)的方法,提出一種結(jié)合最大化皮爾遜相關系數(shù)的堆疊式生成對抗網(wǎng)絡,主要對堆疊式生成對抗網(wǎng)絡做了兩點改進:
1)將原有的判別器的標量輸出替換為特征向量,通過最大化特征向量與輸入的皮爾遜相關系數(shù)加深兩者線性相關性,使判別器具有編碼能力,僅利用特征向量的平均值作判別,增加判別器任務的同時,限制判別器的判別能力;
2)平衡多級網(wǎng)絡中的皮爾遜重構(gòu)項,令多個尺度的特征向量與唯一的輸入線性相關,增強判別網(wǎng)絡的一致性。
通過實驗證明,該改進方法在堆疊式生成對抗網(wǎng)絡模型上能生成多樣性更高和圖像質(zhì)量更好的樣本,有效改善了模式崩潰的現(xiàn)象。
在堆疊式生成對抗網(wǎng)絡模型下,結(jié)合了最大化皮爾遜相關系數(shù)的方法,主要由多個生成網(wǎng)絡和多個改進的判別器構(gòu)成。改進的堆疊式生成對抗網(wǎng)絡如圖1所示。
具體框架如圖1所示,圖中虛線框為標準的StackGAN-v2網(wǎng)絡,c是條件向量且c∈Rnc,通過文本編碼器[5]將文本描述映射為句嵌入向量,再對其進行條件增強[5]得到低維條件向量c。首先將條件向量c與高斯隨機噪聲向量z組合得到全局向量y,然后通過StackGAN-v2網(wǎng)絡生成不同尺寸的圖像,并經(jīng)過不同尺度的判別器得到特征向量,最后計算特征向量與輸入向量的皮爾遜相關系數(shù)并最大化,F(xiàn)0、G0、D0和Fi、Gi、Di分別為不同尺度的生成器和判別器。
樣本生成過程可表示為
h0=F0(c,z),hi=Fi(c,hi-1),i=1,2;
si=Gi(hi),i=0,1,2。
(1)
其中:z~N(0,1)為高斯先驗;z∈Rnz,{h0,h1,…,hi}為不同尺度的特征層;{s0,s1,…,si}為分辨率逐漸增加的生成樣本。每個生成器都有不同的判別器進行競爭,并學習不同尺度的判別特征。Fi、Gi和Di都被建模為神經(jīng)網(wǎng)絡,設置nc=128,nz=100。
生成對抗網(wǎng)絡一般由生成器和判別器組成,傳統(tǒng)的GAN沒有推理模型,另一種生成模型VAE雖然具有編碼器和生成器,擁有完備的推理過程并且沒有模式崩潰等訓練問題,但無法像GAN一樣生成逼真的紋理和細節(jié)。在對抗訓練過程中,判別器主要為生成器的訓練提供梯度,隨著訓練的進行,判別器越來越強(即識別真假越來越簡單),為生成器提供的梯度會越來越小,當訓練完成時,判別器無法提供梯度,導致判別器參數(shù)的浪費。另外,標準生成對抗網(wǎng)絡進行判別時,判別器只需要完成一個任務:對真實樣本和生成樣本進行判別。為了完成該項任務,判別器參數(shù)中所有與判別相關的自由度都被限制去完成判別的任務,而正由于判別器過強的擬合能力導致訓練過程中很難找到生成器與判別器之間的納什平衡,從而引發(fā)網(wǎng)絡不收斂或崩潰等問題。
圖1 StackGAN with Pearson correlation框架
為了更好地限制判別器的能力,借鑒O-GAN的方法改進了判別器,讓其同時完成2個任務:1)對圖像進行編碼;2)對圖像進行判別。通過最大化特征向量與輸入向量的皮爾遜相關系數(shù),增強兩者的線性相關性,皮爾遜相關系數(shù)由減去均值并除去標準差得到,所以當完成訓練時,均值和標準差的變化并不影響兩者的線性相關性,當樣本總體服從正態(tài)分布時,樣本的均值和標準差相互獨立,即在完成編碼任務的同時保留了2個自由度供判別器所用。另從信息瓶頸[12]的角度來看,假設判別器原本有N個自由度與判別相關,加入皮爾遜重構(gòu)項后,均值和標準差自由度被釋放,剩下N-2個自由度則被強制與輸入向量進行重構(gòu)。為了完成判別的任務,判別器只能讓重要的信息通過瓶頸,也就是說,判別器的泛化能力會有一定提升。判別器結(jié)構(gòu)如圖2所示。
圖2 多尺度判別器結(jié)構(gòu)示意圖
如圖2所示,判別器和編碼器具有相似的網(wǎng)絡結(jié)構(gòu),為共享兩者之間的參數(shù),將原本輸出標量的判別器網(wǎng)絡替換為輸出向量的編碼網(wǎng)絡。
圖2中過程具體表示為:
(2)
(3)
其中:μ為均值;σ為標準差;y為條件向量c和隨機高斯向量z的組合向量;yj為組合向量y={y1,y2,…,yn}第j個變量;avg(·)用于計算平均值;N(·)為去除均值和標準差后的算子。式(3)中3個統(tǒng)計量相互正交。
2個變量之間的皮爾遜相關系數(shù)定義為2個變量之間的協(xié)方差和標準差乘積的比值:
(4)
(5)
由于n?1,那么結(jié)合式(2)可以近似得:
cos(N(y),N(Di(si),c))。
(6)
式(4)表明組合向量與特征向量的皮爾遜相關系數(shù)為兩者減去均值并除去標準差后的余弦相似度,本研究將該項作為重構(gòu)項加入判別器損失中。
在StackGAN-v2中的多尺度圖像分布近似和條件與非條件聯(lián)合分布近似理論下,網(wǎng)絡輸出多種尺度圖像。各尺度生成器訓練時共享大部分權值,分別對應了一個獨立的判別器,無條件時網(wǎng)絡的輸入為隨機高斯向量z,加入文本條件后輸入為組合向量y。將判別器改進為編碼器后,所有判別器就有了一個共同的重構(gòu)目標(即網(wǎng)絡的輸入),當訓練完成時,各尺度圖像編碼后的特征向量都應與輸入呈線性相關。若在編碼過程中不對網(wǎng)絡進行約束,會導致特征向量間相關性差,使得網(wǎng)絡難以收斂。為保證重構(gòu)的準確性和穩(wěn)定性,額外加入一致性重構(gòu)目標,即強制所有判別器輸出的特征向量皆與輸入向量相關。
判別器改進為編碼器時保留了特征向量的2個自由度(即均值和方差),而判別只需一個自由度就可完成,所以利用特征向量的均值就可以進行判別,則判別器最大化優(yōu)化目標為
(log(avg(Di(xi)))+log(1-avg(Di(si)))+
(log(avg(Di(xi,c)))+log(1-avg(Di×
(si,c)))+λρ(y,Di(si,c))),i=0,1,2
(7)
其中:xi為第i個尺度的真實圖像分布pdata,i,si為自相同尺度的模型分布pGi;z為隨機高斯輸入向量;y為組合向量;ρ為皮爾遜重構(gòu)項,多個判別器并行訓練;LDi表示第i個判別器損失。前3項為無條件損失,后3項為條件損失,設置λ=0.5。
生成器最小化優(yōu)化目標:
λρ(y,Di(si,c))),i=0,1,2。
(8)
其中LG為總生成器損失,網(wǎng)絡階數(shù)m設置為3,由于皮爾遜重構(gòu)項與生成器也有關系,因此生成損失中也加入了皮爾遜重構(gòu)項。
實驗平臺的配置為 Intel Xeon E5-2687 W八核3.1 GHz處理器、32 GiB內(nèi)存、GTX1080Ti 顯卡以及 Ubuntu 16.04 操作系統(tǒng),并使用基于Python編程語言的 Pytroch深度學習框架。
1)數(shù)據(jù)集。在公開鳥類數(shù)據(jù)集CUB[13]上評估了本模型。CUB數(shù)據(jù)集包含了200類別的11 788張鳥類圖像,其中8 855張樣本作為訓練集,2 933張樣本作為測試集,每張圖像都另外注釋了10個文本描述[14]。使用了預先訓練的文本編碼器將每個句子編碼為1024維度的文本嵌入向量,再進行條件增強處理得到128維的條件向量。
2)評估指標。選擇Inception score[15](IS)為定量評估指標,評估方法表示為
IS=exp(ExDKL(p(y|x)‖p(y)))。
(9)
其中:x為一個生成的樣本;y為Inception模型預測的標簽。這個指標表示為一個好的模型應該具備多樣性,因此邊緣分布p(y)和條件分布p(y|x)的KL散度應該足夠大。
實驗使用的基礎框架為StackGAN-v2,使用了StackGAN-v2的生成器網(wǎng)絡,同樣分三級堆疊網(wǎng)絡,分別輸出分辨率為64×64,128×128,256×256的圖像。由圖1可知,第一級網(wǎng)絡:將隨機向量z和條件向量c組合得到輸入向量y,經(jīng)過全連接網(wǎng)絡重組后再通過4個上采樣塊得到N個尺寸大小為64×64的特征圖,N設置為64;第二級網(wǎng)絡由一個聯(lián)合層(將條件向量拓展后與特征圖組合),2個殘差塊和一個上采樣塊組成,第三級網(wǎng)絡與第二級網(wǎng)絡一致。圖2中每個判別器都有無條件特征向量和有條件特征向量2個輸出,向量維度分別為100和128。StackGAN-v2原網(wǎng)絡參數(shù)不變,改進判別器后,計算并最大化特征向量與輸入組合向量間的皮爾遜相關系數(shù),當相關系數(shù)為1時,兩者完全線性相關。網(wǎng)絡模型均采用學習率為0.000 2的Adam求解器,求解器動量設置為[0.5,0.999],批次大小為24,迭代600個周期。
2.3.1 多樣性評估與定性結(jié)果對比
為了證明改進判別器和多尺度聯(lián)合損失的有效性,通過與各種主流的文本到圖像生成的網(wǎng)絡模型進行結(jié)果對比,利用IS評估指標來衡量模型生成圖像的客觀性和多樣性。按照StackGAN的實驗設置,總共采樣了約30 000張模型生成的隨機圖像來評估模型的該指標。
表1 Inception score對比結(jié)果
由表1結(jié)果可知,本模型較之前不同的模型都有了很大的提高,IS較StackGAN-v2提高了0.32,這表明本模型生成的樣本多樣性明顯強于其他模型。另外特別詳細地與StackGAN-v2進行了結(jié)果比較。定性地比較了2種模型在同一個文本描述條件和隨機噪聲情況下生成的圖像。結(jié)果如圖3所示。
圖3中結(jié)果都是在數(shù)據(jù)集CUB的測試集上得到,本模型與StackGAN-v2同樣生成分辨率256×256的樣本。由對比結(jié)果可知,圖3中的(a)和(b),(c)和(d),(e)和(f),每兩列圖都對應同一種鳥類,分別屬于3類不同的鳥,每個樣本都由不同的文本描述生成。
在圖3(a)和(b)中,StackGAN-v2生成的樣本雖然在毛色和特征上與文本描述一致,但在物體結(jié)構(gòu)上表現(xiàn)得較為糟糕,而本模型生成的樣本不僅與語義一致,在鳥的結(jié)構(gòu)上也表現(xiàn)得更為圓滑,該問題同樣體現(xiàn)在(c)和(d)中,(d)甚至已經(jīng)失去了鳥的形態(tài)。在(e)和(f)中,2種模型生成的樣本在結(jié)構(gòu)上表現(xiàn)良好,而區(qū)分在黑色的頭部該特征,本模型表現(xiàn)與原圖一致,而StackGAN-v2并沒有捕捉到該特征。在大多數(shù)情況下,特征的生成取決于文本中描述的不同特征組合,生成樣本的特征都會傾向于訓練的標簽原圖,不同的特征組成不同的鳥,不過主要形態(tài)和紋理細節(jié)都基本與原圖一致。本模型在整體的結(jié)構(gòu)上的表現(xiàn)強于StackGAN-v2,由此認為這是由于生成損失和判別損失中加入的皮爾遜重構(gòu)項對空間結(jié)構(gòu)敏感,并且多級網(wǎng)絡的一致性約束了生成樣本的特征與原圖特征之間的差異。生成樣本姿態(tài)對比如圖4所示。
圖4(a)和(b)為同一圖像的不同文本描述條件下生成的樣本,圖4(c)、(d)、(e)和(f)為同一類鳥的不同文本描述條件下生成的樣本。以上圖像的不同主要體現(xiàn)在姿態(tài),本模型在不同條件下的姿態(tài)變化明顯優(yōu)于StackGAN-v2,在表3中的IS指標也說明了多樣性優(yōu)于StackGAN-v2。改進的判別器由于需要同時進行編碼和判別的任務,導致判別性能要弱于普通判別器,基于信息瓶頸原理分析,對于細節(jié)和一些微小的差異,本判別器會對其進行限制和忽略,而對于明顯的特征、色彩和物體空間結(jié)構(gòu),泛化性能優(yōu)于普通判別器,這有益于對大量樣本判別。實驗表明,對判別器的改進和多級網(wǎng)絡的一致性約束,提高了生成樣本的多樣性和增強了對鳥類邊緣結(jié)構(gòu)的約束。
圖3 結(jié)果對比圖
圖4 生成樣本姿態(tài)對比
圖5 重構(gòu)樣本到原生成樣本的變化過程圖
2.3.2 重構(gòu)插值對比
在相同文本描述條件下,在組合向量和特征向量之間進行插值評估,具體可表示為
(10)
由于標準生成對抗網(wǎng)絡中判別器訓練速度普遍快于生成器,當判別器完全收斂后無法為生成器提供梯度,導致生成器無法收斂,從而使得生成樣本的質(zhì)量難以提升。另外文本到圖像生成任務中缺乏推理模型,缺少特征提取的過程,導致模型對圖像整體的結(jié)構(gòu)不敏感,從而引發(fā)模式崩潰等問題。提出了一種結(jié)合最大化皮爾遜相關系數(shù)的文本到圖像生成模型,該模型將判別器進行了改進,令判別器能同時判別和編碼,為模型提供了推理模型的同時限制判別器的判別能力,增強了判別器的泛化性能,使判別器和生成器的訓練更容易達到納什平衡。為了增強多尺度圖像編碼的一致性,還提出了多尺度聯(lián)合損失,令各尺度特征向量重構(gòu)目標為輸入組合向量,建立一致的重構(gòu)目標。實驗結(jié)果表明,該方法有效提高了生成樣本的多樣性和圖像質(zhì)量,插值實驗表明,判別器能有效作為編碼器生成特征向量。