陳 婷,王玉德,任志偉,楊 昊,高張弛
(曲阜師范大學,山東 曲阜 273165)
視覺問答是把圖像和關(guān)于圖像的自然語言問題作為輸入,針對問題生成自然語言答案作為輸出[1]。視覺問答任務主要分為問題特征的提取、圖像特征的提取、結(jié)合圖像和問題特征生成答案3 個步驟。視覺問答任務的關(guān)鍵在于如何把圖像和問題特征有效結(jié)合起來。
引入視覺注意力機制是優(yōu)化視覺問答任務的一種有效方法。注意力機制(Attention)由Bahdanau等人[2]提出,用于改進神經(jīng)機器翻譯,并擴展到計算機視覺和自然語言處理任務中[3-6]。視覺問答(Visual Question Answering,VQA)任務的早期注意多為自上而下的視覺注意,主要實現(xiàn)對圖像區(qū)域的問題引導注意[7-10]。針對單一注意力不足以定位正確答案的關(guān)注區(qū)域的問題,Lu 等人[11]提出了協(xié)同注意力機制(Hierarchical question-image Co-Attention,HieCoAtt)來交替學習視覺注意和文本注意,Yang 等人[12]提出了一種堆疊注意力機制(Stacked Attention Networks,SAN);但是這種交互學習還是較為粗糙的交互。為了建立更密集的交互,Kim 等人[13]提出了雙線性注意網(wǎng)絡(Bilinear Attention Networks,BAN),通過建立每個區(qū)域和每個圖像之間的關(guān)聯(lián)提高模型性能;Yu 等人[14]提出了深度模塊化協(xié)同注意網(wǎng)絡(Deep Modular Co-Attention Networks,MCAN)對圖像和問題分別進行自注意,加強問題和圖像的內(nèi)部依賴關(guān)系;Gao 等人[15]提出了一種深度堆疊的多模態(tài)特征融合(Dynamic Fusion with Intra-and Inter-modality Attention Flow,DFAF)模型,該模型模擬了模態(tài)內(nèi)部和模態(tài)間的信息交互;Yu 等人[16]提出了一種多峰因子化高階池化(Multimodal Factorized Highorder pooling,MFH)方法。這些方法雖然在一定程度上提高了VQA 的性能,但沒有充分利用問題與圖像之間的相互引導關(guān)系,導致模型性能不理想。
鑒于現(xiàn)有方法多缺乏圖像和問題之間的相互引導關(guān)系,本文提出了圖像引導問題與問題引導圖像相結(jié)合的雙引導注意力機制視覺問答算法,從而加強圖像與問題之間的推理關(guān)系,提高視覺問答整體的準確率。
問題特征一般使用循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)提取,其常用的長短時記憶網(wǎng)絡(Long-Short Term Memory,LSTM)[17-18]結(jié)構(gòu)如圖1 所示。
圖1 LSTM 結(jié)構(gòu)
圖1 中,ft,it,ot分別表示遺忘門、輸入門、輸出門。xt代表當前的輸入,ht-1代表上一時刻隱含層的輸出,ht表示當前輸出,ct-1表示上一時刻的細胞狀態(tài),ct表示新的細胞狀態(tài)。
遺忘門、輸入門、輸出門的輸出由前一時刻的輸出和當前時刻的輸入決定,計算原理為:
式中:Wf、Wi、Wo為訓練的權(quán)重矩陣;bf、bi、bo為偏置參數(shù);σ為Sigmoid 函數(shù)。
ct和ht的更新公式為:
式中:Wc為訓練的權(quán)重矩陣;bc為偏置參數(shù)。
圖像特征提取一般使用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN),CNN 包括輸入層、卷積層、池化層、全連接層、分類輸出層5 部分。CNN 基礎(chǔ)結(jié)構(gòu)如圖2 所示。
圖2 CNN 基礎(chǔ)結(jié)構(gòu)
常用的CNN 網(wǎng)絡包括vgg16/vgg19 網(wǎng)絡,resnet-152/resnet-101 網(wǎng)絡,F(xiàn)aster R-CNN[19]網(wǎng)絡等。
多數(shù)的特征融合方法是把VQA視為分類任務。將圖片特征和問題特征結(jié)合生成答案。常用的方法是矩陣元素點乘、矩陣元素對應相加或連接,并使用線性分類器或者神經(jīng)網(wǎng)絡分類器分類。以將矩陣元素對應相加為例,對于兩個特征x、y,相加融合后經(jīng)前饋網(wǎng)絡輸出,計算方式為:
式中:f為融合后的特征輸出;,為線性投影矩陣的轉(zhuǎn)置;FFN為前饋網(wǎng)絡。
視覺問答任務常用準確度指標對模型進行評估,計算方式為:
式中:∑a為數(shù)據(jù)集中人類投票標注的答案,當預測的答案在標注答案中出現(xiàn)3 次及3 次以上時,認為預測答案正確。
為了彌補傳統(tǒng)的視覺問答算法中問題特征和圖像特征缺乏依賴的問題,在MCAN 網(wǎng)絡[14]中引入問題引導圖像注意力機制,對問題和圖像特征的提取加入自注意力機制。
自注意力(Self-Attention,SA)[20]的特點在于無視詞之間的距離直接計算依賴關(guān)系,從而能夠?qū)W習一個句子的內(nèi)部結(jié)構(gòu)。SA 內(nèi)部結(jié)構(gòu)圖如圖3。Attention 的本質(zhì)可以被描述為一個查詢(Query)到一系列(鍵Key -值Value)對的映射。這3 個向量是用嵌入向量與一個矩陣相乘得到的結(jié)果,SA即3 個向量Query、Key、Value 相等K=V=Q。首先將Q和每個K進行點積運算,計算相似度得到權(quán)重,為了防止內(nèi)積過大,除以K的維度;其次使用一個softmax 函數(shù)對這些權(quán)重進行歸一化;最后將權(quán)重和相應的鍵值V進行加權(quán)求和得到最后的attention。具體的表達式為:
圖3 SA 內(nèi)部結(jié)構(gòu)
式中:dK為K的維度。
為了使模型在不同的表示子空間里學習到相關(guān)信息,將多頭自注意力機制(Multi-headed selfattention)應用于視覺問答任務中[5],通過多次計算來捕獲不同子空間上的相關(guān)信息。Multi-head 的結(jié)構(gòu)如圖4 所示,將Q、K、V進行線性變換,然后輸入Self-attention,進行h次計算,而且每次Q,K,V進行線性變換的參數(shù)W都不同。最后將h次的Self-attention 結(jié)果進行拼接,并進行線性變換,得到多頭attention 的結(jié)果。計算方式為:
圖4 Multi-head 結(jié)構(gòu)
問題引導圖像注意力機制結(jié)構(gòu)如圖5 所示。
圖5 問題引導圖像注意力機制結(jié)構(gòu)
首先,利用自注意后的問題特征來建立引導(Guide Attention,GA)模塊,其結(jié)構(gòu)如圖6,算法和自注意力機制相似,不同的地方在于使用問題X和圖像Y兩種特征,Q為X特征,K=V為Y特征。
圖6 GA 結(jié)構(gòu)
其次,采用編碼器/解碼器的方式,將X特征自注意后進行級聯(lián),輸出具有多模態(tài)的問題特征FX,利用FX對進行自注意后的Y特征進行多次引導,得到具有多模態(tài)的特征FY,計算方式為:
為了簡化模型,將模態(tài)特征經(jīng)過多層感知機(Multilayer Perception,MLP)模型(FC-Relu-Drop-FC),以X特征為例,計算方法為:
式中:a為權(quán)重矩陣。
將fx,fy經(jīng)過線性函數(shù)進行融合,得到融合后的特征f1:
為了更充分地建立圖像和問題之間的推理關(guān)系,在問題引導圖像注意力機制的基礎(chǔ)上設(shè)計圖像與問題雙引導注意力機制(Dual-Guided Attention,DGA),結(jié)構(gòu)如圖7 所示。雙引導注意力機制不僅可以根據(jù)問題中的關(guān)鍵詞定位圖像特征,也可以根據(jù)圖像的目標特征尋找問題中的關(guān)鍵詞。
圖7 圖像與問題雙引導注意力機制結(jié)構(gòu)
經(jīng)過自注意后的模態(tài)問題特征FX包含較為豐富的文字信息,引導后的模態(tài)圖像特征FY也可以精準定位到目標對象。為加強圖像和問題之間的交互引導,豐富兩者之間的依賴關(guān)系,用FY對FX進行引導,實現(xiàn)圖像對問題的引導,得到更加豐富的加強模態(tài)特征FZ,計算方式為:
類似的,將FZ進行簡化運算得到fz,將問題模態(tài)特征fx與fy求和,并將融合后的特征與fz進行concat 運算得到注意后的特征f,計算方法為:
將特征f分類輸出,圖像與問題雙引導注意力模型結(jié)構(gòu)如圖8。
圖8 模型結(jié)構(gòu)
實驗采用Windows 操作系統(tǒng),顯卡為NVIDIA GeForce GTX 1080Ti,顯存為11 GB,版本為CUDA11.1,基于Anconda3(64-bit)的Python3.6 環(huán)境、Pytorch1.0 的深度學習庫。實驗在VQA v2.0 訓練集和驗證集上進行訓練,在test-dev 集上進行測試。
VQA v2.0 數(shù)據(jù)集包括82 783 張訓練圖像、40 504張驗證圖像、81 434 張測試圖像,每幅圖像有3 個問題,每個問題有10 個答案。數(shù)據(jù)集中包括是/否、數(shù)字、其他3 種回答類型。
輸入圖像經(jīng)過Faster R-CNN 網(wǎng)絡以bottomup[21]的方式提取圖像的目標區(qū)域特征,目標區(qū)域數(shù)量記為m∈[10,100]。輸入問題首先被處理成單詞,并最多截取14 個單詞,使用300-D GloVe 詞嵌入將每個單詞轉(zhuǎn)換為向量,并通過單層LSTM 網(wǎng)絡獲取問題特征。
輸入圖像特征維度2 048,輸入問題特征維度1 024 以及融合后特征維度1 024;實驗設(shè)置候選答案長度為3 129;使用Adam 優(yōu)化策略,其中一階矩衰減系數(shù)β1=0.9,二階矩衰減系數(shù)β2=0.98;按階段設(shè)置學習率,基礎(chǔ)學習率設(shè)為min(2.5te-5,e-4),10 個周期后,學習率每2 個周期衰減0.2;批大小設(shè)置為64,最大迭代周期設(shè)置為13 epochs。實驗結(jié)果取同條件下10 次實驗結(jié)果的平均值,評價指標采用VQA 的準確度指標。
為驗證模型的有效性,將本文DGA 模型結(jié)果與Bottom-up 模型[21]、MFH 模型[16]、BAN 模型[13]、DFAF 模型[15]、MCAN 模型[14]結(jié)果進行對比實驗。實驗結(jié)果如表1 所示。
從表1 中可以看出,本文提出的模型得到的實驗結(jié)果較其他模型有較明顯的提升,總評分比Bottom-up 等模型高出0.35%~5.66%,Yes/No 類提升了0.42%~5.42%,other 類提升了0.39%~5.09%。由于雙引導模型主要針對圖像和問題相對應的問題,因此Number 類型的問題沒有明顯提升。
表1 DGA 模型與其他模型在VQA v2.0 數(shù)據(jù)集上實驗結(jié)果的比較 %
此外,將注意力部分可視化,針對圖9(a),提出問題“What is the food item?”,即“圖片中的食物是什么?”,加入問題引導注意力機制后,模型可以根據(jù)提出的問題準確定位圖片中的物體——披薩(Pizza),從而作出正確回答。
圖9 部分可視化結(jié)果
本文針對視覺問答任務中圖像與問題之間交互性不強的問題,提出了一種圖像與問題雙引導注意力機制視覺問答算法。本文算法通過問題引導圖像和圖像引導問題構(gòu)建多模態(tài)的圖像特征和問題特征,這種交互引導加強了問題和圖像之間的依賴關(guān)系。本文模型在VQA V2.0 數(shù)據(jù)集的Test-dev 上準確率達到70.98%。此外,與其他VQA 方法相比,本文提出的模型在VQA 任務中具有更好的性能。