張大任,艾山·吾買爾
(1. 新疆大學(xué)信息科學(xué)與工程學(xué)院,烏魯木齊 830046;2. 新疆大學(xué)新疆多語(yǔ)種信息技術(shù)實(shí)驗(yàn)室,烏魯木齊 830046)
圖像描述(Image Caption)任務(wù)是一個(gè)需要綜合計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理的任務(wù),需要使用計(jì)算機(jī)建立某種映射方式,讓算法根據(jù)輸入的一幅圖自動(dòng)生成對(duì)應(yīng)的描述性文字。在幫助視覺(jué)障礙者理解圖像內(nèi)容,搜索引擎檢索,低資源機(jī)器翻譯上都有較好的應(yīng)用。
隨著深度學(xué)習(xí)的出現(xiàn),在海量圖像描述數(shù)據(jù)加持下的深度神經(jīng)網(wǎng)絡(luò)自動(dòng)圖像描述系統(tǒng)取得了接近人類描述圖像能力的優(yōu)異成績(jī)。目前世界上的語(yǔ)言約有7000多種,而具有大量圖像描述的數(shù)據(jù)的語(yǔ)種僅有英語(yǔ),大部分其他的語(yǔ)種相關(guān)研究進(jìn)展較慢,跨語(yǔ)言圖像描述效果還不是很明確。隨著社會(huì)發(fā)展的需要,將圖像描述技術(shù)應(yīng)用于其他語(yǔ)言上的需求越來(lái)越大。
圖像描述早期主要是基于模板或語(yǔ)言模型的方法,利用圖像處理方法提取出圖像的特征,得到圖像中可能存在的對(duì)象。根據(jù)提取出的對(duì)象以及它們的屬性利用人為制定的規(guī)則來(lái)形成對(duì)圖像的描述,由于這種方法需要依賴于事先定義的物體、屬性、場(chǎng)景等概念,限制了所產(chǎn)生的描述句子的豐富性。隨著深度學(xué)習(xí)的快速的發(fā)展,基于神經(jīng)網(wǎng)絡(luò)的圖像描述方法有了長(zhǎng)足的進(jìn)步,國(guó)內(nèi)外學(xué)者們開始使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)圖像描述。
本文使用幾種不同模型實(shí)現(xiàn)圖像描述,對(duì)比描述效果。并通過(guò)構(gòu)建Flickr8k[1]多語(yǔ)言數(shù)據(jù)集實(shí)現(xiàn)對(duì)包括英文、中文、俄文三種語(yǔ)言的圖像描述,驗(yàn)證了模型在不同語(yǔ)言上的有效性。
編碼器解碼器模型[2]最初是為了解決自然語(yǔ)言處理中序列生成問(wèn)題,但其在其他領(lǐng)域有效性也經(jīng)過(guò)多種實(shí)驗(yàn)檢驗(yàn),現(xiàn)在編碼器解碼器模型已經(jīng)作為主流的神經(jīng)網(wǎng)絡(luò)模型,廣泛的應(yīng)用在深度學(xué)習(xí)中的方方面面。針對(duì)源端和目標(biāo)端訓(xùn)練數(shù)據(jù)長(zhǎng)度不對(duì)等問(wèn)題,編碼器解碼器模型將生成任務(wù)分為編碼解碼兩個(gè)階段,在編碼階段通過(guò)編碼器提取源端訓(xùn)練數(shù)據(jù)的特征,將其編碼為特征向量C,這個(gè)特征向量中保存著源端輸入的所有信息。解碼階段使用解碼器對(duì)編碼器生成的特征向量C進(jìn)行解碼,獲得任務(wù)輸出。編碼器和解碼器可以選擇卷積神經(jīng)網(wǎng)絡(luò)或循環(huán)神經(jīng)網(wǎng)絡(luò)。
由于圖像描述任務(wù)屬于生成任務(wù),輸入的不是自然語(yǔ)言序列,而是一張三維圖像,因此需要通過(guò)編碼器提取圖像特征,而卷積神經(jīng)網(wǎng)絡(luò)在圖像信息提取上有天然的優(yōu)勢(shì),所以在端到端圖像描述中編碼器通常選擇卷積神經(jīng)網(wǎng)絡(luò)。在解碼過(guò)程中,圖像描述需要依靠特征向量C生成自然語(yǔ)言描述,而循環(huán)神經(jīng)網(wǎng)絡(luò)對(duì)于生成不定長(zhǎng)的句子時(shí)有較好幫助,因此端到端圖像描述的解碼器選擇使用LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)。如公式(1)所示,LSTM神經(jīng)網(wǎng)絡(luò)通過(guò)當(dāng)前t時(shí)刻的輸入xt,上一時(shí)刻的隱藏狀態(tài)ht-1及記憶向量mt-1,生成當(dāng)前時(shí)刻隱藏狀態(tài)ht來(lái)進(jìn)行模型預(yù)測(cè)。
ht=LSTM(xt,ht-1,mt-1)
(1)
盡管編碼器解碼器模型簡(jiǎn)單有效,但它同樣具有很大的局限性,由于編碼器與解碼器之間唯一聯(lián)系就是中間的特征向量C,因此編碼器需要將所有源端序列信息壓縮存放在這固定長(zhǎng)度向量中。假如源端序列過(guò)長(zhǎng),該向量可能無(wú)法完整表示所有源端信息,導(dǎo)致解碼一開始獲得的信息就不全面準(zhǔn)確,因此生成質(zhì)量下降。同時(shí)由于解碼器在解碼的每一階段都對(duì)特征向量中的值同等對(duì)待,然而特征向量中的值在不同的解碼時(shí)刻有重要次要之分,因此會(huì)導(dǎo)致解碼過(guò)程中精度降低。
注意力機(jī)制[3]就是為解決編碼器解碼器模型中特征向量信息不足而提出的,解碼過(guò)程重要程度差異的問(wèn)題而提出的。最初同樣是用在機(jī)器翻譯領(lǐng)域。隨后研究者將注意力機(jī)制引入圖像描述[4],讓模型在輸出描述序列過(guò)程中,不只將視線放在全局的特征向量C上,而是劃定注意力范圍,讓解碼器在解碼過(guò)程中自主選擇重要部分,讓其生成描述時(shí)重點(diǎn)關(guān)注正在描述的對(duì)象,提高描述的準(zhǔn)確性。
圖1 注意力機(jī)制
如圖1所示,視覺(jué)向量V參與句子生成過(guò)程。具體來(lái)說(shuō)就是運(yùn)用CNN的空間特性,在圖片上提取不同位置的特征(v1…vn),解碼過(guò)程中將這些位置特征與當(dāng)前循環(huán)神經(jīng)網(wǎng)絡(luò)輸出通過(guò)注意力機(jī)制,一起生成目標(biāo)描述。
圖2 兩種不同的注意力模型結(jié)構(gòu)
注意力機(jī)制最重要的是得到上下文向量c,如公式(2-4)所示,先使用解碼器當(dāng)前隱狀態(tài)ht與視覺(jué)向量計(jì)算中間向量zt,對(duì)zt進(jìn)行歸一化得到注意力權(quán)重αt,通過(guò)注意力權(quán)重αt與視覺(jué)向量加權(quán)判斷某塊視覺(jué)區(qū)域v對(duì)正在生成單詞的重要程度,即到上下文向量ct,通過(guò)ct與ht得到當(dāng)前輸出。
(2)
αt=softmax(zt)
(3)
(4)
在圖像描述過(guò)程中,生成的某些“of”,“from”等非視覺(jué)詞更多依賴的是語(yǔ)義信息,而對(duì)圖像信息沒(méi)有太大的需求,注意圖像信息反而有可能對(duì)文字生成產(chǎn)生誤差。因此有人提出自適應(yīng)注意力模型[5],添加視覺(jué)哨兵機(jī)制,通過(guò)視覺(jué)哨兵判斷接下來(lái)生成的單詞更多參考圖片信息還是語(yǔ)言信息。如圖2右側(cè)所示,St作為視覺(jué)哨兵參與注意力計(jì)算,St可以通過(guò)公式(5-6)計(jì)算。
gt=σ(Wxxt+Whht-1)
(5)
st=gt⊙tanh(mt)
(6)
全新注意力機(jī)制Transformer[6]自提出以來(lái)一直作為自然語(yǔ)言處理中的主流模型,其創(chuàng)造性的使用完全注意力機(jī)制替代循環(huán)神經(jīng)網(wǎng)絡(luò),改進(jìn)了循環(huán)神經(jīng)網(wǎng)絡(luò)訓(xùn)練慢的問(wèn)題,通過(guò)注意力并行訓(xùn)練提高訓(xùn)練速度,其關(guān)鍵在于使用了多頭注意力,多頭注意力是由多個(gè)點(diǎn)積注意力構(gòu)成,計(jì)算公式如(7)所示,首先將輸入通過(guò)線性層轉(zhuǎn)換成Q、K、V向量,使用Q、K向量通過(guò)相似度計(jì)算得到權(quán)重,除于縮放因子dk,之后對(duì)權(quán)重歸一化,乘以V作為注意力向量。多頭注意力機(jī)制計(jì)算公式如式(8-9),給定(Q,K,V),使用不同的線性映射分別將Q、K和V映射到不同的空間,然后使用不同的注意力網(wǎng)絡(luò)計(jì)算得到不同的空間的上下文向量,并將這些上下文向量拼接得到最后的輸出。
(7)
(8)
MultiHead(Q,K,V)=Concat(head1,…,headn)Wo
(9)
本文實(shí)驗(yàn)所用數(shù)據(jù)集為Flickr8k數(shù)據(jù)集,作為經(jīng)典的公開數(shù)據(jù)集,其包含豐富多樣的圖片,應(yīng)用于多種圖像描述任務(wù)中。Flickr圖像數(shù)據(jù)來(lái)源為雅虎相冊(cè)網(wǎng)站Flickr,數(shù)據(jù)集中圖像數(shù)量8000張,每張圖對(duì)應(yīng)5句描述,共40000句描述。按照Karpathy劃分方式劃分,6000張圖作為訓(xùn)練集,1000張圖驗(yàn)證集,1000張圖測(cè)試集。
但由于該數(shù)據(jù)及僅包含英文單語(yǔ)圖像描述,本文通過(guò)把原始英文翻譯為中俄雙語(yǔ),將其擴(kuò)充為英中俄多語(yǔ)言圖像描述數(shù)據(jù)集,數(shù)據(jù)集中每張圖對(duì)應(yīng)5句英語(yǔ),5句漢語(yǔ),5句俄語(yǔ)。通過(guò)對(duì)擴(kuò)充后的Flickr8k多語(yǔ)言數(shù)據(jù)集訓(xùn)練,我們可以更清晰地感受不同圖像描述網(wǎng)絡(luò)模型在不同語(yǔ)言上的效果。
圖3 數(shù)據(jù)集樣本展示
圖4展示本文所使用的不同模型結(jié)構(gòu),所有模型都是基于編碼器解碼器框架,卷積神經(jīng)網(wǎng)絡(luò)可以看做圖像特征提取器,將卷積神經(jīng)網(wǎng)絡(luò)輸出的向量作為特征向量。實(shí)現(xiàn)過(guò)程中,為了將卷積神經(jīng)網(wǎng)絡(luò)輸出與后續(xù)解碼器網(wǎng)絡(luò)模型鏈接,需要對(duì)輸出的特征向量經(jīng)線性轉(zhuǎn)換從而與之后模型維度相同。
圖像通過(guò)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,同樣句子也要通過(guò)轉(zhuǎn)換為向量才好進(jìn)行后續(xù)訓(xùn)練。借鑒自然語(yǔ)言處理中的方法,我們將句子中的單詞通過(guò)構(gòu)建詞嵌入的方式輸入解碼器,對(duì)描述中出現(xiàn)的所有單詞構(gòu)建詞典。構(gòu)建好詞嵌入以后就可以將句子輸入LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行解碼,對(duì)于每個(gè)時(shí)間t,將每個(gè)時(shí)刻循環(huán)神經(jīng)網(wǎng)絡(luò)隱藏層單元輸出ht經(jīng)過(guò)全連接網(wǎng)絡(luò)后輸入分類器中,得到生成下一單詞的概率,如圖4中(a)所示,訓(xùn)練時(shí)使用教師強(qiáng)制(Teacher Forcing)方式,將參考句子按順序輸入;解碼器將上一時(shí)刻概率最大的單詞作為下一時(shí)刻輸入,這就是最經(jīng)典的Google NIC模型[7]。
通過(guò)對(duì)NIC模型添加注意力機(jī)制,如圖4中(b)中所示,可以有效的提高模型輸出自然語(yǔ)言描述的準(zhǔn)確性,并且通過(guò)對(duì)注意力參數(shù)的可視化,我們可以判斷模型在解碼過(guò)程中注意力關(guān)注圖像的位置,有利于我們對(duì)黑箱神經(jīng)網(wǎng)絡(luò)的理解。除最基礎(chǔ)的軟注意力模型外,我們又對(duì)注意力結(jié)構(gòu)進(jìn)行更改,添加自適應(yīng)性注意力機(jī)制,通過(guò)對(duì)原始注意力權(quán)重添加視覺(jué)哨兵,將其作為門控機(jī)制判斷解碼過(guò)程中需要的更多是語(yǔ)義信息還是圖像信息,進(jìn)一步提高模型準(zhǔn)確率,并了解生成過(guò)程依賴關(guān)系。
除了上述模型,本文還實(shí)現(xiàn)了將Transformer圖像描述模型,如圖4中(c)所示,模型中每個(gè)塊與塊之間都添加層歸一化和殘差連接,以對(duì)輸出進(jìn)行歸一化,減少訓(xùn)練過(guò)程中的損失,Transformer現(xiàn)在是在自然語(yǔ)言處理任務(wù)中的最優(yōu)模型,所有最優(yōu)模型都是在Transformer模型基礎(chǔ)上進(jìn)行改進(jìn)的。雖然在自然語(yǔ)言處理占有一席之地,但它在圖像方面還未有較多的應(yīng)用,圖像描述任務(wù)作為融合計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理的綜合性任務(wù),我們嘗試用Transformer模型實(shí)現(xiàn)圖像描述,這樣可以驗(yàn)證這種最新模型在圖像描述領(lǐng)域的效果,并為之后的改進(jìn)提供方向。
(a)基礎(chǔ)圖像描述模型
(b)添加注意力機(jī)制的圖像描述模型
(c)Transformer圖像描述模型
圖像數(shù)據(jù)在輸入卷積神經(jīng)網(wǎng)絡(luò)前首先處理成相同的3×224×224格式;描述數(shù)據(jù)在輸入循環(huán)神經(jīng)網(wǎng)絡(luò)前要先轉(zhuǎn)為詞嵌入格式,構(gòu)建詞嵌入詞典時(shí),中文通過(guò)Jieba分詞工具分詞,英文通過(guò)Stanford分詞工具分詞,俄語(yǔ)通過(guò)空格及標(biāo)點(diǎn)符號(hào)分詞,舍棄詞頻小于3的詞,去掉長(zhǎng)度超過(guò)50詞的句子,對(duì)于去除后不足5句描述的句子,對(duì)該圖片的剩余描述隨機(jī)抽取補(bǔ)齊5句描述。
由于數(shù)據(jù)量較小,為防止過(guò)擬合,設(shè)定詞嵌入維度128,注意力維度同模型內(nèi)部維度一致為256,批次大小32,訓(xùn)練50個(gè)epoch,連續(xù)5個(gè)epoch沒(méi)有提高,則將編碼器和解碼器的學(xué)習(xí)率降低,連續(xù)15個(gè)epoch沒(méi)有提高則結(jié)束訓(xùn)練。激活函數(shù)使用ReLU,損失使用交叉熵計(jì)算。
評(píng)估系統(tǒng)的輸出描述是一項(xiàng)艱巨的任務(wù),不僅需要判斷句子相關(guān)性,還須判斷語(yǔ)法正確性,通常描述是否正確很難清除的界定。最初評(píng)估圖像描述質(zhì)量的方法是人類專家進(jìn)行主觀評(píng)估,但這通常耗時(shí)耗能。隨后自然語(yǔ)言處理領(lǐng)域中的一些技術(shù)開始用于評(píng)估圖像描述質(zhì)量。本文中,我們使用BLEU[8]、METEOR[9]、ROUGE-L[10]和CIDEr[11]這四種指標(biāo)來(lái)評(píng)估模型性能。
BLEU得分是判斷生成句子和參考句子之間n元組相關(guān)性。根據(jù)N的取值我們可以得從BLEU-1到BLEU-4的得分;METEOR認(rèn)為基于召回率的標(biāo)準(zhǔn)比單純基于精度的BLEU更符合人工評(píng)判,基于1-gram的精度和召回調(diào)和平均;ROUGE-L用于評(píng)估文本摘要算法的標(biāo)準(zhǔn)集合,基于最長(zhǎng)公共子序列召回率和精確率來(lái)計(jì)算分值;CIDEr是專門面向圖像描述問(wèn)題的指標(biāo),根據(jù)參考描述中視覺(jué)無(wú)關(guān)項(xiàng)詞賦予更低權(quán)重。所有指標(biāo)得分都是越高越好。
本實(shí)驗(yàn)在Ubuntu 18.04、Python 3.7、PyTorch 1.4環(huán)境下進(jìn)行,使用GPU加速工具為CUDA 10.0。使用的CPU為Intel Core i5 9400k@4.1GHz,GPU為NVDIA GTX 2080Ti@11 GB,內(nèi)存為16 GB。
我們首先選定英文Flick8k數(shù)據(jù)集,保持模型解碼器不變,通過(guò)變換不同的特征提取編碼器及編碼器學(xué)習(xí)方式,判斷對(duì)同一數(shù)據(jù)集,采用不同的卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征,對(duì)圖像描述質(zhì)量的影響,實(shí)驗(yàn)結(jié)果如表1所示。
表1 變換編碼器試驗(yàn)結(jié)果
通過(guò)表1實(shí)驗(yàn)結(jié)果可以看到,在固定編碼器的情況下,僅使用Flickr8k的圖片數(shù)據(jù)實(shí)現(xiàn)圖像描述效果很差,最大的原因是圖像數(shù)據(jù)量過(guò)小導(dǎo)致訓(xùn)練后編碼器圖像特征提取能力不足,特征向量信息不足,解碼質(zhì)量降低。通過(guò)遷移學(xué)習(xí)的方法,預(yù)先使用ImageNet對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,提高特征提取能力,描述生成的質(zhì)量有了明顯提高。相對(duì)于遷移學(xué)習(xí)的使用,變換編碼器卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)效果就沒(méi)有那么明顯,但不同的編碼器結(jié)構(gòu)還是有一定差別。
之后我們選取實(shí)驗(yàn)結(jié)果最好的卷積神經(jīng)網(wǎng)絡(luò)作為之后模型的編碼器,即使用遷移學(xué)習(xí)后ResNet101作為圖像描述編碼器,驗(yàn)證采用不同解碼器模型結(jié)構(gòu),對(duì)圖像描述質(zhì)量的影響,實(shí)驗(yàn)結(jié)果如表2所示。
表2 不同圖像描述模型結(jié)果
通過(guò)表2的實(shí)驗(yàn)可以看出,注意力機(jī)制的添加,對(duì)模型生成效果有很大的提升,提高了近4個(gè)BLEU值。如圖5所示,通過(guò)對(duì)注意力機(jī)制可視化,我們可以看到模型在生成每個(gè)單詞時(shí)關(guān)注圖像中不同位置,從而提高了描述生成時(shí)的質(zhì)量。通過(guò)對(duì)注意力模型添加自適應(yīng)機(jī)制,結(jié)果又有了些許提高。與傳統(tǒng)CNN+Attention+LSTM結(jié)構(gòu)相比,Transformer的使用能達(dá)到與最優(yōu)效果相當(dāng)?shù)慕Y(jié)果,證明在圖像描述方面,Transformer這種完全注意力機(jī)制是值得更進(jìn)一步研究的。
圖5 注意力分布界面
為了進(jìn)一步驗(yàn)證同樣模型針對(duì)不同語(yǔ)言是否會(huì)產(chǎn)生較明顯結(jié)果,本文選取最優(yōu)模型驗(yàn)證在不同語(yǔ)言上是否有效,實(shí)驗(yàn)結(jié)果如表3所示。
表3 同一模型在不同語(yǔ)言上生成結(jié)果
通過(guò)表3,對(duì)比不同語(yǔ)言我們可以發(fā)現(xiàn),模型在其他語(yǔ)言上質(zhì)量有所下降,但我們又對(duì)模型進(jìn)行同一張圖片的描述生成對(duì)比,結(jié)果如圖6所示,發(fā)現(xiàn)模型還是可以較為有效地在其他語(yǔ)言上實(shí)現(xiàn)圖像描述這項(xiàng)工作。分析評(píng)價(jià)指標(biāo)下降的原因應(yīng)該是在Flickr8k多語(yǔ)言數(shù)據(jù)集構(gòu)建上,原始數(shù)據(jù)集是由以英語(yǔ)為母語(yǔ)的標(biāo)注者創(chuàng)建的,在訓(xùn)練過(guò)程中生成的更符合英文說(shuō)話習(xí)慣。在將英文翻譯成其他語(yǔ)言過(guò)程中,會(huì)出現(xiàn)一些語(yǔ)言上的差別,這點(diǎn)在以后的多語(yǔ)言圖像描述方面提供一些參考。
圖6 多語(yǔ)言圖像描述生成
我們通過(guò)多種端到端神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)多種語(yǔ)言上的圖像描述。根據(jù)不同特征提取編碼器提取的特征,描述可以自動(dòng)為圖像生成自然語(yǔ)言描述。此外為了生成最佳的圖像描述,我們進(jìn)行了大量實(shí)驗(yàn)以選擇合適的特征編碼器、解碼器及模型結(jié)構(gòu)。通過(guò)實(shí)現(xiàn)我們發(fā)現(xiàn),編碼器使用遷移學(xué)習(xí)訓(xùn)練過(guò)的ResNet101,解碼器使用自適應(yīng)注意力解碼器在此任務(wù)中表現(xiàn)最佳,BLEU-4值達(dá)到20.4,CIDEr值達(dá)到54。在以后的工作中,我們將不斷收集數(shù)據(jù)擴(kuò)種數(shù)據(jù)集中的樣本數(shù)量。此外,我們將繼續(xù)探索新方法以生成更準(zhǔn)確、更豐富的圖像描述。