楊冰,那巍,向學勤
(1.杭州電子科技大學 計算機學院,浙江 杭州 310018;2.杭州電子科技大學 浙江省腦機協同智能重點實驗室,浙江 杭州 310018;3.杭州靈伴科技有限公司,浙江 杭州 311121)
文本生成圖像是根據給定英文句子生成符合句子語義的圖像.文本生成圖像的方法大多基于生成對抗網絡(generative adversarial networks,GAN)[1].生成對抗網絡也用于圖像恢復[2]、圖像增強和圖像補全等領域.
文本生成圖像任務需要先對文本進行編碼,再根據編碼生成圖像.如果僅使用單個句子提取的文本編碼,可能會遺漏一些關鍵的細節描述,無法提供足夠的語義信息來幫助生成對抗網絡生成細節豐富的圖像.在AttnGAN[3]中,引入單詞信息來幫助生成器生成圖像的不同子區域,通過使用更多的文本信息來更好地表示文本語義,幫助生成器生成高質量圖像.ManiGAN[4]的網絡結構與AttnGAN 類似,該模型能夠挖掘單詞信息實現圖像編輯功能.DF-GAN[5]通過串聯多個文本圖像融合塊,將句子信息有效地融入圖像特征.DF-GAN在只使用句子信息的情況下,生成圖像的質量遠遠超過AttnGAN 生成圖像的質量,證明AttnGAN使用直接拼接的方式融合圖像特征和單詞信息并不能實現文本信息和視覺特征的深度融合.在生成圖像的過程中,合理地利用文本信息,使得文本信息能夠更充分有效地融合進圖像特征之中,是決定生成圖像視覺真實性并且符合文本語義的關鍵因素.因此,盡可能提供更多文本信息表示文本語義和把文本信息有效融入圖像特征,是文本生成圖像任務的2 個關鍵因素.本研究提出在DF-GAN 中的文本圖像融合塊中合理的添加單詞信息,在充分挖掘文本語義的同時,使單詞信息能夠有效地融入圖像特征.對比學習已經在計算機視覺許多領域得到廣泛應用,例如圖像轉換[6].為了進一步促使生成圖像和文本在潛在語義上保持一致,本研究將對比損失應用在真實圖像與生成圖像之間,減小相同語義圖像對之間的距離,增大不同語義圖像對之間的距離.通過使生成圖像更“像”真實圖像的方式,促進生成圖像符合文本語義.為了更好使生成器根據給定文本動態地生成圖像,本研究引入動態卷積.由于不同語義文本對應的圖像有很大差異,有必要根據輸入文本動態生成圖像.動態卷積可以根據融入語義后的圖像特征動態地調整多個卷積核的權重,使生成器間接的根據輸入的文本信息動態地生成圖像,進而提高生成圖像的質量.
本研究在DF-GAN 基礎上提出3 點改進,總結如下:1)引入單詞信息,使生成器能夠根據單詞信息生成圖像的子區域,使生成圖像具有更豐富的細節.2)加入對比損失,使給定文本和生成圖像在潛在語義上更加一致.3)生成器采用動態卷積,在只增加少量的計算成本的情況下,強化生成器的表達能力,使生成對抗網絡更快收斂.
Reed 等[7]以GAN 為基礎框架,將字符信息轉換為像素信息,根據字符文本生成合理的圖像.為了獲得更高分辨率的圖像,Zhang 等[8]提出StackGAN,使用堆疊結構把直接生成高分辨率圖像的復雜過程進行分解.第1 階段生成64×64 低分辨率圖像,第2 階段在第1 階段生成圖像的基礎上添加細節,生成具有視覺真實性的256×256高分辨率圖像.在AttnGAN 中單詞信息用來幫助生成器生成合理的圖像,注意力機制關注與子區域最相關的單詞來幫助生成器生成圖像的不同子區域,實現了圖像的細粒度生成.相比于AttnGAN平等地“看待”句子中所有單詞,SE-GAN[9]抑制了視覺影響較小的單詞(例如the、is),只關注對視覺影響較大的關鍵詞,提高了生成器的訓練效率.后續基于GAN 的文本生成圖像模型很多都延續了這種堆疊結構,即包含多個生成器和多個判別器.
在DF-GAN 提出之前,文本生成圖像的網絡結構大多采用類似StackGAN 堆疊式結構.Tao 等[5]指出,堆疊式結構存在多個生成器,導致生成器之間存在糾纏,使得堆疊式架構為主干的網絡生成的圖像像是不同圖像區域的簡單組合.DF-GAN以簡單的單階段文本生成圖像主干,可以直接生成高分辨率圖像,解決了生成器之間的糾纏問題,使得生成圖像更加自然.SSA-GAN[10]在DF-GAN的基礎上通過弱監督的方式使文本信息只影響生成圖像中與文本相關的區域.RAT-GAN[11]使用遞歸神經網絡連接DF-GAN 所有的融合塊,降低了網絡訓練的難度.以上基于單階段主干的文本生成圖像方法都只使用句子信息,沒有在圖像生成的過程中融入細粒度的單詞信息.
基于DF-GAN 和AttnGAN 的優點,本研究使用單階段文本生成圖像主干,合理地融入單詞信息,進一步提高生成圖像質量.將擴散模型 (diffusion model)[12]應用于文本生成圖像任務,取得了一系列顯著的效果,但擴散模型存在如訓練時間長、訓練代價高昂的問題.因此,研究如何利用生成對抗網絡實現文本生成圖像,具有十分重要的現實意義.
文本生成圖像任務是跨模態任務,并且文本信息和圖像信息存在巨大差異,生成的圖像既要保證視覺真實性,還要確保文本和圖像在潛在語義上一致是困難的.之前的工作通過一系列措施對文本生成圖像這個跨模態任務進行優化,如MirrorGAN[13]將生成圖像重新編碼為文本描述,文本語義重建損失被用來約束生成圖像符合文本語義.S D-G A N[14]通過暹羅結構(S i a m e s e structure)生成同語義對應2 個不同文本表達的圖像,并在2 個批量的生成圖像之間添加對比損失,使生成圖像更加符合文本語義.Ye 等[15]使用相同結構,并將更有效的NT-Xent[16]作為對比損失加入AttnGAN 和DMGAN[17]中,獲得了更符合文本語義的圖像.Zhang 等[18]利用對比損失捕獲模態間和模態內的對應關系,效果顯著.本研究將對比損失應用在所提網絡結構中,并測試將對比損失應用在不同的對象上帶來的效果,合理的選擇作用對象來促進文本和生成圖像在潛在語義上一致.
相比于普通的卷積操作,動態卷積[19]非線性地聚合不同卷積核,使得動態卷積具有比普通卷積更強的表現能力.由于動態卷積在分類任務中的應用效果較好,本研究嘗試將它應用到生成模型中,優化跨模態訓練.
本研究提出方法的模型框架如圖1 所示.模型整體遵循DF-GAN 單階段結構并進行以下改進.1)在前3 個上采樣文本融合塊的第2 個融合塊中改進仿射變換,使它具有融入單詞信息的能力,使圖像特征的子區域融入與當前子區域最相關的單詞信息;2)添加對比損失,通過減小對應圖像對之間的距離,增大不同圖像對之間的距離,提高文本與生成圖像之間的語義一致性;3)將生成器中的普通卷積替換為動態卷積,根據輸入圖像特征動態地聚合多個卷積核.

圖1 基于單階段生成對抗網絡的文本生成圖像方法的框架圖Fig.1 Framework illustration of text-to-image generation method based on single stage generative adversarial network
文本生成圖像任務中的文本編碼是將文本字符編碼為具有視覺區分能力的向量,為接下來生成符合文本語義的圖像提供條件.文本編碼器采用雙向長短期記憶網絡(LSTM)[20],一個隱藏層2 個方向的連接作為1 個單詞的編碼,最后一個隱藏層2 個方向的連接作為當前句子的編碼.單句中所有單詞編碼為e∈RD×T,句子編碼為s∈RD,其中T為句子中單詞的個數,D為單詞或句子向量的維度.圖像編碼器建立在ImageNet[21]數據集預訓練的Inception-V3[22]基礎上.真實圖像縮放為固定尺寸輸入圖像編碼器,在最后一個平均池化層得到真實圖像的編碼fˉ ∈R2048,在mixed_6e 層得到圖像子區域的編碼f∈R768×289.一幅圖像的子區域數量為289,子區域的維度為768.通過最小化DAMSM 損失[3]對圖像編碼器和文本編碼器進行訓練.這樣文本編碼器生成的文本編碼具有視覺區分能力,即能夠區分具體顏色.在生成對抗網絡訓練時,文本編碼器和圖像編碼器參數固定,減小了生成對抗網絡模型的參數量,降低了訓練難度.
將噪聲向量z輸入全連接層并重塑為4×4×256大小的圖像特征.此圖像特征經過6 個上采樣文本融合塊的信息融合得到256×256×32 大小的圖像特征,再經過動態卷積層生成256×256 大小的圖像.將生成圖像、真實圖像和句子向量輸入鑒別器中進行鑒別.
如圖1 所示,1 個上采樣文本融合塊由1 個上采樣層、2 個融合塊和2 個動態卷積層組成.1 個融合塊中包含2 個ReLU 激活層和2 個仿射變換層.為了實現細粒度生成圖像,使用注意力機制得到每個子區域最相關單詞的動態表示,在前3 個上采樣文本融合塊的第2 個融合塊中加入單詞信息,在原有仿射變換只融入句子信息的基礎上又融入單詞信息.
添加單詞信息的改進仿射變換的結構如圖2所示.使用1×1 卷積把單詞編碼e∈RD×T的維度轉化為與當前圖像特征的維度相同:

圖2 改進仿射變換結構圖Fig.2 Structure diagram of modified affine
把e′和當前圖像特征h∈RN×D?相乘歸一化后得到αji.由于每次輸入仿射變換的圖像特征大小不同,N為當前圖像特征的子區域個數,D? 為當前子區域維度.αji為當前圖像特征第j個區域對第i個單詞的權重,
通過 αji與單詞相乘得到與當前圖像子區域相關所有單詞的動態表示:
將句子向量s,單詞上下文向量cj和噪聲向量z進行拼接并作為當前子區域的文本條件.通過多層感知機從文本條件中得到當前子區域的縮放參數和移位參數,實現每個子區域都有自己的縮放參數 γj和 移 位 參 數 θj,
輸入的圖像特征經過仿射變換,使圖像子區域不但會融合句子信息,還會使圖像子區域能夠融入與當前子區域最相關的單詞信息,彌補原始框架只使用句子信息可能忽略單詞信息的問題,使生成器實現細粒度生成圖像.
使用NT-Xent 作為對比學習損失.對比學習可以使網絡學習同類實例之間的共同特征,非同類實例之間的不同之處.通過最小化相關文本圖像之間的距離,最大化不相關文本圖像之間的距離,使同一語義下圖像更加接近,不同語義圖像更加疏遠的方式,保證圖像和文本的語義一致.定義余弦相似性作為2 個向量是否相似的評價標準:
當i≠j時,真實圖像和生成圖像對比損失Lreal的計算式為
當i≠k時,生成圖像和生成圖像對比損失Lfake的計算式為
式中:fimg為訓練好的圖像編碼器,用于把生成圖像或真實圖像編碼成向量;η 為溫度超參數;N為批處理(batch)的大小.在Lreal中,相關圖像指的是同一文本對應的真實圖像和生成圖像,對應xi和x?i,不相關圖像指的是真實圖像和當前batch 中其他生 成 圖 像,對 應xi和x?j.在Lfake中,x?i和x?j代 表 同 一語義2 個不同文本表達所生成的圖像,它們是相關 圖 像,x?i和x?k是 同 一batch 不 相 關 文 本 生 成 的 圖像.在計算生成圖像之間的對比損失時,由于是在生成圖像和生成圖像之間計算對比損失,在batch 大小不變的情況下,須生成圖像的數量是原來的2 倍.
傳統的卷積操作中,所有輸入共享統一的卷積核參數,動態卷積則可以根據輸入的不同,動態地聚合多個卷積核.由于文本生成圖像的數據集中有多種不同類型的圖像,比如在數據集COCO[23]中,有人物、風景和汽車等多種類型,不同類型圖像之間差異很大,在進行卷積操作的時候,應根據融入文本信息后的圖像特征的不同,動態地生成圖像.融入圖像特征的文本信息不同,各個卷積核的權重也不同.不同文本信息會得到不同的卷積核權重,實現在圖像生成過程中根據文本信息動態生成圖像,提高網絡動態生成的能力.在生成器中,本研究使用動態卷積代替傳統的卷積操作.
動態卷積的結構如圖3 所示.在動態卷積中,輸入的圖像特征h先通過全局平均池化,將圖像特征的長和寬變為1;再經過第1 個全連接層將通道大小變為原來的25%,經過第2 個全連接層把通道大小變為K;最后歸一化得到每個卷積核對 應 的 注 意 力 πk(h) ,

圖3 動態卷積的結構圖Fig.3 Structure diagram of dynamic convolution
聚合K個卷積核和偏差,使用聚合后的卷積核和偏差對輸入圖像特征進行卷積操作.
使用動態卷積后,生成器可以更快地生成質量較好的圖像.計算每個卷積核對應的注意力成本較低,而且每個卷積核的大小相對輸入的圖像特征來說較小,相應卷積核的聚合計算量也較小,因此使用動態卷積替代卷積增加的計算量也不大.
定義生成器網絡的目標函數為
式中: λ1為DAMSM 損失的權重, λ2為生成圖像之間的對比損失的權重, λ3為生成圖像和真實圖像之間對比損失的權重.只使用Lreal時 , λ3=0.本研究引入單詞級信息,為此使用DAMSM 損失LDAMSM.DAMSM 計算單詞和生成圖像區域的損失,從單詞水平上度量生成圖像和文本的匹配程度.
定義鑒別器網絡的目標函數為
使用和DF-GAN 相同的鉸鏈損失來穩定對抗訓練的過程,使用匹配感知梯度懲罰(MA-GP)和單向輸出促使生成器生成與文本語義一致性更高的圖像.
采用Caltech-UCSD Birds 200-2011[24](CUB)和2014 版COCO 來訓練和測試提出的模型.CUB 是只有鳥類圖片的數據集.數據集中共有200 種鳥類的圖像,其中訓練集中包含150 種8 855 幅圖像,測試集中包含50 種2 933 幅圖像.每幅圖像對應10 種語義相同但表達方式不同的英文句子.COCO 中的圖像具有更豐富的種類和更復雜的場景,共有171 種圖像類別,其中訓練集包含8 萬幅圖像,測試集包含4 萬幅圖像.每幅圖像對應5 種語義相同但表達方式不同的英文句子.
使用FID[25]對生成圖像的質量進行量化分析.生成圖像和真實圖像可以分別看作2 個分布,FID 計算生成圖像分布和真實圖像分布之間的距離,更低的FID 分數代表生成圖像更加接近真實圖像,即視覺真實并且符合文本語義.
式中:r、g分別為真實圖像編碼和生成圖像編碼,μr、 μg分別為真實圖像編碼均值和生成圖像編碼均 值, Σr、 Σg分 別 為 真 實 圖 像 編 碼 協 方 差 和 生 成圖像編碼協方差.
所提模型在pytorch 上實現,文本編碼器和圖像編碼器參數來自文獻[3].模型在CUB 和COCO的訓練和測試都在單個NVIDIA V100 32G GPU上進行.訓練中使用 β1=0.0, β2=0.9 的Adam 優化器[26].設置式(8)中的η=0.1,式(9)中的η=0.5,式(10)中的K=8,batch=32.在使用生成圖像和生成圖像的對比損失時,設置式(14)中系數權重為λ1=0.1,λ2=0.1,λ3=0.2.CUB 的 最 終 模 型 是 在600~700 次迭代時取得最小的FID 數值的對應模型.COCO 的最終模型是取第1 次FID 數值小于13 的模型,迭代次數為219.
使用和DF-GAN 相同的測試方法對生成圖像進行測試.在CUB 上測試時,測試集中每個語義文本生成10 幅對應圖像,共生成29 330 幅圖像計算FID 分數.在COCO 數據集上測試時,每個語義文本生成1 幅圖像,共生成4 萬幅圖像計算FID分數.與DM-GAN、KD-GAN 和DF-GAN 等模型進行比較,定量對比實驗的結果如表1 所示.相比DF-GAN,在CUB 上,所提模型將FID 從12.10 降到10.36,在COCO 上,將FID 從15.41 降到12.74.從定量分析的角度來看,所提方法相比其他方法生成的圖像更加接近真實圖像,文本和生成圖像的潛在語義一致性更好,圖像質量得到較大地提升.

表1 CUB 和COCO 數據集上各個模型FID 得分比較Tab.1 Performance of FID scores compared with different models in CUB and COCO datasets
參考Tao 等[5]在GitHub 上公布的模型,實驗得到訓練DF-GAN 需要的epoch 數量.如表2 所示為在CUB 和COCO 訓練的epoch 數量n和訓練單個epoch 的時間t.相比DF-GAN,所提模型在單個epoch 的訓練時間有所增加,但從2 個數據集訓練的總時間來看,達到較高水平所需的總時間基本相同,訓練時間沒有明顯增加.在CUB 上,所提方法需要的訓練時間約為69.56 h,DF-GAN 需要的訓練時間約為96.24 h.在COCO 上,所提方法需要的訓練時間約為226.30 h,DF-GAN 需要的訓練時間約為211.70 h.當進行模型推理時,所提方法生成1 幅圖像的時間約為2 ms,與DF-GAN 模型生成1 幅圖像的時間相當.

表2 CUB 和COCO 數據集上與DF-GAN 訓練時間比較Tab.2 Training time compared with DF-GAN in CUB and COCO datasets
將真實圖像、所提方法生成的圖像和DF-GAN模型生成的圖像進行可視化對比.如圖4 所示為在CUB 上的生成圖像對比示例.在第1 幅圖像中,所提模型的生成圖像很好地體現了白色的鳥和灰色的翅膀,DF-GAN 生成的圖像沒有體現出文本語義,和真實圖像相似度不如本文模型生成的圖像.在第2 幅圖像中,所提方法的生成圖像很好地體現了紅色的眼睛和白色的腹部.在第5 幅圖像中,白色的眼睛環明顯展現出來.可以看出,所提方法可以更好地利用單詞信息實現細粒度圖像生成,生成圖像在單詞細節上更加符合文本信息的描述.在其他幾組生成圖像對比中,2 個模型生成的圖像都體現了文本所表達的語義,但所提方法生成的圖像更加自然,并且和真實圖像相似度更高.如圖5 所示為在COCO 上的生成圖像對比示例.由于COCO 中的圖像種類豐富并且場景復雜,生成圖像只能盡量保證圖像的真實性.在第1 幅圖像中,所提方法刻畫了滑雪隊員的大致輪廓.在第5 幅圖像中,所提方法較好地還原了建筑中有帶有鐘的高塔.總體來看,與DF-GAN的生成圖像相比,所提方法生成的圖像輪廓更加清晰,較好地捕捉了文本描述中提到的圖像細節特征,圖像的清晰度有了較好地改善,生成的圖像更加符合人眼觀察預期.通過文本再次對生成圖像進行評估,可以看出所提方法生成的圖像更加匹配文本語義.

圖4 在CUB 數據集上2 種模型文本生成圖像的定性比較Fig.4 Qualitative comparisons of text-to-image generation by two models in CUB dataset

圖5 在COCO 數據集上2 種模型文本生成圖像的定性比較Fig.5 Qualitative comparisons of text-to-image generation by two models in COCO dataset
在CUB 上進行消融實驗來驗證每個針對DF-GAN改進的有效性.基線的FID 來源于DF-GAN 提供模型的運行結果.這些改進包括在生成圖像的過程中融入單詞信息、添加真實圖像和生成圖像的對比損失、在生成器中引入動態卷積.通過評估FID 證明不同改進的有效性,結果如表3 所示.在基線模型中引入細顆粒度的單詞信息,FID 從12.10 降到10.98.進一步增加真實圖像和生成圖像之間的對比損失,FID 從10.98 降到10.83.進一步將生成器中的卷積層換成動態卷積層,FID 從10.83 降到10.36.可以看出,相比于加入對比損失(FID 降至11.89) 或者引入動態卷積(FID 降至11.76),融入單詞信息(FID 降至10.98)更能有效地提升所提方法的性能.

表3 在CUB 數據集上改進模塊的消融研究Tab.3 Ablation study of improvement modules in CUB dataset
為了驗證在生成圖像的過程中融入單詞信息的位置對FID 數值的影響.間隔地融入單詞信息,在第1、3、5 個上采樣文本融合塊中的第1 個融合塊中加入單詞信息.在較前位置融入單詞信息,在第1、2、3 個上采樣文本融合塊中的第2 個融合塊中加入單詞信息.在較后位置融入單詞信息,第4、5 個上采樣文本融合塊中的第2 個融合塊中加入單詞信息.通過FID 分數評估在不同位置融入單詞信息的有效性,結果如表4 所示.實驗發現在較后位置融入單詞信息會降低生成圖像的質量.在較前位置融入單詞信息,生成圖像的質量有較好的提升.

表4 在CUB 數據集上融入單詞信息位置差異性的消融研究Tab.4 Ablation study on different positions for incorporatingword information in CUB dataset
在基線模型融入單詞信息的前提下,嘗試在生成圖像和生成圖像之間應用對比損失代替生成圖像和真實圖像之間的對比損失,使用文獻[15]提供的文本編碼器和圖像編碼器參數,結果如表5所示.可以看出,在沒有使用動態卷積的情況下達到了最好的FID 最好,FID 從10.98 降到10.32.在生成圖像和生成圖像之間添加對比損失要生成原來2 倍的圖像來計算對比損失,使得模型參數劇增并且訓練時長加大,由表5 可知,此時模型性能提升有限,因此最終的模型中沒有使用這種對比損失.

表5 在CUB 數據集上添加對比損失的消融研究Tab.5 Ablation study on adding contrastive loss in CUB dataset
針對DF-GAN 生成器的網絡結構和損失函數進行改進.在生成器生成階段,通過在合理的位置引入單詞信息生成器實現了細粒度圖像生成.引入對比損失,進一步增強文本-生成圖像之間語義一致性.將生成器中的卷積層換成動態卷積層,增強了模型表達能力并使得模型更快地收斂.在性能提高的同時,增加改進后的模型仍然可以在顯存為24G 的GPU 上進行訓練,并且訓練時間沒有明顯增加,方便后序進一步改進.通過量化指標和消融實驗,證明針對DF-GAN 的各種改進有明顯的成效,能夠有效地提高生成圖像質量.