許 昊, 張 凱, 田英杰, 種法廣, 王子超
1(上海電力大學 計算機科學與技術學院, 上海 200090)2(國家電網公司 上海電器科學研究院, 上海 200437)
圖像描述(Image Caption)是將計算機視覺和自然語言處理兩個領域相結合的跨模態跨領域的任務.一般的, 它將輸入的圖片通過卷積神經網絡提取圖像特征并利用循環神經網絡等方法生成一段文字的描述,這段描述要求和圖片的內容高度相似.這項技術在我們的生活中有著廣泛的市場需求, 例如應用在對盲人的實時語音導航中.基于這樣的需求, 將實時采集的視頻圖像應用圖像描述技術得到對應的文本描述, 再通過文本轉語音技術實時傳輸到盲人的耳中, 讓盲人能夠實時地感受到周圍的環境.這在智能機器人領域也有著類似的需求, 這項技術相當于讓它有了一雙能夠理解分析世界的“眼睛”.除此之外, 該技術在圖像檢索系統、醫學CT圖像的報告生成和新聞標題生成方面都有著不錯的應用前景.
經典圖像描述算法可分為3類.1)通過模板填充的方法[1]來生成圖像描述, 它主要是通過局部二值模式、尺度不變特征轉換或者方向梯度直方圖等算法提取圖像的視覺特征, 并根據這些特征檢測對應目標、動作及屬性對應的單詞詞匯, 最后將這些單詞填入到模板中.這樣的方法雖然能夠保證句型語法的正確性,也有著很大的局限性, 由于使用的模板是固定的, 它也依賴于硬解碼的視覺概念影響, 這樣生成的語句格式相對固定且形式單一, 應用的場景也很局限.2)基于檢索的方法[2], 它將大量的圖片描述存于一個集合中, 然后通過比較有標簽圖片和訓練生成圖片描述兩者間相似度來生成一個候選描述的集合, 再從中選擇最符合該圖片的描述.這樣的方法能保證語句的正確性, 但語義的正確性卻難以保證, 因而對圖像描述的正確率較低.3)基于生成的方法.這類方法一般采用編碼-解碼器的結構, 編碼器使用卷積神經網絡(CNN)[3]提取圖像特征, 解碼器采用循環神經網絡(RNN)[4]來生成文本描述.這是在圖像描述中普遍應用且效果最好的模型, 它在語句結構的完整性、語義的正確性以及泛化能力得到了一致的認可.
編碼器-解碼器的結構最初由Vinyals等[5]提出.該模型編碼器使用基于CNN的InceptionNet網絡提取圖像特征信息, 解碼器使用RNN處理輸入的圖像特征來生成描述.Fang等[6]對編碼器進行了改進, 通過提取關鍵詞作為輸入來生成描述的方法為后續結合圖像和語義的編碼方法提供了借鑒.Wang等[7]提出了一種新型的解碼結構.由Skel-LSTM使用CNN提取的圖像特征來生成骨架語句, 然后使用Attr-LSTM為骨架語句中的詞語生成對應的屬性詞, 最后將這兩部分結合生成完整的最終描述語句.Jyoti等[8]提出了一種不同于用LSTM或者RNN進行解碼的方法, 該工作啟發式地利用卷積來進行圖像描述, 達到不比傳統LSTM差的效果.
注意力機制的引入使得圖像描述算法效果得到顯著提高.Xu等[9]在NIC模型[5]的基礎上把注意力機制應用在圖像描述的圖像特征中.其基本思想是將編碼階段獲取的圖像特征進行注意力處理, 解碼階段使用LSTM.Lu等[10]提出注意力機制的改進工作.這項工作對LSTM進行擴展, 加入“崗哨向量”, 存儲著解碼器中已有的知識信息.同時提出新的自適應注意力機制, 通過空間注意力來決定關注圖像的哪個區域.Anderson等[11]引入Top-down, Bottom-up機制, 使用Faster R-CNN提取圖像區域特征.
對抗生成網絡[12]的應用使得描述生成更加多樣化.文獻[13,14]將Conditional GAN 運用在圖像描述,該方法生成的圖片描述貼近人類的表達, 改善了句子的自然性和多樣性.Zhang等[15]提出的模型由兩個不同的GAN組成.Shekher等[16]拓展了COCO數據集,并通過對抗樣本驗證了Lavi模型的魯棒性, Dai等[17]則使用對抗樣樣本訓練解決圖像描述任務生成的描述缺少獨特性的問題.文獻[18-21]通過強化學習的方法[22]將不同評價標準作為獎勵來訓練模型, 能夠顯著提高生成描述的質量.
傳統圖像描述算法研究仍有這些不足: 1) 在編碼器端一般使用傳統CNN或者目標檢測算法進行圖像特征的提取, 存在圖像特征與文本描述關聯不緊密, 僅有部分注意力權重大的特征得到利用的問題.2) 使用的解碼器LSTM模型較為單一, 可使用更為復雜的模型提升性能.
針對上述問題, 本文提出基于ViLBERT和BiLSTM結合的圖像描述算法.主要有以下貢獻:
1) 使用預訓練的ViLBERT模型學習圖像和文本間的內在聯系, 并用聯合特征向量統一表示, 能更好地學習到圖像特征.
2) 使用BiLSTM處理聯合特征向量, 加入注意力機制能顯著改善生成描述的質量.
3) 在MSCOCO2014數據集上進行訓練和測試, 通過實驗結果表明該算法達到了優異的性能.
本文第1節對本文圖像描述算法涉及的相關工作進行介紹.第2節介紹本文算法的具體框架及改進部分.第3節介紹實驗數據集、評價標準及實驗的對比和分析.第4節對本文算法進行總結并展望下一步研究工作.
BERT (Bidirectional Encoder Representations from Transformers)[23]即由Transformer進行的雙向編碼表示形式, 是廣泛使用的自然語言處理(NLP)模型.BERT的特征之一是可以讀取上下文.BERT具有一個稱為Transformer[24]的內置體系結構, 并且通過從兩個方向(句子的開頭和結尾)學習句子來實現“讀取上下文”.由于BERT是雙向的, 它們可以通過從左右兩個方向讀取數據來使語句聯系上下文.這樣可以建立單詞之間的關系, 并幫助模型對相關單詞做出更明智的預測.使用轉換器架構對大量未標記數據集進行預訓練, 因此不需要按順序處理數據序列, 從而可以進行并行計算.
BERT的主要模型結構是多層Transformer編碼器.原始形式的Transformer包含兩種獨立的機制: 讀取文本輸入的編碼器和產生任務預測的解碼器.由于BERT的目標是生成語言模型, 因此僅需要編碼器機制.BERT有簡單和復雜兩種結構, 結構參數見表1.使用GELU作為非線性激活函數, 如式(1)所示, 其中tanh為雙曲正切函數.


表1 BERT模型參數
圖1是對BERT模型的描述.輸入是一系列標識(tokens), 這些標識首先嵌入向量中, 然后在神經網絡中進行處理.輸出是大小為H的向量序列, 其中每個向量對應于具有相同索引的輸入標識.

圖1 BERT模型
BiLSTM[25], 即雙向LSTM, 是一個由兩個LSTM網絡組成的序列處理模型: 一個LSTM將向量正向依次輸入, 另一個LSTM則將該向量反向依次輸入.BiLSTM有效地增加了網絡可用的信息量, 改善了算法可用的上下文信息.
BiLSTM結構圖如圖2所示.前向LSTM層的輸出向量序列由前T-n到T-1時刻的正序輸入迭代計算得到, 而后向LSTM層的輸出向量序列由前T-n到T-1時刻的逆序輸入迭代計算得到.正向和反向層的輸出都由標準LSTM更新公式計算, 見式(2)-式(7).BiLSTM層最終生成一個輸出向量YT=[hT-n,···,hT-1],其中每個元素通過式(8)計算.


圖2 BiLSTM模型
其中,ht是t時刻隱藏層向量,xt是輸入向量,Wxh是從輸入層到隱藏層的加權矩陣,Why是從隱藏層到輸出層的加權矩陣,Whh是連續隱藏層間的加權矩陣.bh,by分別為隱藏層和輸出層的偏差向量.Wf,Wi,Wo,WC分別為隱藏層映射到遺忘門、輸入門、輸出門和細胞狀態的加權矩陣,Uf,Ui,Uo,UC為前一LSTM模塊細胞輸出連接當前對應門和細胞狀態的加權矩陣,bf,bi,bo,bC為對應的偏差向量.σ和tanh分別為Sigmoid函數和雙曲正切函數.相比單一LSTM, BiLSTM能更有效地從數據集中學習時空特征, 并且在大數據集中有很好的性能.
基于ViLBERT[26]和BiLSTM圖像描述算法主要由VilBERT模型和結合注意力機制的BiLSTM組成.整體模型框架見圖3.

圖3 基于ViLBERT和BiLSTM圖像描述框架
ViLBERT是BERT技術的擴展.為了將BERT模型應用于視覺和語言, 其研究小組使用一個概念性標題的數據集, 該數據集由大約300萬張圖片和對應文本組成.他們的方法是屏蔽掉圖像的隨機部分, 然后要求模型根據相關的文本重建圖像的其余部分.
本文模型中, ViLBERT由兩個并行的BERT模型組成, 分別處理圖像和文本部分, 見圖3.每一部分都是由一系列Transformer塊(TRM)和聯合注意力Transformer層(CoTRM)組成, 聯合注意力Transformer層能夠實現圖像和文本不同Transformer塊的信息交互.給定一張圖片, 用p1,p2,···,pt表示圖像不同區域的特征, 這里使用Faster R-CNN使用Resnet152模塊在Visual Genome數據集上進行了預訓練, 來提取圖像的區域特征.圖片對應的文本用w0,w2,···,wt表示.圖像文本兩個流之間的交換被限制在特定的層之間.文本流在與視覺特征交互之前需要經過一個Transformer塊的處理, 這是因為視覺特征經過神經網絡深層次的提取已經有高層語義的信息, 而句子中的單詞提取只需要有限的上下文聚合.聯合注意力Transformer層使用將圖像和文本特征進行殘差相加后能使圖像和文本流都具有多模態的特征.圖像流部分最終輸出為hp0,hp1,···,hpt, 文本流部分最終輸出為hw0,hw1,···,hwt.然后將兩部分進行加權相加, 在本文中, 加權因子取0.5, 即vi=0.5hpi+0.5hwi.得到最終的圖像特征V={v1,v2,···,vt}.
采用加入注意力機制的雙層長短期記憶網絡, 不同于雙向長短期記憶網絡兩個LSTM分別正向和逆向處理同一數據.這里使用兩個正向的LSTM處理不同的數據, 并在第2步LSTM中加入注意力權重向量.每個LSTM采用式(2)-式(7)計算.具體結構見圖3上部分.
在每一個時間步長上LSTM使用式(9)計算:

其中,xt為LSTM的輸入向量,ht-1為上一時間步長的LSTM的輸出向量.每一時間步長的LSTM模塊由一個Att-LSTM和一個Lan-LSTM組成.
BiLSTM中t時刻的Att-LSTM的輸入為為上一時間步長Lan-LSTM的輸出,為ViLBERT模型最終輸出的圖像向量的均值池化值, 即為之前生成單詞的編碼向量,W為加權矩陣,為t時刻駛入單詞的one-hot encodinge(獨熱編碼), 最后將這三者拼接得到.將其輸入到Att-LSTM中, 輸出得到.隨后在每一個時間步長結合圖像特征V生成一個標準化注意力權重 αi,t, 并得到加權后的圖像特征,計算公式如下:

其中,Wva∈RH×V,Wha∈RH×M,ωa∈RH是已學習的參數,為 ωa的轉置矩陣,vi是圖形特征V的第i個區域特征,為Att-LSTM的t時刻的輸出隱藏向量.
使用符號y1:T表示單詞序列(y1,···,yT), 在t時間步長輸出單詞的概率分布由下式給出:

其中,Wp∈ R|Σ|×M,bp∈ R|Σ|是已學習權重和偏差參數.完整的序列輸出分布為:


實驗采用MSCOCO2014數據集[27], 該數據集旨在通過將對象識別問題置于更廣泛的場景理解問題的上下文中, 從而提高對象識別的最新水平, 并通過收集包含自然環境中常見對象的圖像來實現.該數據集使用專業機構人為地對圖片進行描述, 每張圖片收錄5句或者15句參考描述, 標注集一般以JSON格式保存.該數據集有超過33萬張圖片, 其中20萬有標注描述,包含91類目標, 32.8萬張圖像中總共有250萬個帶有標簽的實例, 這也是目前最大的語義分割數據集.
實驗采用BLEU (BiLingual Evaluation Understudy)[28]和CIDEr[29]兩種評價指標對本文算法進行評估.
BLEU算法對生成的待評價語句和人工標注語句間的差異進行評分, 得分輸出在0-1之間.該標準現已成為圖像描述算法應用最廣泛的計算標準之一.
對于圖像Ii, 圖像描述模型對于這個圖像生成的描述語句ci, 人工標注的5個描述語句集合Si={si1,···,si5}∈S, 我們要對ci進行評價.BLEU的計算公式如下所示:

其中, 每一個語句用n元組 ωk來表示的,n元組 ωk在人工標注語句sij中出現的次數記作,n元組 ωk在待評價語句ci∈C中出現的次數記作hk(ci),lC是待評價語句ci的總長,lS是人工標注語句的總長度.BLEU得分越高, 性能也就越好.
CIDEr是專門設計用于評價圖像描述模型的, 它通過計算每個n元組的TF-IDF 權重得到待評價語句和參考語句之間的相似度, 以此評價圖像描述的效果.
一個n元組ωk在人工標注語句sij中出現的次數記作, 在待評價語句中出現的次數記作hk(ci),n元組 ωk的TF-IDF權重如下所示:

其中, Ω是所有n元組的語料庫,I是數據集中所有圖像的集合.CIDEr的得分越高, 生成的語句的質量也就越好.
實驗環境基于Ubuntu 18.04系統, CPU為Inteli9-9900k, GPU為NVIDIA GeForce RTX 2080Ti, 16 GB內存, Python 3.7+CUDA 10.1的PyTorch深度學習環境.
在處理注釋文件時, 刪除了非字母字符, 將剩余的字符轉化為小寫字母, 并將所有出現小于5次的單詞替換為特殊的單詞UNK.最終在MSCOCO數據集中得到9517個單詞, 也就是最終使用的語料庫.
將生成語句的最大長度設為16, 解碼器生成采用beamsearch (集束搜索),N值設為3時算法的評價指標得分最佳, 采用Dropout方法防止過擬合, 參數設為0.5.使用Adam優化器訓練本文模型, 在訓練損失函數階段, 學習率設為 3 ×10-4, 權重衰減為1 ×10-6, 批處理大小為128, 訓練輪數設為30.
表2對比本文算法(VB-BL)和文獻[5,10,11,13,19-21,30]這些經典算法在B@1、B@4和CIDEr評價指標下的評分.

表2 不同圖像描述算法評價指標評分對比
可以看出, 本文的算法在B@1, B@4得分比該表中最優得分分別高出1.3和0.6, 有一定程度的提高,在CIDEr得分比該表中最優得分高出5.1, 有4.2%的提升.在編碼階段結合圖像和文本特征之間的聯系, 能夠有效增強提取圖像中的重要部分, 抑制與文本不相關、不重要的部分, 使得圖像中各目標間的關聯更加緊密, 起到注意力機制的效果.在此基礎上再結合雙向注意力機制的LSTM, 能夠有效地提高本文算法的效果.
接著驗證本文算法不同模塊的效果, 進行了兩個消融實驗: 1)將ViLBERT換成CNN; 2)將結合注意力機制的BiLSTM換成BiLSTM.實驗對比見表3.
從表3中可以看出, 將ViLBERT提取后的圖像和文本特征進行加權處理后能夠高效利用圖像中的關鍵信息, 為后續的高質量的文本生成提供保證.在BiLSTM中加入注意力機制也可以有效提升算法的效果.綜合對比可以看出, 在編碼階段使用文本信息參與對圖像特征進行交融, 能使算法更加關注圖像中的關鍵信息,這也是本文算法取得優化的關鍵原因.

表3 本文算法消融實驗
圖4中選取6張圖片進行效果的展示, 本文算法生成描述與NIC模型的對比見表4.

表4 NIC模型和本文算法描述對比

圖4 對比效果圖片
對比可以看出, 本文算法生成的描述已經能夠詳細地表述出圖中的主要內容, 并能夠描述出各主要目標的細節特征.在缺少人類主觀因素和知識儲備的情況下, 已經表現出優異的性能.
本文提出基于ViLBERT和BiLSTM結合的圖像描述算法.使用ViLBERT模型創新地融合了圖像和文本間的特征, 使得提取到的圖像特征具有類似視覺注意力的特性, 該模型精簡的參數量能有效縮減訓練的時間.結合采用了融合注意力機制的雙層長短期記憶網絡能改善注意力權重的可解釋性.該算法進一步統一視覺圖像和語言理解間的跨模塊特征.實驗表明, 該算法在各評價指標上都有著優異的表現.在未來的工作中, 將結合圖卷積神經網絡來加強圖像內各目標間的聯系來展開進一步的研究.