許 昊, 張 凱, 田英杰, 種法廣, 王子超
1(上海電力大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 上海 200090)2(國家電網(wǎng)公司 上海電器科學(xué)研究院, 上海 200437)
圖像描述(Image Caption)是將計(jì)算機(jī)視覺和自然語言處理兩個(gè)領(lǐng)域相結(jié)合的跨模態(tài)跨領(lǐng)域的任務(wù).一般的, 它將輸入的圖片通過卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征并利用循環(huán)神經(jīng)網(wǎng)絡(luò)等方法生成一段文字的描述,這段描述要求和圖片的內(nèi)容高度相似.這項(xiàng)技術(shù)在我們的生活中有著廣泛的市場需求, 例如應(yīng)用在對(duì)盲人的實(shí)時(shí)語音導(dǎo)航中.基于這樣的需求, 將實(shí)時(shí)采集的視頻圖像應(yīng)用圖像描述技術(shù)得到對(duì)應(yīng)的文本描述, 再通過文本轉(zhuǎn)語音技術(shù)實(shí)時(shí)傳輸?shù)矫と说亩? 讓盲人能夠?qū)崟r(shí)地感受到周圍的環(huán)境.這在智能機(jī)器人領(lǐng)域也有著類似的需求, 這項(xiàng)技術(shù)相當(dāng)于讓它有了一雙能夠理解分析世界的“眼睛”.除此之外, 該技術(shù)在圖像檢索系統(tǒng)、醫(yī)學(xué)CT圖像的報(bào)告生成和新聞標(biāo)題生成方面都有著不錯(cuò)的應(yīng)用前景.
經(jīng)典圖像描述算法可分為3類.1)通過模板填充的方法[1]來生成圖像描述, 它主要是通過局部二值模式、尺度不變特征轉(zhuǎn)換或者方向梯度直方圖等算法提取圖像的視覺特征, 并根據(jù)這些特征檢測(cè)對(duì)應(yīng)目標(biāo)、動(dòng)作及屬性對(duì)應(yīng)的單詞詞匯, 最后將這些單詞填入到模板中.這樣的方法雖然能夠保證句型語法的正確性,也有著很大的局限性, 由于使用的模板是固定的, 它也依賴于硬解碼的視覺概念影響, 這樣生成的語句格式相對(duì)固定且形式單一, 應(yīng)用的場景也很局限.2)基于檢索的方法[2], 它將大量的圖片描述存于一個(gè)集合中, 然后通過比較有標(biāo)簽圖片和訓(xùn)練生成圖片描述兩者間相似度來生成一個(gè)候選描述的集合, 再從中選擇最符合該圖片的描述.這樣的方法能保證語句的正確性, 但語義的正確性卻難以保證, 因而對(duì)圖像描述的正確率較低.3)基于生成的方法.這類方法一般采用編碼-解碼器的結(jié)構(gòu), 編碼器使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)[3]提取圖像特征, 解碼器采用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[4]來生成文本描述.這是在圖像描述中普遍應(yīng)用且效果最好的模型, 它在語句結(jié)構(gòu)的完整性、語義的正確性以及泛化能力得到了一致的認(rèn)可.
編碼器-解碼器的結(jié)構(gòu)最初由Vinyals等[5]提出.該模型編碼器使用基于CNN的InceptionNet網(wǎng)絡(luò)提取圖像特征信息, 解碼器使用RNN處理輸入的圖像特征來生成描述.Fang等[6]對(duì)編碼器進(jìn)行了改進(jìn), 通過提取關(guān)鍵詞作為輸入來生成描述的方法為后續(xù)結(jié)合圖像和語義的編碼方法提供了借鑒.Wang等[7]提出了一種新型的解碼結(jié)構(gòu).由Skel-LSTM使用CNN提取的圖像特征來生成骨架語句, 然后使用Attr-LSTM為骨架語句中的詞語生成對(duì)應(yīng)的屬性詞, 最后將這兩部分結(jié)合生成完整的最終描述語句.Jyoti等[8]提出了一種不同于用LSTM或者RNN進(jìn)行解碼的方法, 該工作啟發(fā)式地利用卷積來進(jìn)行圖像描述, 達(dá)到不比傳統(tǒng)LSTM差的效果.
注意力機(jī)制的引入使得圖像描述算法效果得到顯著提高.Xu等[9]在NIC模型[5]的基礎(chǔ)上把注意力機(jī)制應(yīng)用在圖像描述的圖像特征中.其基本思想是將編碼階段獲取的圖像特征進(jìn)行注意力處理, 解碼階段使用LSTM.Lu等[10]提出注意力機(jī)制的改進(jìn)工作.這項(xiàng)工作對(duì)LSTM進(jìn)行擴(kuò)展, 加入“崗哨向量”, 存儲(chǔ)著解碼器中已有的知識(shí)信息.同時(shí)提出新的自適應(yīng)注意力機(jī)制, 通過空間注意力來決定關(guān)注圖像的哪個(gè)區(qū)域.Anderson等[11]引入Top-down, Bottom-up機(jī)制, 使用Faster R-CNN提取圖像區(qū)域特征.
對(duì)抗生成網(wǎng)絡(luò)[12]的應(yīng)用使得描述生成更加多樣化.文獻(xiàn)[13,14]將Conditional GAN 運(yùn)用在圖像描述,該方法生成的圖片描述貼近人類的表達(dá), 改善了句子的自然性和多樣性.Zhang等[15]提出的模型由兩個(gè)不同的GAN組成.Shekher等[16]拓展了COCO數(shù)據(jù)集,并通過對(duì)抗樣本驗(yàn)證了Lavi模型的魯棒性, Dai等[17]則使用對(duì)抗樣樣本訓(xùn)練解決圖像描述任務(wù)生成的描述缺少獨(dú)特性的問題.文獻(xiàn)[18-21]通過強(qiáng)化學(xué)習(xí)的方法[22]將不同評(píng)價(jià)標(biāo)準(zhǔn)作為獎(jiǎng)勵(lì)來訓(xùn)練模型, 能夠顯著提高生成描述的質(zhì)量.
傳統(tǒng)圖像描述算法研究仍有這些不足: 1) 在編碼器端一般使用傳統(tǒng)CNN或者目標(biāo)檢測(cè)算法進(jìn)行圖像特征的提取, 存在圖像特征與文本描述關(guān)聯(lián)不緊密, 僅有部分注意力權(quán)重大的特征得到利用的問題.2) 使用的解碼器LSTM模型較為單一, 可使用更為復(fù)雜的模型提升性能.
針對(duì)上述問題, 本文提出基于ViLBERT和BiLSTM結(jié)合的圖像描述算法.主要有以下貢獻(xiàn):
1) 使用預(yù)訓(xùn)練的ViLBERT模型學(xué)習(xí)圖像和文本間的內(nèi)在聯(lián)系, 并用聯(lián)合特征向量統(tǒng)一表示, 能更好地學(xué)習(xí)到圖像特征.
2) 使用BiLSTM處理聯(lián)合特征向量, 加入注意力機(jī)制能顯著改善生成描述的質(zhì)量.
3) 在MSCOCO2014數(shù)據(jù)集上進(jìn)行訓(xùn)練和測(cè)試, 通過實(shí)驗(yàn)結(jié)果表明該算法達(dá)到了優(yōu)異的性能.
本文第1節(jié)對(duì)本文圖像描述算法涉及的相關(guān)工作進(jìn)行介紹.第2節(jié)介紹本文算法的具體框架及改進(jìn)部分.第3節(jié)介紹實(shí)驗(yàn)數(shù)據(jù)集、評(píng)價(jià)標(biāo)準(zhǔn)及實(shí)驗(yàn)的對(duì)比和分析.第4節(jié)對(duì)本文算法進(jìn)行總結(jié)并展望下一步研究工作.
BERT (Bidirectional Encoder Representations from Transformers)[23]即由Transformer進(jìn)行的雙向編碼表示形式, 是廣泛使用的自然語言處理(NLP)模型.BERT的特征之一是可以讀取上下文.BERT具有一個(gè)稱為Transformer[24]的內(nèi)置體系結(jié)構(gòu), 并且通過從兩個(gè)方向(句子的開頭和結(jié)尾)學(xué)習(xí)句子來實(shí)現(xiàn)“讀取上下文”.由于BERT是雙向的, 它們可以通過從左右兩個(gè)方向讀取數(shù)據(jù)來使語句聯(lián)系上下文.這樣可以建立單詞之間的關(guān)系, 并幫助模型對(duì)相關(guān)單詞做出更明智的預(yù)測(cè).使用轉(zhuǎn)換器架構(gòu)對(duì)大量未標(biāo)記數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練, 因此不需要按順序處理數(shù)據(jù)序列, 從而可以進(jìn)行并行計(jì)算.
BERT的主要模型結(jié)構(gòu)是多層Transformer編碼器.原始形式的Transformer包含兩種獨(dú)立的機(jī)制: 讀取文本輸入的編碼器和產(chǎn)生任務(wù)預(yù)測(cè)的解碼器.由于BERT的目標(biāo)是生成語言模型, 因此僅需要編碼器機(jī)制.BERT有簡單和復(fù)雜兩種結(jié)構(gòu), 結(jié)構(gòu)參數(shù)見表1.使用GELU作為非線性激活函數(shù), 如式(1)所示, 其中tanh為雙曲正切函數(shù).
表1 BERT模型參數(shù)
圖1是對(duì)BERT模型的描述.輸入是一系列標(biāo)識(shí)(tokens), 這些標(biāo)識(shí)首先嵌入向量中, 然后在神經(jīng)網(wǎng)絡(luò)中進(jìn)行處理.輸出是大小為H的向量序列, 其中每個(gè)向量對(duì)應(yīng)于具有相同索引的輸入標(biāo)識(shí).
圖1 BERT模型
BiLSTM[25], 即雙向LSTM, 是一個(gè)由兩個(gè)LSTM網(wǎng)絡(luò)組成的序列處理模型: 一個(gè)LSTM將向量正向依次輸入, 另一個(gè)LSTM則將該向量反向依次輸入.BiLSTM有效地增加了網(wǎng)絡(luò)可用的信息量, 改善了算法可用的上下文信息.
BiLSTM結(jié)構(gòu)圖如圖2所示.前向LSTM層的輸出向量序列由前T-n到T-1時(shí)刻的正序輸入迭代計(jì)算得到, 而后向LSTM層的輸出向量序列由前T-n到T-1時(shí)刻的逆序輸入迭代計(jì)算得到.正向和反向?qū)拥妮敵龆加蓸?biāo)準(zhǔn)LSTM更新公式計(jì)算, 見式(2)-式(7).BiLSTM層最終生成一個(gè)輸出向量YT=[hT-n,···,hT-1],其中每個(gè)元素通過式(8)計(jì)算.
圖2 BiLSTM模型
其中,ht是t時(shí)刻隱藏層向量,xt是輸入向量,Wxh是從輸入層到隱藏層的加權(quán)矩陣,Why是從隱藏層到輸出層的加權(quán)矩陣,Whh是連續(xù)隱藏層間的加權(quán)矩陣.bh,by分別為隱藏層和輸出層的偏差向量.Wf,Wi,Wo,WC分別為隱藏層映射到遺忘門、輸入門、輸出門和細(xì)胞狀態(tài)的加權(quán)矩陣,Uf,Ui,Uo,UC為前一LSTM模塊細(xì)胞輸出連接當(dāng)前對(duì)應(yīng)門和細(xì)胞狀態(tài)的加權(quán)矩陣,bf,bi,bo,bC為對(duì)應(yīng)的偏差向量.σ和tanh分別為Sigmoid函數(shù)和雙曲正切函數(shù).相比單一LSTM, BiLSTM能更有效地從數(shù)據(jù)集中學(xué)習(xí)時(shí)空特征, 并且在大數(shù)據(jù)集中有很好的性能.
基于ViLBERT[26]和BiLSTM圖像描述算法主要由VilBERT模型和結(jié)合注意力機(jī)制的BiLSTM組成.整體模型框架見圖3.
圖3 基于ViLBERT和BiLSTM圖像描述框架
ViLBERT是BERT技術(shù)的擴(kuò)展.為了將BERT模型應(yīng)用于視覺和語言, 其研究小組使用一個(gè)概念性標(biāo)題的數(shù)據(jù)集, 該數(shù)據(jù)集由大約300萬張圖片和對(duì)應(yīng)文本組成.他們的方法是屏蔽掉圖像的隨機(jī)部分, 然后要求模型根據(jù)相關(guān)的文本重建圖像的其余部分.
本文模型中, ViLBERT由兩個(gè)并行的BERT模型組成, 分別處理圖像和文本部分, 見圖3.每一部分都是由一系列Transformer塊(TRM)和聯(lián)合注意力Transformer層(CoTRM)組成, 聯(lián)合注意力Transformer層能夠?qū)崿F(xiàn)圖像和文本不同Transformer塊的信息交互.給定一張圖片, 用p1,p2,···,pt表示圖像不同區(qū)域的特征, 這里使用Faster R-CNN使用Resnet152模塊在Visual Genome數(shù)據(jù)集上進(jìn)行了預(yù)訓(xùn)練, 來提取圖像的區(qū)域特征.圖片對(duì)應(yīng)的文本用w0,w2,···,wt表示.圖像文本兩個(gè)流之間的交換被限制在特定的層之間.文本流在與視覺特征交互之前需要經(jīng)過一個(gè)Transformer塊的處理, 這是因?yàn)橐曈X特征經(jīng)過神經(jīng)網(wǎng)絡(luò)深層次的提取已經(jīng)有高層語義的信息, 而句子中的單詞提取只需要有限的上下文聚合.聯(lián)合注意力Transformer層使用將圖像和文本特征進(jìn)行殘差相加后能使圖像和文本流都具有多模態(tài)的特征.圖像流部分最終輸出為hp0,hp1,···,hpt, 文本流部分最終輸出為hw0,hw1,···,hwt.然后將兩部分進(jìn)行加權(quán)相加, 在本文中, 加權(quán)因子取0.5, 即vi=0.5hpi+0.5hwi.得到最終的圖像特征V={v1,v2,···,vt}.
采用加入注意力機(jī)制的雙層長短期記憶網(wǎng)絡(luò), 不同于雙向長短期記憶網(wǎng)絡(luò)兩個(gè)LSTM分別正向和逆向處理同一數(shù)據(jù).這里使用兩個(gè)正向的LSTM處理不同的數(shù)據(jù), 并在第2步LSTM中加入注意力權(quán)重向量.每個(gè)LSTM采用式(2)-式(7)計(jì)算.具體結(jié)構(gòu)見圖3上部分.
在每一個(gè)時(shí)間步長上LSTM使用式(9)計(jì)算:
其中,xt為LSTM的輸入向量,ht-1為上一時(shí)間步長的LSTM的輸出向量.每一時(shí)間步長的LSTM模塊由一個(gè)Att-LSTM和一個(gè)Lan-LSTM組成.
BiLSTM中t時(shí)刻的Att-LSTM的輸入為為上一時(shí)間步長Lan-LSTM的輸出,為ViLBERT模型最終輸出的圖像向量的均值池化值, 即為之前生成單詞的編碼向量,W為加權(quán)矩陣,為t時(shí)刻駛?cè)雴卧~的one-hot encodinge(獨(dú)熱編碼), 最后將這三者拼接得到.將其輸入到Att-LSTM中, 輸出得到.隨后在每一個(gè)時(shí)間步長結(jié)合圖像特征V生成一個(gè)標(biāo)準(zhǔn)化注意力權(quán)重 αi,t, 并得到加權(quán)后的圖像特征,計(jì)算公式如下:
其中,Wva∈RH×V,Wha∈RH×M,ωa∈RH是已學(xué)習(xí)的參數(shù),為 ωa的轉(zhuǎn)置矩陣,vi是圖形特征V的第i個(gè)區(qū)域特征,為Att-LSTM的t時(shí)刻的輸出隱藏向量.
使用符號(hào)y1:T表示單詞序列(y1,···,yT), 在t時(shí)間步長輸出單詞的概率分布由下式給出:
其中,Wp∈ R|Σ|×M,bp∈ R|Σ|是已學(xué)習(xí)權(quán)重和偏差參數(shù).完整的序列輸出分布為:
實(shí)驗(yàn)采用MSCOCO2014數(shù)據(jù)集[27], 該數(shù)據(jù)集旨在通過將對(duì)象識(shí)別問題置于更廣泛的場景理解問題的上下文中, 從而提高對(duì)象識(shí)別的最新水平, 并通過收集包含自然環(huán)境中常見對(duì)象的圖像來實(shí)現(xiàn).該數(shù)據(jù)集使用專業(yè)機(jī)構(gòu)人為地對(duì)圖片進(jìn)行描述, 每張圖片收錄5句或者15句參考描述, 標(biāo)注集一般以JSON格式保存.該數(shù)據(jù)集有超過33萬張圖片, 其中20萬有標(biāo)注描述,包含91類目標(biāo), 32.8萬張圖像中總共有250萬個(gè)帶有標(biāo)簽的實(shí)例, 這也是目前最大的語義分割數(shù)據(jù)集.
實(shí)驗(yàn)采用BLEU (BiLingual Evaluation Understudy)[28]和CIDEr[29]兩種評(píng)價(jià)指標(biāo)對(duì)本文算法進(jìn)行評(píng)估.
BLEU算法對(duì)生成的待評(píng)價(jià)語句和人工標(biāo)注語句間的差異進(jìn)行評(píng)分, 得分輸出在0-1之間.該標(biāo)準(zhǔn)現(xiàn)已成為圖像描述算法應(yīng)用最廣泛的計(jì)算標(biāo)準(zhǔn)之一.
對(duì)于圖像Ii, 圖像描述模型對(duì)于這個(gè)圖像生成的描述語句ci, 人工標(biāo)注的5個(gè)描述語句集合Si={si1,···,si5}∈S, 我們要對(duì)ci進(jìn)行評(píng)價(jià).BLEU的計(jì)算公式如下所示:
其中, 每一個(gè)語句用n元組 ωk來表示的,n元組 ωk在人工標(biāo)注語句sij中出現(xiàn)的次數(shù)記作,n元組 ωk在待評(píng)價(jià)語句ci∈C中出現(xiàn)的次數(shù)記作hk(ci),lC是待評(píng)價(jià)語句ci的總長,lS是人工標(biāo)注語句的總長度.BLEU得分越高, 性能也就越好.
CIDEr是專門設(shè)計(jì)用于評(píng)價(jià)圖像描述模型的, 它通過計(jì)算每個(gè)n元組的TF-IDF 權(quán)重得到待評(píng)價(jià)語句和參考語句之間的相似度, 以此評(píng)價(jià)圖像描述的效果.
一個(gè)n元組ωk在人工標(biāo)注語句sij中出現(xiàn)的次數(shù)記作, 在待評(píng)價(jià)語句中出現(xiàn)的次數(shù)記作hk(ci),n元組 ωk的TF-IDF權(quán)重如下所示:
其中, Ω是所有n元組的語料庫,I是數(shù)據(jù)集中所有圖像的集合.CIDEr的得分越高, 生成的語句的質(zhì)量也就越好.
實(shí)驗(yàn)環(huán)境基于Ubuntu 18.04系統(tǒng), CPU為Inteli9-9900k, GPU為NVIDIA GeForce RTX 2080Ti, 16 GB內(nèi)存, Python 3.7+CUDA 10.1的PyTorch深度學(xué)習(xí)環(huán)境.
在處理注釋文件時(shí), 刪除了非字母字符, 將剩余的字符轉(zhuǎn)化為小寫字母, 并將所有出現(xiàn)小于5次的單詞替換為特殊的單詞UNK.最終在MSCOCO數(shù)據(jù)集中得到9517個(gè)單詞, 也就是最終使用的語料庫.
將生成語句的最大長度設(shè)為16, 解碼器生成采用beamsearch (集束搜索),N值設(shè)為3時(shí)算法的評(píng)價(jià)指標(biāo)得分最佳, 采用Dropout方法防止過擬合, 參數(shù)設(shè)為0.5.使用Adam優(yōu)化器訓(xùn)練本文模型, 在訓(xùn)練損失函數(shù)階段, 學(xué)習(xí)率設(shè)為 3 ×10-4, 權(quán)重衰減為1 ×10-6, 批處理大小為128, 訓(xùn)練輪數(shù)設(shè)為30.
表2對(duì)比本文算法(VB-BL)和文獻(xiàn)[5,10,11,13,19-21,30]這些經(jīng)典算法在B@1、B@4和CIDEr評(píng)價(jià)指標(biāo)下的評(píng)分.
表2 不同圖像描述算法評(píng)價(jià)指標(biāo)評(píng)分對(duì)比
可以看出, 本文的算法在B@1, B@4得分比該表中最優(yōu)得分分別高出1.3和0.6, 有一定程度的提高,在CIDEr得分比該表中最優(yōu)得分高出5.1, 有4.2%的提升.在編碼階段結(jié)合圖像和文本特征之間的聯(lián)系, 能夠有效增強(qiáng)提取圖像中的重要部分, 抑制與文本不相關(guān)、不重要的部分, 使得圖像中各目標(biāo)間的關(guān)聯(lián)更加緊密, 起到注意力機(jī)制的效果.在此基礎(chǔ)上再結(jié)合雙向注意力機(jī)制的LSTM, 能夠有效地提高本文算法的效果.
接著驗(yàn)證本文算法不同模塊的效果, 進(jìn)行了兩個(gè)消融實(shí)驗(yàn): 1)將ViLBERT換成CNN; 2)將結(jié)合注意力機(jī)制的BiLSTM換成BiLSTM.實(shí)驗(yàn)對(duì)比見表3.
從表3中可以看出, 將ViLBERT提取后的圖像和文本特征進(jìn)行加權(quán)處理后能夠高效利用圖像中的關(guān)鍵信息, 為后續(xù)的高質(zhì)量的文本生成提供保證.在BiLSTM中加入注意力機(jī)制也可以有效提升算法的效果.綜合對(duì)比可以看出, 在編碼階段使用文本信息參與對(duì)圖像特征進(jìn)行交融, 能使算法更加關(guān)注圖像中的關(guān)鍵信息,這也是本文算法取得優(yōu)化的關(guān)鍵原因.
表3 本文算法消融實(shí)驗(yàn)
圖4中選取6張圖片進(jìn)行效果的展示, 本文算法生成描述與NIC模型的對(duì)比見表4.
表4 NIC模型和本文算法描述對(duì)比
圖4 對(duì)比效果圖片
對(duì)比可以看出, 本文算法生成的描述已經(jīng)能夠詳細(xì)地表述出圖中的主要內(nèi)容, 并能夠描述出各主要目標(biāo)的細(xì)節(jié)特征.在缺少人類主觀因素和知識(shí)儲(chǔ)備的情況下, 已經(jīng)表現(xiàn)出優(yōu)異的性能.
本文提出基于ViLBERT和BiLSTM結(jié)合的圖像描述算法.使用ViLBERT模型創(chuàng)新地融合了圖像和文本間的特征, 使得提取到的圖像特征具有類似視覺注意力的特性, 該模型精簡的參數(shù)量能有效縮減訓(xùn)練的時(shí)間.結(jié)合采用了融合注意力機(jī)制的雙層長短期記憶網(wǎng)絡(luò)能改善注意力權(quán)重的可解釋性.該算法進(jìn)一步統(tǒng)一視覺圖像和語言理解間的跨模塊特征.實(shí)驗(yàn)表明, 該算法在各評(píng)價(jià)指標(biāo)上都有著優(yōu)異的表現(xiàn).在未來的工作中, 將結(jié)合圖卷積神經(jīng)網(wǎng)絡(luò)來加強(qiáng)圖像內(nèi)各目標(biāo)間的聯(lián)系來展開進(jìn)一步的研究.