衡紅軍,范昱辰,王家亮
(中國民航大學 計算機科學與技術學院,天津 300300)
圖像描述是將圖像的視覺內容轉換為符合人類描述習慣的自然語言語句的任務,是一項結合計算機視覺和自然語言處理的多模態任務。圖像描述的挑戰不僅存在于識別圖像中目標與目標之間的關系,而且還存在于不同模態下實現相同語義的轉換以及生成人類描述習慣的句子。
現有的圖像描述生成方法有基于模板的方法[1-2]、基于檢索的方法[3]和基于編碼-解碼的方法。目前主流圖像描述方法傾向于采用基于神經網絡的編碼器-解碼器結構[4-7]。早期圖像描述的編碼器-解碼器結構使用卷積神經網絡(Convolutional Neural Network,CNN)作為編碼器對輸入圖像進行編碼,使用循環神經網絡(Recurrent Neural Network,RNN)作為解碼器對編碼器產生的結果進行解碼。這些方法模型都由一個圖像I作為模型的輸入,每個時間戳產生的單詞的概率P(S|I)作為模型的輸出,最終生成的句子S={W1,W2,…,Wn}為圖像描述語句。
現有的圖像描述模型多采用原始圖像或對原始圖像進行目標檢測得到的目標特征向量作為模型輸入,這2 種方案均致力于更加準確地描述圖像內的關鍵目標,但卻造成了對圖像內部其余信息(圖像背景信息、目標之間的關系信息等)的獲取缺失,導致生成的圖像描述存在誤差和局限性。
為了在準確描述圖像內部目標的同時對圖像內部目標之間的關系進行合理表達,本文提出一種結合目標Transformer 和轉換窗口Transformer 的聯合編碼模型。對于給定圖像,采用本文提出的目標Transformer編碼器編碼目標視覺特征,同時使用轉換窗口Transformer編碼器編碼圖像內部關系特征。本文采用拼接方法將視覺特征與編碼后的圖像內部關系特征進行融合,并對融合后的編碼向量使用Transformer 解碼器解碼,最終生成對應圖像內容的描述。
2014年,谷歌提出了Neural Image Caption Generator[5],這是一個使用CNN 作為編碼器、RNN 作為解碼器的神經網絡模型,展現出了良好的性能。隨著研究的深入,研究者發現人類觀察圖像中的內容時,會從復雜的圖像內容中找出關鍵點,并將注意力集中于此,因此,研究者基于人類注意力機制啟發,設計了加入視覺注意力機制的神經網絡模型[8]用于圖像描述。注意力的加入使模型可以選擇性地關注圖像的特定區域,而不是無偏好地關注整個圖像。JIASEN等[9]注意到在生成描述過程中并非每個單詞均來源于圖像,也有可能來源于已生成的描述本身(如一些介詞、連詞的生成),因此設計了自適應注意力(adaptive attention),讓模型自行選擇應關注于圖像還是描述語句。隨著目標檢測精度的提升,ANDERSON等[10]提出了一種目標檢測引導的注意力機制,它被證明可以提高圖像描述的準確率。
綜上所述,圖像描述任務的研究由剛開始對圖像的無偏關注,到加入注意力機制的輔助,再到目標檢測方法的加入,研究者一直致力于對圖像內目標內容的精確識別。但對于圖像描述任務,不僅僅需要準確描述目標,更需要對目標之間的互動關系進行準確表達,如果目標之間的互動關系表達錯誤,則會造成描述與圖像內容嚴重不符。
2017年,谷歌提出了Transformer 模型[11],用于解決Seq2Seq(Sequence to Sequence)問題。Transformer模型也遵循編碼器-解碼器架構,但模型中編碼器和解碼器沒有使用卷積、池化等網絡架構,而是完全依靠自注意機制的并行化架構來捕捉序列依賴。Transformer在自然語言處理(Neural Language Processing,NLP)任務中取得了優異的成績,但在計算機視覺領域的表現卻不盡如人意。研究者一度認為Transformer模型并不適用于計算機視覺任務,直至ViT(Vision Transformer)[12]模型的出現,才使研究者重新聚焦于Transformer 相關模型。經過長期實踐證明,Transformer 在計算機視覺領域也能取得比傳統CNN 模型更強的性能。2021年,微軟亞洲研究院提出了Swin Transformer[13],其結果比ViT 更好,并明顯優于CNN 模型,這進一步提升了Transformer在計算機視覺領域的應用。通過實驗研究發現,Swin Transformer 不僅在圖像分類任務中表現出色,而且在計算圖像內部的關系方面也有良好的效果。
得益于Transformer近幾年在自然語言處理領域和計算機視覺領域的突出表現,本文借鑒Swin Transformer和基于編碼器-解碼器框架的ViT 的原理,使用與Transformer 相關的多頭注意力機制來處理圖像特征并生成與圖像對應的描述。本文模型總體架構如圖1所示,其具有如下特點:1)使用目標Transformer 對目標檢測得到的局部目標特征進行編碼;2)使用轉換窗口Transformer 對整張圖像內容進行編碼,用于編碼圖像內部潛在的關系信息;3)在解碼過程中,使用Transformer 解碼器代替傳統的RNN 解碼器。

圖1 本文模型簡要結構Fig.1 Brief structure of the proposed model
為了提高圖像描述的準確性,本文從融合不同方面特征表示的角度出發,重新設計了網絡結構,如圖2所示。2.1 節介紹了目標Transformer 編碼器對目標特征進行編碼的方法;2.2 節介紹了轉換窗口Transformer對圖像內部關系特征進行編碼的方法,2.3 節介紹了特征融合以及Transformer 解碼器的解碼方法。

圖2 本文模型詳細結構Fig.2 Detailed structure of the proposed model
首先使用Faster R-CNN[14]對圖像I進行檢測得到圖像的k個區域特征{r1,r2,…,rk},每個圖像特征向量首先通過一個嵌入層進行處理,該層通過一個全連接層將特征向量的尺寸從2 048 維降至512維,然后通過一個ReLU 激活函數和Dropout 層處理后生成的向量作為目標Transformer 編碼器的輸入向量。
目標Transformer 編碼器共有6層,每層由一個多頭注意力層和一個前饋神經網絡組成。集合{x1,x2,…,xN}為經過目標檢測并嵌入后的N個目標特征向量的集合,xn表示為經過目標檢測并嵌入得到的第n個目標所對應的特征向量。所有經過目標檢測并嵌入得到的特征向量所拼接成的矩陣作為第1 個編碼層的輸入,第2~6 個編碼層均使用前一層編碼層的輸出作為輸入。對編碼層中的每個多頭注意力層,每一層中“頭”的數量設為8,為N個特征向量分別計算查詢向量Qo、鍵向量Ko和值向量Vo,計算方法如式(1)所示:

其中:X為包含所有的輸入{x1,x2,…,xN}所拼接成的矩陣;WQo、WKo、WVo為可學習的權重矩陣。
不同的2 個目標區域之間的相關性分數計算方法如式(2)所示:

Ωo為形狀為N×N的權重矩陣,其中的元素ωmn表示為第m個特征區域和第n個特征區域之間的相關性得分。本文對dk的設定與文獻[11]中相同,設為64,代表查詢向量、鍵向量和值向量的維度。
多頭注意力的計算方法如式(3)所示:

由于本節將多頭注意力中“頭”的數量設置為8,因此需要通過式(1)~式(3)重復計算8 次來分別表示8 個“頭”。計算完成后,將各個“頭”矩陣拼接后與可學習的參數矩陣Wo相乘。多頭注意力計算方法如式(4)所示:

殘差結構和層歸一化方法均被應用在多頭注意力層和前饋神經網絡層中,如式(5)~式(7)所示:

式(5)中的參數X為當前層的輸入數據X,最終得到的X作為當前編碼層的輸出。式(6)和式(7)表示將多頭注意力層的輸出X輸入至前饋神經網絡進行計算的計算方法,其中W1、W2和b1、b2分別為可學習的權重和偏置量。
由于Swin Transformer[13]在目標檢測及語義分割任務中均有出色的表現,其中Shift Window 操作可以實現不同窗口內信息的交互,因此本文基于Swin Transformer 的Shift Window思想,設計轉換窗口Transformer 編碼器。
如圖3 所示(彩色效果見《計算機工程》官網Html版),在轉換窗口Transformer 編碼器中,每個轉換窗口Transformer 模塊中含有2 個子模塊,分別為窗口多頭注意力模塊和轉換窗口多頭注意力模塊,與目標Transformer 的設定相同,為減小訓練訓練誤差并消除奇異樣本數據,殘差結構和層歸一化方法均被應用與多頭注意力模塊和轉換窗口多頭注意力模塊。

圖3 Shift Window 方法示意圖Fig.3 Schematic diagram of Shift Window method
為提高計算效率,本文以不重疊的方式將輸入圖像均勻地分割為多個窗口,只在局部窗口內計算自注意力。這樣就導致了窗口之間缺乏信息交互,因此,本文將Swin Transformer 模型中的Shift Window 的思想引入轉換窗口Transformer 編碼器。
如圖3 所示,基于窗口的多頭注意力模塊采用正常的窗口劃分策略,將一個大小為8×8 的圖像均勻地分為2×2 個大小為4×4(M=4)的窗口。為了實現窗口之間信息的交互,本文使用了Shift Window的方法,將像素從規則劃分的窗口中循環替換,實現窗口間內容的交互。在這種轉換之后,一個局部窗口內可能有圖像中的圖連續像素塊組成,因此采用了遮蓋機制,將自注意力的計算限制在每個子窗口內。
在轉換窗口Transformer中,以圖像矩陣作為輸入,首先通過圖像分割層進行處理,窗口集合{y1,y2,…,yM}為輸入圖像中均勻劃分的M個子區域而構成的集合,ym代表第m個劃分的子區域對應的特征向量。為M個窗口子區域分別計算查詢向量Qsw、鍵向量Ksw和值向量Vsw,計算方法如式(8)所示:

其中:Y為包含所有的輸入窗口子區域特征向量{y1,y2,…,yM}所拼接成的矩陣;WQsw、WKsw、WVsw為可學習的權重矩陣。
2 個窗口子區域之間的相關性分數計算方法如式(9)所示:

Ωsw是一個形狀為M×M的權重矩陣,其中的元素ωmn表示第m個窗口子區域和第n個窗口子區域之間的關系得分。d的值為查詢向量與鍵向量之間的維度比,表示為dim(Qsw)/dim(Ksw)。
計算自注意力的方法與目標Transformer 不同,如式(10)所示:

其中:參數B的含義為窗口子區域之間的相對位置偏置量。本文中對B的設定與文獻[13]中相同,存在一個偏差矩陣,B的值取自。
如圖2 所示,轉換窗口Transformer 存在2 個子轉換窗口Transformer 模塊,本文將2 個子轉換窗口Transformer 模塊的“頭”的數量分別設定為6 和12 并進行計算,多頭注意力計算方法如式(11)所示:

其中:N為“頭”的數量;Wsw為可學習的權重矩陣。
轉換窗口Transformer 也使用了殘差結構和層歸一化方法,其方法與2.1 節目標Transformer 所介紹的方法相同,因此不再贅述。
對于目標Transformer 編碼器編碼的目標特征向量X和轉換窗口Transformer 編碼器編碼的關系特征向量Y,本文采用向量拼接的方式將2 個特征向量進行融合,如式(12)所示:

如圖4 所示解碼器結構,編碼結果F作為解碼器的一部分輸入用于計算解碼器中的鍵向量KD和值向量VD,計算方法如式(13)所示:

圖4 Transformer 解碼器結構Fig.4 Transformer decoder structure

其中:WKD、WVD為可學習的權重矩陣,而查詢向量QD需要將之前時間戳生成的單詞經過嵌入后計算多頭注意力得到。在此基礎上,將得到的解碼器查詢向量QD、鍵向量KD和值向量VD計算多頭注意力后送入前饋神經網絡產生輸出,計算多頭注意力的方法與2.1 節中目標Transformer 的多頭注意力計算方法完全相同,因此不再贅述。值得注意的是,解碼器在訓練過程中對輸入單詞采用遮蓋方法計算多頭注意力,這是因為使用了Ground Truth 中包含即將生成的未來信息,而在實際生成文本描述語句過程中是無法預知的,因此使用遮蓋機制保證訓練與測試過程的一致性。
對于解碼器的輸出,經過一個線性層擴展至詞匯表長度后輸入Softmax 分類層進行分類得到當前時間戳的輸出單詞,計算方法如式(14)所示:

其中:Woutput表示解碼器解碼結果;Wnew為當前時間戳生成的單詞。接下來會一直重復解碼過程,直至解碼結果與單詞表中結束符一致,代表該模型對當前圖像的文本描述語句生成完畢。
為了評估本文所提方法的有效性,采用MSCOCO 2014(Common Objects in COntext 2014)[15]數據集進行實驗。MSCOCO 數據集可以用于圖像分類、目標檢測、語義分割、圖像描述等任務。數據集中包含91 類目標、328 000 余張圖像和2 500 000 余個標簽。本文采用文獻[6]中對數據集的劃分方法將數據集分為訓練集、驗證集和測試集,其中包含11 300余張訓練圖像、5 000張驗證圖像和5 000 張測試圖像,每張圖像對應5 句英文描述性語句。
實驗環境使用Ubuntu 18.04 64 位系統,采用PyTorch深度學習框架進行訓練和測試,硬件配置為Intel i9-9900k CPU,Nvidia RTX 2080TI 顯卡(11 GB 顯存)。
為了對本文算法模型的有效性和先進性做出合理評估,實驗采用被廣泛應用于圖像描述的4 個客觀量化評分方法:BLEU-4(BiLingual Evaluation Understudy 4-gram)[16],CIDEr(Consensus-based Image Description Evaluation)[17],METEOR(Metric for Evaluation of Translation with Explicit ORdering)[18],ROUGE-L(Recall-Oriented Understudy for Gisting Evaluation-Longest common subsequence)[19]。
在實驗中,首先對圖像數據進行預處理,按照RGB格式讀取圖片,將圖片調整大小為224×224 像素,使用Imagenet[20]上預訓練的ResNet-101[21]作為基礎的CNN進行圖像的特征提取,使用Faster R-CNN[14]進行目標檢測。使用ResNet-101 的中間特征作為Faster R-CNN的輸入,RPN(Region Proposal Network)為識別的目標生成邊界框,使用非最大抑制法丟棄IoU(Intersectionover-Union)超過閾值0.7 的重疊邊界框,然后使用Rol(Region-of-Interest)池化層將所有的邊界框特征向量轉換為相同維度,剩余的CNN 層被用于預測標簽和細化每個邊界框,最終將所有預測概率值低于閾值0.2 的邊界框丟棄,使用平均池化的方法為剩余的每一個邊界框生成一個2 048 維的向量作為目標Transformer 編碼器的輸入。將調整大小后的圖像作為轉換窗口Transformer 編碼器的輸入,并將轉換窗口Transformer中劃分窗口的長寬值大小設定為4 個像素。
實驗將語料庫規模設為出現頻次超過5 次的單詞并對語料庫中的單詞進行獨熱(one-hot)編碼。分批處理圖像時,單次輸入圖像batch size 數量設為10。使用Dropout舍棄單元來提高模型在數據集上的泛化能力,并將Dropout值設為0.1。在模型訓練過程中使用集束搜索的方法,將beam 的值設為3,同時使用交叉熵損失和文獻[22]中提出的CIDEr-D 優化強化學習方法,定義訓練輪次數為50輪,前30 輪使用交叉熵損失進行訓練,后20輪使用CIDEr-D優化強化學習方法進行訓練。本文使用PyTorch 自帶的Adma(Adaptive Moment Estimation)網絡優化算法,其中將β1和β2的值分別設置為0.9 和0.999。
3.4.1 Transformer 結構有效性分析
為驗證本文采用的Transformer 結構相較于CNN、RNN相關結構的先進性,將本文方法與經典的Up-Down算法[10]進行比較。使用控制變量的思想設計以下消融實驗:1)將編碼器替換為目標Transformer;2)目標Transformer 與ViT 的組合和目標Transformer 和轉換窗口Transformer 的組合,將LSTM 解碼器替換為Transformer解碼器;3)本文方法,即使用目標Tranformer以及轉換窗口Transformer 聯合編碼結構;4)在本文方法基礎上使用beam size 為3 的波束搜索。在相同數據集、相同訓練條件下,使用交叉熵損失對模型訓練30輪,結果如表1 所示。可以看出,將編碼器和解碼器分別替換為Transformer 結構之后,各項指標均有所提升。

表1 使用不同編碼器和解碼器的消融實驗結果對比 Table 1 Comparison of ablation experiment results by using different encoders and decoders %
3.4.2 轉換窗口Transformer 有效性分析
為驗證轉換窗口Transformer提取關系信息的有效性,在實驗中使用無位置編碼的方法和按照目標邊界框由大到小進行位置編碼的方法與轉換Transformer編碼器進行比較。在相同數據集、相同訓練條件下,使用交叉熵損失對模型訓練30輪,結果如表2 所示。可以看出,通過轉換窗口Transformer獲取全局特征的方法,最終的到評價指標CIDEr 的值明顯高于無位置編碼和按邊界框由大到小進行編碼的方法。

表2 不同位置嵌入方式與轉換窗口Transformer 編碼方式消融實驗結果對比 Table 2 Comparison of ablation experiment results between different embedding methods and shift window Transformer encoding method %
3.5.1 定量分析
本文算法與Google NIC(Google Neural Image Caption)[5]、Soft-Atten[8]、Hard-Atten[8]、Deep VS(Deep Visual-Semantic alignments)[6]、MSM(Multimodal Similarity Model)[23]、AFAR(attention feature adaptive recalibration)[24]、ASIA(Attention-guided image captioning)[25]、GO-AMN(Gated Object-Attribute Matching Network)[26]算法的對比結果如表3 所示。可以看出:本文算法的CIDEr達到127.4%,BLUE-4 達到38.6%。METEOR 達到28.7%,ROUGEL 達到58.2%。在相同的數據集、相同的訓練條件下,本文算法的性能指標得分最高。

表3 不同圖像描述算法的實驗結果 Table 3 Experimental results of different image description algorithms %
3.5.2 定性分析
在模型訓練完成后,選取測試集中的圖像結果與基線模型Up-Down 模型的實驗結果以及數據集中給出的標準描述語句作比較,如圖5 所示。可以看出,Up-Down 模型生成的描述和圖像內容具有一定的關聯性,在邏輯上是正確的,而本文提出的模型得到的結果對于圖像細節和圖像內目標之間的關系描述更加準確生動。例如,在第3 幅圖中Up-Down模型生成的“holding a tennis ball”內容與圖像內的視覺信息并不一致,而本文模型生成的“swinging a tennis racket at a tennis ball”對圖像內的視覺信息的描述更加準確,把圖像內目標之間的關系描述得更加生動,再次證明了本文提出的算法捕捉圖像內目標之間關系的有效性。

圖5 生成結果定性對比Fig.5 Qualitative comparison of generation results
本文設計了基于轉換窗口Transformer的圖像描述生成算法。該算法使用目標Transformer 和轉換窗口Transformer 2 個編碼器,分別對Faster R-CNN 目標檢測提取的圖像和整張圖像編碼后進行特征融合,以Transformer 解碼器代替傳統RNN 模型。本文算法的圖像描述效果以及BLEU-4、CIDEr、METEOR、ROUGEL等評價指標,相較于基線模型都取得了較高的得分,其中BLEU-4 和CIDEr 得分達到了38.6%和127.4%。實驗結果表明,本文提出的轉換窗口Transformer 方法提高了模型的圖像內部關系識別能力,提升了描述的準確性,提高了模型的泛化能力。下一步工作是利用Shift Window 方法的優良性能顯式地提取圖像的內部關系,明確圖像內所含關系的具體信息,進一步提高圖像描述模型的內部關系表達能力。