黃友文,游亞東,趙 朋
(江西理工大學 信息工程學院,江西 贛州 341000)
圖像描述使得機器能夠自動生成對圖像進行描述性的句子,近年來成為計算機視覺研究熱門領域之一。實現(xiàn)圖像描述的技術主要分為三類:基于模板的技術、基于檢索的技術和基于神經(jīng)網(wǎng)絡的技術[1]。早期基于模板和檢索的技術研究主要通過模板類型以及數(shù)據(jù)集中現(xiàn)有的描述語句來生成圖像描述;然而該種方法生成語句形式單一,機器無法生成精度高、文本更長的句子。隨著近年來深度學習神經(jīng)網(wǎng)絡技術的發(fā)展,2014年Vinyals等[2]首次通過聯(lián)合卷積神經(jīng)網(wǎng)絡以及循環(huán)神經(jīng)網(wǎng)絡的方式搭建NIC(Neural Image Caption)模型在圖像描述的領域取得了巨大的突破,并且結合自然語言評價指標制定了評價模型性能的標準。2016年,Xu等[3]結合原有的模型以及能提取圖像關鍵信息的注意力機制搭建了卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)+注意力機制(Attention)+長短期記憶(Long Short-Term Memory, LSTM)網(wǎng)絡的模型產(chǎn)生的描述句子更加貼合實際,在評價指標上也得到了更好的分數(shù)。2017年,湯鵬杰等[4]提出了一種融合圖像場景及物體先驗知識的圖像描述生成模型,使得網(wǎng)絡能學習到更多的語義信息。2018年,楊楠等[5]通過添加GRU(Gated Recurrent Unit)單元進一步完善了NIC模型。以上基于深度學習的圖像描述方法雖然能產(chǎn)生描述圖像語義內(nèi)容的句子,但總體來說存在一定的局限性。文獻[2]搭建的NIC模型中,LSTM的輸入只包含圖像的全局特征信息,并未重點關注其中的關鍵信息,導致生成語句存在語義模糊問題。文獻[3]中的模型加入注意力機制增強了性能但是模型算法復雜度較高,并且在使用ResNet50網(wǎng)絡提取圖像特征精度不夠高,制約了模型的性能。文獻[4]通過多目標優(yōu)化和多層概率融合的方法改善模型性能,然而模型解碼部分網(wǎng)絡層次較高,訓練優(yōu)化過程比較復雜,在評價結果的分數(shù)上也不夠理想。
本文提出一種基于卷積神經(jīng)網(wǎng)絡和長短期記憶網(wǎng)絡的圖像描述生成模型,并引入了一種全新的卷積注意力機制。為了提高圖像深層信息的表征性和精確度,本文采用Inception-ResNet-V2網(wǎng)絡[6]對原始圖像進行特征提取。為了增強模型在LSTM網(wǎng)絡[7]注意力機制中的魯棒性以及提高網(wǎng)絡收斂速度,模型設計了一種基于卷積層的注意力機制;同時本文在自然語言處理部分使用的Word2Vec[8]編碼方式,相對以往的one-hot編碼,能夠解決其詞匯鴻溝以及維度災難的問題,使得生成圖像描述的句子更加符合語境。
在圖像描述的任務中,整體大致可以分為兩個部分:ENCODER和DECODER[2]。在ENCODER端需要對圖像進行編碼的操作,使得圖像變?yōu)榫幋a向量,這部分主要通過CNN來完成;在DECODER端,需要對編碼圖像進行解碼的操作,這部分主要通過具有記憶功能的LSTM來完成。在本文中使用CNN+LSTM+Attention的基本框架來完成。將輸入圖像I翻譯為能夠理解圖像的句子T。在模型的訓練中,將輸入句子標記為S={S0,S1,…,Sn},其中St為輸入的第t個單詞,n為句子中單詞的最大長度。其每個LSTM生成單詞的概率公式可以由式(1)表示:
(1)
在網(wǎng)絡的訓練過程中,目標可以寫為式(2)的損失函數(shù):
(2)
該函數(shù)由三個部分組成,分別是模型的交叉熵損失、注意力損失以及正則化損失。
整個圖像描述的任務中模型參數(shù)的學習公式可以簡單地表示為式(3):
(3)
其中:I為輸入圖片,S為生成的句子且長度不固定,θ為網(wǎng)絡需要學習的參數(shù)。訓練時需要通過改變、優(yōu)化θ的方式來最大化在給定圖片下其生成正確的對應圖像描述的概率值。
(4)
本文搭建的整體網(wǎng)絡模型結構如圖1所示。輸入圖像I經(jīng)過Inception-ResNet-V2網(wǎng)絡產(chǎn)生圖像尺寸為8×8的特征f,然后與上個時間步LSTM的輸出ht-1通過attend層中的全連接操作生成每個像素的權重值α。同時圖像對應的句子標簽S通過Word2Vec(Word to Vector)的詞向量編碼方式,產(chǎn)生編碼為固定長度20的句子向量m以及句子掩膜向量Ms。之后注意力權重α與圖像特征f構建生成的注意力特征圖Co與編碼向量m作為當前時間步LSTM的輸入Xt,注意力權重α與句子掩膜向量Ms共同產(chǎn)生賦予權重的掩膜向量MS*。在訓練過程中,所有時間步的MS*的集合M用于構建注意力損失函數(shù)。當模型中參數(shù)訓練結束之后,只需要輸入任意圖像就能產(chǎn)生能夠描述內(nèi)容的語句。在測試階段,本文將把測試圖片輸入到模型當中得到對應的描述句子與測試集中人工描述句子進行比較,通過評價因子也就是本文2.2節(jié)介紹的評價指標來對模型進行性能衡量。
圖1 模型整體結構Fig.1 Overall structure of model
在文獻[2]的模型中,使用了VGG(Visual Geometry Group)網(wǎng)絡來對圖像進行特征提取,使得模型能夠產(chǎn)生描述句子。文獻[3]在圖像特征提取上使用分類性能更好的ResNet- 50網(wǎng)絡。為了更加精準地提取圖像的深度特征,Szegedy等[6]提出了Inception-ResNet-V2網(wǎng)絡模型,其結構如圖2所示。該網(wǎng)絡通過引入殘差單元構建ResNet Block,通過堆疊構建整個特征提取網(wǎng)絡,結合dropout機制提高了模型的魯棒性。文獻[6]的實驗表明殘差單元的引入能夠代替Inception的架構使得網(wǎng)絡層次變得更深,從而讓模型學習到更多的信息,提升模型識別圖像的準確率。與此同時,殘差單元在反向傳播過程中緩解了由于網(wǎng)絡加深帶來的梯度消失問題。增加的梯度能夠使得每次反向計算過程都能完成對參數(shù)較好的優(yōu)化調整,提升模型的計算效率。
圖2 Inception-ResNet-V2網(wǎng)絡結構Fig. 2 Inception-ResNet-V2 network structure
由于輸入的圖像描述數(shù)據(jù)是一串文本向量,相鄰的詞向量之間具有很強的關聯(lián)性。在處理這種相互之間具有關聯(lián)的長向量時,通常選用LSTM來進行處理[9],如圖3所示。
圖3 模型中LSTM單元結構Fig. 3 LSTM unit structure in model
模型中Ct-1表示上一個LSTM單元存儲信息,Ct表示當前LSTM單元的存儲信息,ht-1表示上一個單元的輸出信息,xt表示當前輸入該單元的信息,ht表示當前單元的輸出信息。模型中ft,it,ot分別代表遺忘門、輸入門和輸出門。
其表達公式為:
ft=sigmoid(Wo·[ht-1,xt]+bo)
(5)
it=sigmoid(Wi·[ht-1,xt]+bi)
(6)
(7)
(8)
最后,通過輸出門來計算出當前LSTM單元的輸出信息。
ot=sigmoid(Wo*[ht-1,xt]+bo)
(9)
ht=ot*tanh(Ct)
(10)
在原始的序列學習任務中,所有的輸入信息都被編碼成為固定長度。隨著輸入序列長度不斷增加,模型的效果越來越差。注意力機制的引入能夠提升模型在序列學習任務上的性能[3],使得機器在處理圖像的時候賦予模型在圖像關鍵區(qū)域獲得更高的權重,從而通過圖像獲得更多的關鍵細節(jié)。文獻[3]使用的注意力機制通過“全連接+全連接”的結構來整合圖像和句子之間的關聯(lián)。
輸入圖像經(jīng)過Inception-ResNet-V2網(wǎng)絡后產(chǎn)生的特征數(shù)較多,傳統(tǒng)采用全連接處理的方式使得網(wǎng)絡中包含了大量需要訓練的參數(shù)造成模型訓練速度慢、性能不穩(wěn)定的問題。為了優(yōu)化網(wǎng)絡模型,使得網(wǎng)絡處理速度提高,本文使用尺寸與輸入圖像特征相同,深度為輸出節(jié)點個數(shù)的卷積核對圖像特征進行卷積操作。網(wǎng)絡結構如圖4所示。
圖4 注意力機制中的圖像卷積Fig. 4 Image convolution in attention mechanism
輸出結果圖像特征S為1×1大小的張量,其計算過程如式(11)所示:
(11)
其中:f為輸入圖像,K為卷積核,f和K為相同尺寸的張量。
本文搭建的注意力機制整體結構如圖5所示。圖5中,由于上個LSTM網(wǎng)絡的輸出結果需要與當前圖像特征進行特征融合f,且上層LSTM輸出ht-1為2維tensor。在圖像進行全卷積的操作之后,由于圖像尺寸變成batch×1×1,為了與ht-1進行融合后一同輸入到全連接層,得到注意力權重α,需要將圖像降為2維tensor。
圖5 卷積注意力機制結構Fig. 5 Structure of convolution attention mechanism
產(chǎn)生的α和輸入圖像特征相乘得到注意力圖像特征。同時α和當前輸入句子的掩膜向量M相乘,后進行reshape等操作輸出得到當前時間步的Ms*如式(12)~(13)所示。將所有圖像的Ms*進行融合用于產(chǎn)生整體模型的注意力損失,作為整體模型損失值的一部分參與反向傳播,更新參數(shù)。實驗表明該種構造方式增強了模型的穩(wěn)定性,在本文2.1節(jié)的訓練環(huán)境中,迭代1個epoch訓練時間從195 min減少到188 min,減少了3%的模型訓練時間。
α=fc(ht-1,f)
(12)
Ms*=f(α*M)
(13)
本文使用在圖像描述任務中具有代表性的MS COCO(Microsoft Common Objects in Context)數(shù)據(jù)集作為實驗的訓練測試數(shù)據(jù)集。由于圖像描述句子由于長度不同,在本實驗中,使用標簽中最長的句子作為長度標準,統(tǒng)一句子向量長度為20,長度不夠的句子將用0來填充。
本實驗環(huán)境使用Ubuntu 16.04 64位系統(tǒng),采用TensorFlow深度學習框架進行訓練和測試,硬件配置為:Intel i3- 7100 CPU 3.90 GHz,NVIDIA GeForce GTX 1070 顯卡(1 920個CUDA處理核心,8 GB顯存)。
為了對生成的圖像描述的句子進衡量,實驗采用廣泛使用的客觀量化評分方法,其中包括BLEU(Bilingual Evaluation Understudy)、METEOR(Metric for Evaluation of Translation with Explicit ORdering)、CIDEr[10](Consensus-based Image Description Evaluation)等評價指標。其中BLEU是式(14)所示的基于n-grams精確度的加權集合平均:
(14)
N值取1、2、3、4,又可以分為BLEU- 1、BLEU- 2、BLEU- 3、BLEU- 4四個指標。在圖像描述生成中常采用BLEU- 1、BLEU- 4對模型進行分數(shù)評估。
METEOR指標是基于整個語料庫的單精度加權調和平均數(shù)和單字召回率的標準。
相對于其他評價指標,CIDEr評價方法解決了與人工判斷的“相似性”問題,更能反映所生成句子的語義質量。
本實驗中,設定語料庫規(guī)模為5 000,即挑選語料庫中頻率出現(xiàn)前5 000的單詞作為單詞表。每層LSTM的隱藏節(jié)點設為512。分批處理圖像中單次輸入圖像batch size數(shù)量為32。在Inception-ResNet-V2網(wǎng)絡中,設置weight decay為0.000 04,batch norm decay=0.999 7,batch norm epsilon=0.001,激活函數(shù)默認為relu。LSTM中的舍棄單元drop out值設置為0.3。在語言文本生成模型中設定單詞時間步規(guī)模為20(最長產(chǎn)生句子規(guī)模單詞量),采用集束搜索Beam Search的方式設置假設詞表單詞關聯(lián)詞匯beam size的大小為3。設置整體模型的初始學習率為1E-4,在每迭代30epoch時學習率衰減為原來的1/10。本文采用ADMA(Adaptive Moment Estimation)的網(wǎng)絡優(yōu)化算法。在優(yōu)化其中將模型中的beta1和beta2分別設置為0.9和0.999,epsilon設置為1E-6。
為了增強模型的魯棒性以及提高模型的訓練速度,本實驗預先加載在ImageNet上訓練好的Inception-ResNet-V2模型中分類層的參數(shù)。該網(wǎng)絡模型使用的數(shù)據(jù)集圖像大小為299×299,本實驗將輸入圖像重新隨機裁剪輸入到網(wǎng)絡中,最終從Inception-ResNet-V2中輸出圖像的特征為8×8。在句子處理上,本文采用Word2Vec編碼方式,根據(jù)詞匯語料庫中單詞出現(xiàn)頻率的順序排名作為衡量標準。經(jīng)過“平鋪”操作之后的圖像尺寸變?yōu)?4×1,將該尺寸作為文本的映射規(guī)模向量,從而使得圖像和文本之間能夠匹配。最后將構建的句子向量和圖像向量一起輸入到LSTM網(wǎng)絡。
將模型按照2.3節(jié)參數(shù)進行設置后,在訓練過程中按照2.1節(jié)的實驗環(huán)境繪制模型的整體損失曲線如圖6所示。
圖6 模型訓練過程整體損失值Fig. 6 Total loss value during model training
本文模型的整體損失值包括三個部分:交叉熵損失、注意力損失以及回歸損失。從圖6可以看出,整體損失值穩(wěn)定在3.0左右,與文獻[5]中未引入注意力機制的模型整體損失值基本相當,但注意力模塊的引入能夠使得模型在圖像的關鍵區(qū)域獲得更高的關注從而提高模型的性能。為了進一步降低實驗誤差,本文最后通過降低學習率的方式對模型完成了進一步訓練。由于模型在反向傳播中,通過梯度下降算法來更新訓練節(jié)點的權重參數(shù)從而優(yōu)化訓練模型。在式(4)的反向傳播更新權重參數(shù)過程中,更新的權重將不斷調整模型的性能使得模型的整體損失值逐漸降低,優(yōu)化模型表達語句的能力。由實驗結果可以看出模型的整體損失值在進一步降低學習率的訓練中并沒有明顯的下降,表明模型的參數(shù)已經(jīng)訓練完成,損失值已經(jīng)完成收斂。
模型訓練結束后,為了測試模型在圖像上是否能夠產(chǎn)生準確的輸出,本文隨機從測試數(shù)據(jù)集選用一組圖片與人工描述進行比較,并且選取部分圖片進行比較,實驗結果如圖7所示。在圖7中,每幅圖片標明了文獻[2]中的算法模型(NIC)、本文算法模型(MODEL)以及人工標注的參考描述(HUMAN)。從圖7中可以發(fā)現(xiàn),本文算法模型能夠生成符合語義的描述內(nèi)容。本文在圖(a)、(e)、(h)三個場景產(chǎn)生的描述與NIC模型完全一致,其他生成的句子都要比該模型更好,部分句子甚至比人工描述更加生動形象,如圖(d)所示,圖中人工標注是“三只綿羊一起站在草地上”上,而本文生成的模型不僅能夠表達出“一群羊站在草地上”并且還能運用形容詞“郁郁蔥蔥綠色的”來形容草地,然而NIC模型在生成與語句中雖然也使用了“郁郁蔥蔥綠色的”,但是卻產(chǎn)生沒有識別出“草地”的錯誤。在圖(f)中,本文算法識別出船“白色”的特點,相對NIC模型沒有識別出而言模型更加具有完備性。在圖(g)中,相對NIC模型以及人工描述模型,本文模型成功識別出桌子是“木制的”,而就連人工標注也忽略了這一點,因此本文模型在精確識別中體現(xiàn)了很高的性能;然而相對于對圖像理解程度更深的人工描述而言,機器產(chǎn)生的描述體現(xiàn)了一定的弱點,如圖(c)所示。本文模型僅僅只是描述出圖像中的內(nèi)容“一群人站在網(wǎng)球場上”,而人工標注進一步聯(lián)想到他們正在“照相”“擺姿勢”。
圖7 不同情境下模型產(chǎn)生描述與人工結果對比Fig.7 Comparison of model generated caption and artificial results in different scenarios
通過對比表明,本文模型能夠十分精準地識別出圖像中的物品以及類別屬性,該點在部分圖片上的性能甚至優(yōu)于人工標注。在性能上也明顯優(yōu)于文獻[2]中的NIC模型。
3.1節(jié)實驗結果表明本文設計的模型算法能夠產(chǎn)生良好的描述效果。為了進一步驗證模型的性能,使用COCO測試集來驗證模型,所得評分結果如表1所示。結果表明,本文所提出的模型提升了圖像描述的性能,并且在大多評價指標上都優(yōu)于Hard-Attention模型以及F-SOCPK模型。在反映句子連貫性和準確率的BLEU- 4指標上比Hard-Attention模型提升了20%,比F-SOCPK模型提升了6.7%;在反映語義豐富程度的CIDEr指標上,對比F-SOCPK模型,提升了1.7%;在反映精度的METEOR指標上,對比Hard-Attention模型,提升了5.2%,對比F-SOCPK模型提升了1.2%。本文模型最終在各項評價指標上的得分依次為0.712,0.300,0.242,0.897,相比于其他模型均有一定的提升。
表1 本文算法與其他模型算法評價指標對比 Tab.1 Comparison of evaluation metrics between the proposed algorithm with other model algorithms
本文提出了一種基于CNN與LSTM,結合卷積注意力機制的網(wǎng)絡模型。采用Inception-ResNet-V2對圖像進行編碼得到圖像深度特征,采用Word2Vec的方式對文本句子進行編碼得到句子向量。通過在LSTM網(wǎng)絡中使用尺寸與圖像特征相同的卷積核來構建基于卷積的注意力機制,從而進一步增強了模型對圖像特征信息的提取能力,同時降低了模型中的參數(shù)量,提高了模型的魯棒性,使得LSTM網(wǎng)絡產(chǎn)生的圖像描述更符合圖像的語義信息。實驗結果表明,本文所提出的模型提高了模型的泛化能力,在生成結果和評價指標上均優(yōu)于同類其他模型。