陳 興
(河海大學 計算機與信息學院,南京 211100)
生成圖像描述是自然語言處理和計算機視覺的熱點研究問題,其任務(wù)主要為理解圖像中物體和場景等語義信息并采用近似于人類語言的描述形式表達出來,生成符合一定語法規(guī)則的文本信息.圖片描述作為解決圖像信息到文本信息的跨模態(tài)轉(zhuǎn)換的重要方法,可廣泛應(yīng)用在人機交互、視覺輔助、圖像標注等領(lǐng)域.
Vinyals 等[1]提出了GoogleNIC 模型,借鑒機器翻譯中常用的編碼解碼方式,分別采用InceptionV3[2]預(yù)訓(xùn)練模型作為編碼器提取圖像特征信息,長短時記憶網(wǎng)絡(luò)(LSTM)[3]作為解碼器生成圖像描述.Xu 等[4]在解碼過程中加入注意力機制,更加關(guān)注圖像的局部特征.鄧珍榮等[5]也應(yīng)用了注意力機制和卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征,與Xu 不同的是采用了循環(huán)門單元網(wǎng)絡(luò)(GRU)[6]取代LSTM 網(wǎng)絡(luò)以此生成圖像的描述.
隨著生成對抗網(wǎng)絡(luò)的發(fā)展流行,生成對抗機制[7]也逐漸被應(yīng)用到圖像描述生成任務(wù)中.例如Dai 等[8]通過控制條件對抗網(wǎng)絡(luò)[9]中噪音Z 來生成圖像的描述,并通過實驗證明加入對抗機制生成的描述在該任務(wù)上優(yōu)于其他方法,生成的圖像描述在自然性和多樣性兩方面都有所提高.Shetty 等[10]同樣采用生成對抗網(wǎng)絡(luò)結(jié)構(gòu),通過對抗機制提高語句多樣性.其中生成器利用CNN 提取圖像特征,在解碼過程引入了目標檢測模型,額外的加入RCNN[11]檢測圖像中具體目標圖像,通過加入圖像的先驗知識來提高生成描述中包含圖像目標的概率.文獻[12]也通過加入先驗知識來改進模型生成質(zhì)量,提出了基于主題模型的圖像描述生成模型,不同于文獻[10]加入目標檢測,而是通過預(yù)測圖像的主題詞的概率分布來實現(xiàn)先驗知識的獲取.這種加入先驗知識的方法雖然可以獲得較好的生成效果,但是增加了生成的計算和時間成本,而且過度依賴于先驗知識,一旦接收了錯誤的先驗知識,生成的描述也會受到影響.
以上工作都是基于英文領(lǐng)域的圖像描述生成方法.因為中文詞匯和語句表達的特殊性,在理解中文語義信息往往需要斷句和分詞,且中文語法表達極為靈活,句式更加多變,因此相比較英文的圖像描述難度更大.Li 等[13]在Flickr8K 數(shù)據(jù)集基礎(chǔ)上通過機器翻譯和人工標注兩種方式提出構(gòu)建首個中文圖片描述的Flickr8K-CN 數(shù)據(jù)集.Wu 等[14]構(gòu)建首個大規(guī)模的圖像中文描述數(shù)據(jù)集AIC-ICC,包含30 萬張圖片和150 萬句的中文描述.劉澤宇等[15]基于編碼解碼結(jié)構(gòu)構(gòu)建了針對圖像中文描述的生成模型,并在Flickr8K-CN 數(shù)據(jù)集上驗證了該模型的有效性.
比較以上,本文提出了多模態(tài)神經(jīng)網(wǎng)絡(luò)生成圖像中文描述模型,不同于現(xiàn)有的圖像中文描述方法,(1)本文采用FastText[16]預(yù)訓(xùn)練模型對詞匯進行詞嵌入表示.相較于常用的one-hot 編碼,一個詞匯的表示往往需要詞庫大小的維度,這個問題在中文詞匯上尤其嚴重.詞嵌入表示形式維度相較于one-hot 編碼維度更小,可以更準確的保留詞匯之間的語義和用法的相關(guān)性;(2)相較于利用注意力機制放大圖像的局部特征,本文更加關(guān)注圖像的整體特征,通過融合編碼器設(shè)計,將卷積神經(jīng)網(wǎng)絡(luò)中提取到的圖片全局特征與圖片對應(yīng)的中文描述的詞向量表示融合編碼;(3)損失函數(shù)由兩部分組成,一部分衡量生成的詞向量矩陣與真實詞向量特征矩陣的余弦距離,另一部分衡量生成描述單一詞匯與目標之間的復(fù)現(xiàn)比例.
本文在數(shù)據(jù)集AIC-ICC、Flickr8K-CN 都進行了實驗,并通過雙語評估研究(BLEU)[17]值的客觀指標進行評估,與現(xiàn)有的模型進行對比發(fā)現(xiàn)BLEU 值有不同程度上的提高.
本文實現(xiàn)圖像的中文描述同樣采用encoder-decoder結(jié)構(gòu),其中encoder 模型包含F(xiàn)astText 詞嵌入模型和卷積網(wǎng)絡(luò),前者生成語句的詞向量矩陣,后者提取圖像的全局特征,encoder 將成對的語句、圖像〈S,I〉進行編碼,最終融合為既包含中文描述又包含圖像信息的多模態(tài)特征矩陣.Decoder 采用多層LSTM 模型對多模態(tài)特征矩陣進行解碼,通過計算余弦相似度得到解碼結(jié)果.
詞匯如果通過常用的one-hot 編碼方式進行表示,例如在表示詞匯“運動員”時,需要在“運動員”對應(yīng)的維度上設(shè)置為1,其他維度上設(shè)置為0,這就意味著每一個詞都需要獨占一維空間.那么,一個詞匯的維度等于詞表長度,該詞向量中絕大多數(shù)的維度都沒有被利用到.同時,詞匯one-hot 編碼形式無法反映出詞匯之間的相關(guān)性.本文采用的FastText 預(yù)訓(xùn)練模型對詞匯進行詞嵌入表示可以大大減少one-hot 編碼帶來的冗余和稀疏問題.一個包含104量級大小的詞表,在FastText中只需要102量級就可以表征,通過余弦距離的計算也可以反映詞匯之間的相關(guān)程度.
FastText[16]一種高效快速的文本分類模型.該模型首先將文本詞匯通過n-gram[18]格式分解,然后和原單詞相加,得到的文本序列(x1,x2,···,xn-1,xn)作為網(wǎng)絡(luò)的輸入,通過單層隱藏層學習,最終輸出該文本的分類類別.FastText 采用分層Softmax[19]根據(jù)類別頻率構(gòu)造霍夫曼樹,相較于標準的Softmax層計算的時間復(fù)雜度從O(kh)下降到O(h(log2k)),其中k為類別數(shù)量,h為文本特征維數(shù),訓(xùn)練和分類效率都得到了較大的提升.FastText 模型如圖1所示.
圖1 FastText 模型結(jié)構(gòu)
本文中利用FastText 模型對圖像描述中的每個詞匯轉(zhuǎn)換為詞向量形式,計算兩個詞向量的余弦相似度,其計算公式為式(1).計算實例見表1.
若余弦值越大,則兩個詞匯在高維空間的表征形式越相近,說明兩個詞匯有著相近的語義或強相關(guān)的用法,所以FastText 模型在詞向量表征學習具有良好的性能.
表1 余弦相似度實例
圖2為將若干個詞向量通過PCA 降成兩維后的可視化表示.可以看出,“教師”與“授課”、“學?!薄ⅰ袄蠋煛钡仍~匯相關(guān)度較高,在圖中距離也較近.以“教師”、“運動員”、“甜點”、“商品”為關(guān)鍵詞的詞匯在圖中形成4 個詞匯區(qū)域,可見FastText 在表征詞匯上可以很好地保留其語義信息,詞匯的相關(guān)性也得以體現(xiàn).
卷積神經(jīng)網(wǎng)絡(luò)是一種有效的圖像特征提取方法,廣泛應(yīng)用在圖像識別、圖像檢測等相關(guān)任務(wù)上,并且表現(xiàn)出相當好的性能.卷積網(wǎng)絡(luò)通過局部區(qū)域感受野和權(quán)值共享的設(shè)計,大大減少了模型的復(fù)雜度,使得模型更加易于訓(xùn)練.卷積網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)也隨著問題的逐漸復(fù)雜而逐漸加深[20-22].
圖2 部分詞向量的可視化表示
本文中使用了類似于VGG-16 的卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征,如表2所示,輸入圖像首先經(jīng)過裁剪和隨機翻轉(zhuǎn)增加圖像的多樣性,最終變形為224×224 的三通道RGB 圖像,經(jīng)過第一個卷積模塊,包含兩次64 個3×3 的卷積層,每層卷積層使用ReLU 激活函數(shù),最終采用最大池化層向下采樣,輸出128 個112×112 的特征圖;第二個卷積模塊與第一個卷積模塊一致,輸出256 個56×56 的特征圖;第三、第四、第五卷積模塊包含3 個卷積層,經(jīng)ReLU 激活函數(shù)后采用平均池化層降采樣,進一步壓縮和編碼圖像,輸出512 個7×7 的圖像特征圖;最后經(jīng)過兩個全連接層,大小分別為4096、300,最終輸出1×300 的圖像全局特征向量,該特征向量的特征維數(shù)與FastText 所編碼的文本詞向量特征維度一致.
表2 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
如圖3所示,圖像中文描述模型由兩部分構(gòu)成,融合編碼器和LSTM 解碼器.
圖3 圖像中文描述生成模型
融合編碼器對成對的語句和圖像〈S,I〉進行編碼.圖像的中文描述在編碼之前首先需要分詞,將原始的中文描述S 轉(zhuǎn)換為多個詞匯的序列結(jié)構(gòu){w1,w2,···,wn-1,wn},其中wi,i∈(1,n)表示一個中文詞匯,詞匯結(jié)構(gòu)通過FastText詞嵌入模型進一步轉(zhuǎn)換為(n×300)的詞向量矩陣.與描述文本對應(yīng)的圖像送入表2所示的卷積神經(jīng)網(wǎng)絡(luò)提取圖像的全局特征,生成的圖像特征,最終對兩個編碼模型的生成結(jié)果以拼接的形式整合為((n+1)×300)的多模態(tài)融合特征矩陣.
融合編碼器所編碼后形成的多模態(tài)特征矩陣依賴于LSTM 網(wǎng)絡(luò)作為解碼器進行解碼,LSTM 網(wǎng)絡(luò)為三層,最終解碼生成的(1×300)詞向量在FastText 詞嵌入模型中計算余弦相似度,尋找與該詞向量最相似的詞匯,作為本次解碼的結(jié)果.
圖4進一步說明了多模態(tài)特征矩陣的解碼過程,首先圖像I 經(jīng)過如表2所述的卷積神經(jīng)網(wǎng)絡(luò)中得到圖像的全局特征向量 {s},{s}與<start>開始標記對應(yīng)的詞向量{v0}融 合為多模態(tài)特征矩陣在t1時刻輸入到LSTM網(wǎng)絡(luò)中(事實上,為了訓(xùn)練方便固定了多模態(tài)特征的大小,其中長度不足的用<pad>標記進行補齊),經(jīng)過三層LSTM 網(wǎng)絡(luò)對輸入多模態(tài)特征矩陣{v0,s}進行解碼得到詞向量 {v1},{v1}通過FastText 詞嵌入模型計算余弦相似度可以得到該詞向量所代表的具體詞匯{y1}.在t2時刻將t1時刻的輸入{v0,s}與 詞向量{v1}融合為新的多模態(tài)特征矩陣{v0,v1,s}作為此時LSTM 網(wǎng)絡(luò)的輸入,直到生成的詞向量{vm}代表的詞匯{ym}為結(jié)束標記<end>為止.其中序列{v0,v1,···,vm,s}為最終解碼得到的多模態(tài)特征矩陣,{y0,y1,···,ym}表示經(jīng)FastText 模型后生成的詞匯序列.其中{y0}代表<start>開始標記.
圖4 多模態(tài)特征矩陣的解碼過程
在one-hot 編碼中,詞向量每一個維度的值都為0 或1 的離散型數(shù)據(jù),可以選擇交叉熵函數(shù)作為損失函數(shù),最小化損失函數(shù)減少生成詞向量和目標詞向量的距離.本文為了降低one-hot 編碼形式帶了冗余,采用FastText 模型得到每個詞匯的詞向量,也就是說,在產(chǎn)生最終詞匯序列{y0,y1,···,ym}之前,必然會有與之相對應(yīng)的多模態(tài)特征矩陣{v0,v1,···,vm,s}.
設(shè){w0,w1,···,wm}為圖像I 的生成語句目標.詞匯序列{w0,w1,···,wm}經(jīng)FastText 模型可進一步得到該序列在詞空間上的表示那么衡量生成的詞向量矩陣與真實詞向量特征矩陣平均余弦相似度為:
其中,m+1表示詞向量的個數(shù),n為詞向量的維度大小.
l1值越大表明生成的詞向量矩陣和目標矩陣越相似.l1值嚴格限制了詞向量的序列,即詞向量vi僅和計算相似度,如果vi與(i≠j)相似但在l1中無法得到獎勵,于是需要進一步量化生成描述中單一詞匯與目標之間的復(fù)現(xiàn)比例,即:
最終的損失函數(shù)可以表示為:
其中,λ為平衡兩種量化指標的因子,在實驗中設(shè)置為0.1.最小化損失函數(shù)l即意味著最大化詞向量矩陣{v0,v1,···,vm} 與余弦相似度,和最大化詞序列{y0,y1,···,ym} 在 目標詞序列{w0,w1,···,wm}中的復(fù)現(xiàn)比例.
目前公開的圖像中文描述數(shù)據(jù)集有AIC-ICC 以及Flickr8K-CN.其詳細信息如表3所示.
表3 圖片中文描述數(shù)據(jù)集(單位:K)
由表3可見,AIC-ICC 數(shù)據(jù)集共包含30 萬張圖像和150 萬句圖片描述,本文主要選擇該數(shù)據(jù)集進行實驗,其中AIC-ICC-Train 的21 萬張圖像作為訓(xùn)練集,AIC-ICC-Valid 的3 萬張圖像作為驗證集.數(shù)據(jù)樣本如圖5所示.
圖5 AIC-ICC 數(shù)據(jù)實例
本文采用結(jié)巴分詞對中文描述進行分詞,統(tǒng)計語句經(jīng)過分詞后的句子長度.如圖6所示,訓(xùn)練集分詞后的最大句子長度為32;除此之外,加入<start>和<end>標記向量作為語句起始和結(jié)束標志,通過FastText 產(chǎn)生的語句描述詞向量矩陣固定為(34×300),當語句長度不足34 時,使用<pad>標記進行補齊,FastText 中不存在的詞向量的詞匯用標記<unk>替換.加上CNN 網(wǎng)絡(luò)提取到的圖像特征向量(1×300),所以最終送入LSTM解碼器的融合矩陣大小固定為(35×300).
圖6 中文分詞后的句子長度統(tǒng)計
輸入圖像大小統(tǒng)一設(shè)置為3×224×224,batch_size設(shè)置為256,進行5 輪共計約150000 次迭代訓(xùn)練,使用Adam 優(yōu)化算法,其中學習速率為0.0001,beta1 為0.9,beta2 為0.999.每10000 次迭代完成后保存一次模型,最終在驗證集上隨機選取測試圖片進行測試.
BLEU[17]是2002年提出的衡量生成語句的質(zhì)量的評價指標.最先應(yīng)用在對比機器翻譯語句和人工翻譯的參考語句之間的相似度,衡量機器翻譯所生成的質(zhì)量好壞,現(xiàn)已廣泛應(yīng)用在生成式的自然語言評價上.BLEU 針對一元詞匯、二元詞匯、三元詞匯和元詞匯分別又有BLEU-1、BLEU-2、BLEU-3、BLEU-4.其公式為:
其中,BP為機器翻譯長度小于參考語句時的懲罰因子,即:
其中,c為機器語句長度,r為參考語句的長度.pn為:
pn直接反映了機器翻譯語句在參考譯文的在n元組上準確率.BLEU-1 只考慮1 元組的準確率,BLEU-2 同時對1 元組和2 元組加權(quán)求和,以此類推.BLEU值越高,說明模型生成的語句與參考語句越相似,生成語句的質(zhì)量越高.
在AIC-ICC 和Flickr8K-CN 的驗證集上測試本文所提的模型,測試結(jié)果如圖7、圖8所示.每幅圖片中共有6 句中文描述,其中第1 句為模型的生成結(jié)果,后5 句為數(shù)據(jù)集中的中文描述,由此可見自動生成中的中文圖像描述與圖像相關(guān),圖像中的人物、物體和場景在描述中都可以準確地表達出來,生成結(jié)果與圖像真實的人工描述相近.
圖7 AIC-ICC 驗證集上的測試結(jié)果
圖8 Flickr8K-CN 驗證集上的測試結(jié)果
本文選取GoogleNIC、Hard-Attention、Soft-Attention、gLSTM、Multimodal-RNN、CNIC-E 等6 種圖像描述生成模型進行對比,其中GoogleNIC、Hard-Attention、Soft-Attention、gLSTM、Multimodal-RNN 模型為Flickr8K 上的測試數(shù)據(jù),CNIC-E、本文是在Flickr8K-CN 數(shù)據(jù)集上進行BLEU-1、BLEU-2、BLEU-4、BLEU-4 指標測試.測試結(jié)果見表4.
表4 各個模型的BLEU 值對比
由表4所知,本文所提模型的BLEU 值與現(xiàn)有的模型對比,在BLEU 指數(shù)上有不同程度的提高.本文所述模型在Flickr8K-CN 數(shù)據(jù)集上取得了最好的結(jié)果,生成的語句更加貼近人工圖片描述的參考語句,符合人類自然語言表達.
本文提出的圖像中文描述生成方法,首先將描述語句和圖像<S,I>進行編碼,既包含對中文描述語句的分詞表示又包含對圖像的全局特征提取,最終語句圖像對<S,I>融合為一個多模態(tài)特征矩陣.使用三層LSTM模型對多模態(tài)特征矩陣進行解碼,通過計算余弦相似度得到解碼的結(jié)果.所提模型生成的中文描述可以準確的概括圖像的語義信息.在BLEU指標上優(yōu)于其他模型.
但是,本文模型仍存在一些問題.例如,對較為復(fù)雜的場景和多人物的識別不夠準確,生成的語句不夠細膩等,仍有待提升的空間.該模型較多的考慮圖像的全局特征,而忽略了圖像的局部特征的提取,從而導(dǎo)致生成語句在圖像的細節(jié)上體現(xiàn)不足.未來可以加入注意力機制,加強模型對局部細節(jié)的把握.