張大任,艾山·吾買爾
(1. 新疆大學信息科學與工程學院,烏魯木齊 830046;2. 新疆大學新疆多語種信息技術實驗室,烏魯木齊 830046)
圖像描述(Image Caption)任務是一個需要綜合計算機視覺和自然語言處理的任務,需要使用計算機建立某種映射方式,讓算法根據輸入的一幅圖自動生成對應的描述性文字。在幫助視覺障礙者理解圖像內容,搜索引擎檢索,低資源機器翻譯上都有較好的應用。
隨著深度學習的出現,在海量圖像描述數據加持下的深度神經網絡自動圖像描述系統取得了接近人類描述圖像能力的優異成績。目前世界上的語言約有7000多種,而具有大量圖像描述的數據的語種僅有英語,大部分其他的語種相關研究進展較慢,跨語言圖像描述效果還不是很明確。隨著社會發展的需要,將圖像描述技術應用于其他語言上的需求越來越大。
圖像描述早期主要是基于模板或語言模型的方法,利用圖像處理方法提取出圖像的特征,得到圖像中可能存在的對象。根據提取出的對象以及它們的屬性利用人為制定的規則來形成對圖像的描述,由于這種方法需要依賴于事先定義的物體、屬性、場景等概念,限制了所產生的描述句子的豐富性。隨著深度學習的快速的發展,基于神經網絡的圖像描述方法有了長足的進步,國內外學者們開始使用神經網絡實現圖像描述。
本文使用幾種不同模型實現圖像描述,對比描述效果。并通過構建Flickr8k[1]多語言數據集實現對包括英文、中文、俄文三種語言的圖像描述,驗證了模型在不同語言上的有效性。
編碼器解碼器模型[2]最初是為了解決自然語言處理中序列生成問題,但其在其他領域有效性也經過多種實驗檢驗,現在編碼器解碼器模型已經作為主流的神經網絡模型,廣泛的應用在深度學習中的方方面面。針對源端和目標端訓練數據長度不對等問題,編碼器解碼器模型將生成任務分為編碼解碼兩個階段,在編碼階段通過編碼器提取源端訓練數據的特征,將其編碼為特征向量C,這個特征向量中保存著源端輸入的所有信息。解碼階段使用解碼器對編碼器生成的特征向量C進行解碼,獲得任務輸出。編碼器和解碼器可以選擇卷積神經網絡或循環神經網絡。
由于圖像描述任務屬于生成任務,輸入的不是自然語言序列,而是一張三維圖像,因此需要通過編碼器提取圖像特征,而卷積神經網絡在圖像信息提取上有天然的優勢,所以在端到端圖像描述中編碼器通常選擇卷積神經網絡。在解碼過程中,圖像描述需要依靠特征向量C生成自然語言描述,而循環神經網絡對于生成不定長的句子時有較好幫助,因此端到端圖像描述的解碼器選擇使用LSTM循環神經網絡。如公式(1)所示,LSTM神經網絡通過當前t時刻的輸入xt,上一時刻的隱藏狀態ht-1及記憶向量mt-1,生成當前時刻隱藏狀態ht來進行模型預測。
ht=LSTM(xt,ht-1,mt-1)
(1)
盡管編碼器解碼器模型簡單有效,但它同樣具有很大的局限性,由于編碼器與解碼器之間唯一聯系就是中間的特征向量C,因此編碼器需要將所有源端序列信息壓縮存放在這固定長度向量中。假如源端序列過長,該向量可能無法完整表示所有源端信息,導致解碼一開始獲得的信息就不全面準確,因此生成質量下降。同時由于解碼器在解碼的每一階段都對特征向量中的值同等對待,然而特征向量中的值在不同的解碼時刻有重要次要之分,因此會導致解碼過程中精度降低。
注意力機制[3]就是為解決編碼器解碼器模型中特征向量信息不足而提出的,解碼過程重要程度差異的問題而提出的。最初同樣是用在機器翻譯領域。隨后研究者將注意力機制引入圖像描述[4],讓模型在輸出描述序列過程中,不只將視線放在全局的特征向量C上,而是劃定注意力范圍,讓解碼器在解碼過程中自主選擇重要部分,讓其生成描述時重點關注正在描述的對象,提高描述的準確性。

圖1 注意力機制
如圖1所示,視覺向量V參與句子生成過程。具體來說就是運用CNN的空間特性,在圖片上提取不同位置的特征(v1…vn),解碼過程中將這些位置特征與當前循環神經網絡輸出通過注意力機制,一起生成目標描述。

圖2 兩種不同的注意力模型結構
注意力機制最重要的是得到上下文向量c,如公式(2-4)所示,先使用解碼器當前隱狀態ht與視覺向量計算中間向量zt,對zt進行歸一化得到注意力權重αt,通過注意力權重αt與視覺向量加權判斷某塊視覺區域v對正在生成單詞的重要程度,即到上下文向量ct,通過ct與ht得到當前輸出。
(2)
αt=softmax(zt)
(3)
(4)
在圖像描述過程中,生成的某些“of”,“from”等非視覺詞更多依賴的是語義信息,而對圖像信息沒有太大的需求,注意圖像信息反而有可能對文字生成產生誤差。因此有人提出自適應注意力模型[5],添加視覺哨兵機制,通過視覺哨兵判斷接下來生成的單詞更多參考圖片信息還是語言信息。如圖2右側所示,St作為視覺哨兵參與注意力計算,St可以通過公式(5-6)計算。
gt=σ(Wxxt+Whht-1)
(5)
st=gt⊙tanh(mt)
(6)
全新注意力機制Transformer[6]自提出以來一直作為自然語言處理中的主流模型,其創造性的使用完全注意力機制替代循環神經網絡,改進了循環神經網絡訓練慢的問題,通過注意力并行訓練提高訓練速度,其關鍵在于使用了多頭注意力,多頭注意力是由多個點積注意力構成,計算公式如(7)所示,首先將輸入通過線性層轉換成Q、K、V向量,使用Q、K向量通過相似度計算得到權重,除于縮放因子dk,之后對權重歸一化,乘以V作為注意力向量。多頭注意力機制計算公式如式(8-9),給定(Q,K,V),使用不同的線性映射分別將Q、K和V映射到不同的空間,然后使用不同的注意力網絡計算得到不同的空間的上下文向量,并將這些上下文向量拼接得到最后的輸出。
(7)
(8)
MultiHead(Q,K,V)=Concat(head1,…,headn)Wo
(9)
本文實驗所用數據集為Flickr8k數據集,作為經典的公開數據集,其包含豐富多樣的圖片,應用于多種圖像描述任務中。Flickr圖像數據來源為雅虎相冊網站Flickr,數據集中圖像數量8000張,每張圖對應5句描述,共40000句描述。按照Karpathy劃分方式劃分,6000張圖作為訓練集,1000張圖驗證集,1000張圖測試集。
但由于該數據及僅包含英文單語圖像描述,本文通過把原始英文翻譯為中俄雙語,將其擴充為英中俄多語言圖像描述數據集,數據集中每張圖對應5句英語,5句漢語,5句俄語。通過對擴充后的Flickr8k多語言數據集訓練,我們可以更清晰地感受不同圖像描述網絡模型在不同語言上的效果。

圖3 數據集樣本展示
圖4展示本文所使用的不同模型結構,所有模型都是基于編碼器解碼器框架,卷積神經網絡可以看做圖像特征提取器,將卷積神經網絡輸出的向量作為特征向量。實現過程中,為了將卷積神經網絡輸出與后續解碼器網絡模型鏈接,需要對輸出的特征向量經線性轉換從而與之后模型維度相同。
圖像通過卷積神經網絡進行特征提取,同樣句子也要通過轉換為向量才好進行后續訓練。借鑒自然語言處理中的方法,我們將句子中的單詞通過構建詞嵌入的方式輸入解碼器,對描述中出現的所有單詞構建詞典。構建好詞嵌入以后就可以將句子輸入LSTM循環神經網絡進行解碼,對于每個時間t,將每個時刻循環神經網絡隱藏層單元輸出ht經過全連接網絡后輸入分類器中,得到生成下一單詞的概率,如圖4中(a)所示,訓練時使用教師強制(Teacher Forcing)方式,將參考句子按順序輸入;解碼器將上一時刻概率最大的單詞作為下一時刻輸入,這就是最經典的Google NIC模型[7]。
通過對NIC模型添加注意力機制,如圖4中(b)中所示,可以有效的提高模型輸出自然語言描述的準確性,并且通過對注意力參數的可視化,我們可以判斷模型在解碼過程中注意力關注圖像的位置,有利于我們對黑箱神經網絡的理解。除最基礎的軟注意力模型外,我們又對注意力結構進行更改,添加自適應性注意力機制,通過對原始注意力權重添加視覺哨兵,將其作為門控機制判斷解碼過程中需要的更多是語義信息還是圖像信息,進一步提高模型準確率,并了解生成過程依賴關系。
除了上述模型,本文還實現了將Transformer圖像描述模型,如圖4中(c)所示,模型中每個塊與塊之間都添加層歸一化和殘差連接,以對輸出進行歸一化,減少訓練過程中的損失,Transformer現在是在自然語言處理任務中的最優模型,所有最優模型都是在Transformer模型基礎上進行改進的。雖然在自然語言處理占有一席之地,但它在圖像方面還未有較多的應用,圖像描述任務作為融合計算機視覺和自然語言處理的綜合性任務,我們嘗試用Transformer模型實現圖像描述,這樣可以驗證這種最新模型在圖像描述領域的效果,并為之后的改進提供方向。

(a)基礎圖像描述模型

(b)添加注意力機制的圖像描述模型

(c)Transformer圖像描述模型
圖像數據在輸入卷積神經網絡前首先處理成相同的3×224×224格式;描述數據在輸入循環神經網絡前要先轉為詞嵌入格式,構建詞嵌入詞典時,中文通過Jieba分詞工具分詞,英文通過Stanford分詞工具分詞,俄語通過空格及標點符號分詞,舍棄詞頻小于3的詞,去掉長度超過50詞的句子,對于去除后不足5句描述的句子,對該圖片的剩余描述隨機抽取補齊5句描述。
由于數據量較小,為防止過擬合,設定詞嵌入維度128,注意力維度同模型內部維度一致為256,批次大小32,訓練50個epoch,連續5個epoch沒有提高,則將編碼器和解碼器的學習率降低,連續15個epoch沒有提高則結束訓練。激活函數使用ReLU,損失使用交叉熵計算。
評估系統的輸出描述是一項艱巨的任務,不僅需要判斷句子相關性,還須判斷語法正確性,通常描述是否正確很難清除的界定。最初評估圖像描述質量的方法是人類專家進行主觀評估,但這通常耗時耗能。隨后自然語言處理領域中的一些技術開始用于評估圖像描述質量。本文中,我們使用BLEU[8]、METEOR[9]、ROUGE-L[10]和CIDEr[11]這四種指標來評估模型性能。
BLEU得分是判斷生成句子和參考句子之間n元組相關性。根據N的取值我們可以得從BLEU-1到BLEU-4的得分;METEOR認為基于召回率的標準比單純基于精度的BLEU更符合人工評判,基于1-gram的精度和召回調和平均;ROUGE-L用于評估文本摘要算法的標準集合,基于最長公共子序列召回率和精確率來計算分值;CIDEr是專門面向圖像描述問題的指標,根據參考描述中視覺無關項詞賦予更低權重。所有指標得分都是越高越好。
本實驗在Ubuntu 18.04、Python 3.7、PyTorch 1.4環境下進行,使用GPU加速工具為CUDA 10.0。使用的CPU為Intel Core i5 9400k@4.1GHz,GPU為NVDIA GTX 2080Ti@11 GB,內存為16 GB。
我們首先選定英文Flick8k數據集,保持模型解碼器不變,通過變換不同的特征提取編碼器及編碼器學習方式,判斷對同一數據集,采用不同的卷積神經網絡提取圖像特征,對圖像描述質量的影響,實驗結果如表1所示。

表1 變換編碼器試驗結果
通過表1實驗結果可以看到,在固定編碼器的情況下,僅使用Flickr8k的圖片數據實現圖像描述效果很差,最大的原因是圖像數據量過小導致訓練后編碼器圖像特征提取能力不足,特征向量信息不足,解碼質量降低。通過遷移學習的方法,預先使用ImageNet對卷積神經網絡進行預訓練,提高特征提取能力,描述生成的質量有了明顯提高。相對于遷移學習的使用,變換編碼器卷積神經網絡的結構效果就沒有那么明顯,但不同的編碼器結構還是有一定差別。
之后我們選取實驗結果最好的卷積神經網絡作為之后模型的編碼器,即使用遷移學習后ResNet101作為圖像描述編碼器,驗證采用不同解碼器模型結構,對圖像描述質量的影響,實驗結果如表2所示。

表2 不同圖像描述模型結果
通過表2的實驗可以看出,注意力機制的添加,對模型生成效果有很大的提升,提高了近4個BLEU值。如圖5所示,通過對注意力機制可視化,我們可以看到模型在生成每個單詞時關注圖像中不同位置,從而提高了描述生成時的質量。通過對注意力模型添加自適應機制,結果又有了些許提高。與傳統CNN+Attention+LSTM結構相比,Transformer的使用能達到與最優效果相當的結果,證明在圖像描述方面,Transformer這種完全注意力機制是值得更進一步研究的。

圖5 注意力分布界面
為了進一步驗證同樣模型針對不同語言是否會產生較明顯結果,本文選取最優模型驗證在不同語言上是否有效,實驗結果如表3所示。

表3 同一模型在不同語言上生成結果
通過表3,對比不同語言我們可以發現,模型在其他語言上質量有所下降,但我們又對模型進行同一張圖片的描述生成對比,結果如圖6所示,發現模型還是可以較為有效地在其他語言上實現圖像描述這項工作。分析評價指標下降的原因應該是在Flickr8k多語言數據集構建上,原始數據集是由以英語為母語的標注者創建的,在訓練過程中生成的更符合英文說話習慣。在將英文翻譯成其他語言過程中,會出現一些語言上的差別,這點在以后的多語言圖像描述方面提供一些參考。

圖6 多語言圖像描述生成
我們通過多種端到端神經網絡模型實現多種語言上的圖像描述。根據不同特征提取編碼器提取的特征,描述可以自動為圖像生成自然語言描述。此外為了生成最佳的圖像描述,我們進行了大量實驗以選擇合適的特征編碼器、解碼器及模型結構。通過實現我們發現,編碼器使用遷移學習訓練過的ResNet101,解碼器使用自適應注意力解碼器在此任務中表現最佳,BLEU-4值達到20.4,CIDEr值達到54。在以后的工作中,我們將不斷收集數據擴種數據集中的樣本數量。此外,我們將繼續探索新方法以生成更準確、更豐富的圖像描述。