高逸凡,王 勇
(北京工業(yè)大學(xué)信息學(xué)部,北京 100124)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展、數(shù)碼設(shè)備的普及以及圖像數(shù)據(jù)的迅速增長(zhǎng),使用純?nèi)斯な侄螌?duì)圖像內(nèi)容進(jìn)行鑒別已經(jīng)成為一項(xiàng)艱難的工作。因此,如何通過(guò)計(jì)算機(jī)自動(dòng)提取圖像所表達(dá)的信息,成為圖像理解領(lǐng)域的研究熱點(diǎn)[1]。圖像描述生成是融合了自然語(yǔ)言處理和計(jì)算機(jī)視覺(jué)的一項(xiàng)較為綜合的任務(wù),目的是將視覺(jué)圖像和語(yǔ)言文字聯(lián)系起來(lái),通過(guò)對(duì)所輸入的圖像進(jìn)行特征提取分析,自動(dòng)生成一段關(guān)于圖像內(nèi)容的文字描述。圖像描述生成能夠完成從圖像到文本信息的轉(zhuǎn)換,可以應(yīng)用到圖像檢索、機(jī)器人問(wèn)答、輔助兒童教育及導(dǎo)盲等多個(gè)領(lǐng)域,對(duì)圖像理解的研究具有重要的現(xiàn)實(shí)意義[2]。
圖像描述生成的核心是在圖像處理分析的基礎(chǔ)上,結(jié)合計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理等相關(guān)理論,進(jìn)而分析、理解圖像內(nèi)容,并以文本語(yǔ)義信息的形式反饋給人類。因此計(jì)算機(jī)對(duì)圖像內(nèi)容理解的完成不僅需要圖像標(biāo)注,還需要圖像描述。圖像描述的任務(wù)是使用自然語(yǔ)言處理技術(shù)分析并產(chǎn)生標(biāo)注詞,進(jìn)而將生成的標(biāo)注詞組合為自然語(yǔ)言的描述語(yǔ)句。近年來(lái),圖像描述引起了學(xué)術(shù)界的極大興趣,比起傳統(tǒng)的圖像標(biāo)注工作,它具有更廣闊的應(yīng)用前景。
圖像描述生成克服了人類主觀認(rèn)識(shí)的固有限制,借助計(jì)算機(jī)軟件從一幅或多幅圖像序列中生成與圖像內(nèi)容相關(guān)的文字描述。圖像描述的質(zhì)量主要取決于以下2個(gè)方面:一是對(duì)圖像中所包含的物體及場(chǎng)景的識(shí)別能力;二是對(duì)物體間相互聯(lián)系等信息的認(rèn)知程度。按照?qǐng)D像描述模型的不同,圖像描述方法可以分為3類:1)基于模板的方法,該方法生成的圖像描述依賴于模板類型,形式也較為單一;2)基于檢索的方法,該方法依賴于數(shù)據(jù)集中現(xiàn)存的描述語(yǔ)句,無(wú)法生成較為新穎的圖像描述;3)基于神經(jīng)網(wǎng)絡(luò)的方法,該方法將卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[3]與循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[4]相結(jié)合,使用端對(duì)端的方法訓(xùn)練模型,利用CNN提取特征的優(yōu)勢(shì)和RNN處理文字序列的優(yōu)勢(shì),共同指導(dǎo)圖像描述語(yǔ)句的生成[5]。此類方法是目前比較先進(jìn)的圖像描述生成方法,該方法克服了圖像描述生成過(guò)程中生成的句式過(guò)于簡(jiǎn)單,輸出嚴(yán)重依賴現(xiàn)存語(yǔ)句模板的問(wèn)題,可以生成語(yǔ)法流暢,句式復(fù)雜多變的描述語(yǔ)句。但與此同時(shí),卻帶來(lái)了新的問(wèn)題:圖像描述生成的描述語(yǔ)句與圖片的關(guān)聯(lián)度有所下降。所以本文設(shè)計(jì)一種新的圖像描述模型,在之前端對(duì)端的Encoder-Decoder[6]結(jié)構(gòu)基礎(chǔ)上融合了圖像目標(biāo)檢測(cè)算法,使生成的描述語(yǔ)句中所有的名詞均依賴于目標(biāo)檢測(cè)結(jié)果,從而提高了描述語(yǔ)句與原圖像的關(guān)聯(lián)度。
本文設(shè)計(jì)一種基于目標(biāo)檢測(cè)與詞性分析的圖像描述算法,并訓(xùn)練此算法對(duì)應(yīng)的模型使其可以根據(jù)圖像生成相應(yīng)的語(yǔ)言描述。模型的整體結(jié)構(gòu)如圖1所示。模型主要通過(guò)目標(biāo)檢測(cè)算法提取圖像中各目標(biāo)區(qū)域的特征,然后通過(guò)循環(huán)神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測(cè)算法生成的所有目標(biāo)區(qū)域中選擇一個(gè)或多個(gè)目標(biāo)區(qū)域作為下一個(gè)描述詞匯生成的依據(jù),然后將其輸入到相關(guān)語(yǔ)言模型中,生成相應(yīng)的詞匯。
圖1 整體結(jié)構(gòu)圖
本文構(gòu)建的圖像描述算法主要由圖像信息提取和語(yǔ)言模型構(gòu)成。
本文選擇目標(biāo)檢測(cè)模型Faster R-CNN[7]進(jìn)行圖像信息的初步提取。如圖2所示,在結(jié)構(gòu)上,F(xiàn)aster R-CNN已經(jīng)將特征提取(feature extraction)、候選目標(biāo)區(qū)域(proposal region)提取、邊界框回歸(bounding box regression)和分類(classification)都整合在一個(gè)網(wǎng)絡(luò)中,使得其綜合性能有了較大的提高,在檢測(cè)速度方面尤為明顯。本文選取目標(biāo)檢測(cè)模型Faster R-CNN中ROI Pooling層輸出的各目標(biāo)候選區(qū)域特征向量{v1,v2,v3,…,vn}及其對(duì)應(yīng)的類別標(biāo)簽{l1,l2,l3,…,ln}作為對(duì)圖片信息的初步提取,在語(yǔ)言模型中,將會(huì)對(duì)提取到的數(shù)據(jù)進(jìn)行處理,生成描述語(yǔ)句。
本文設(shè)計(jì)的語(yǔ)言模型主要由4個(gè)部分構(gòu)成,分別為特征選擇、名詞模塊、句型模塊和詞性分析。在預(yù)測(cè)的過(guò)程中,特征選擇模塊結(jié)合生成的文本上下文內(nèi)容,對(duì)目標(biāo)檢測(cè)提取到的目標(biāo)特征向量進(jìn)行融合,將融合后的特征向量分別輸入名詞模塊與句型模塊,名詞模塊主要用于生成描述語(yǔ)句中與目標(biāo)檢測(cè)結(jié)果相對(duì)應(yīng)的名詞(下文簡(jiǎn)稱目標(biāo)名詞),句式模塊主要用于生成描述語(yǔ)句中除目標(biāo)名詞外的其他詞匯和句型的整體結(jié)構(gòu)。名詞模塊與句型模塊生成描述單詞后,使用詞性分析模塊結(jié)合上下文特征對(duì)生成的2個(gè)單詞進(jìn)行選擇。下面舉例說(shuō)明語(yǔ)言模型如何通過(guò)這4個(gè)部分生成完整的圖片描述語(yǔ)句。
如圖3所示,首先向模型輸入圖片,經(jīng)過(guò)Faster R-CNN運(yùn)算后,得到圖片中各目標(biāo)的特征向量和類別標(biāo)簽。圖3中圖片經(jīng)過(guò)目標(biāo)檢測(cè)后,得到8個(gè)特征向量和類別標(biāo)簽,分別對(duì)應(yīng)圖片中的8個(gè)物體。接下來(lái)向語(yǔ)言模塊輸入開(kāi)始符“<”模型即開(kāi)始計(jì)算第一個(gè)單詞,特征選擇模塊依據(jù)上下文融合各目標(biāo)特征向量后,將生成的目標(biāo)特征向量分別輸入句型模塊和名詞模塊。句型模塊依據(jù)上下文計(jì)算出單詞“a”,名詞模塊計(jì)算出單詞“dog”,由詞性分析模塊結(jié)合上下文對(duì)2個(gè)單詞進(jìn)行篩選,最終選擇并輸出詞匯“a”,模型判斷輸出的單詞“a”不是終止單詞,故將“a”重新輸入特征選擇模塊,進(jìn)行新一輪預(yù)測(cè)并輸出“dog”,最終模型在輸入motorcycle時(shí),輸出終止符“>”,本次預(yù)測(cè)過(guò)程結(jié)束。
圖3 模型描述實(shí)例
如圖4所示,語(yǔ)言模型中的特征選擇部分由帶有Attention[8]的LSTM(Long Short-Term Memory)[9]構(gòu)成,Object Attention和Language LSTM相互配合并結(jié)合上下文融合各個(gè)目標(biāo)特征向量,句型模塊由LSTM構(gòu)成,名詞模塊由GRU(Gated Recurrent Unit)[10]構(gòu)成。詞性分析部分由Attention機(jī)制“Word Attention”構(gòu)成。下面詳細(xì)介紹,算法中所有模塊計(jì)算描述語(yǔ)句時(shí),生成單詞的計(jì)算過(guò)程。
圖4 語(yǔ)言模塊結(jié)構(gòu)圖
(1)
(2)
(3)
(4)
(5)
(6)
Object Attention模塊的輸出分為2個(gè)部分,一部分作為名詞模塊的輸入,用于計(jì)算目標(biāo)檢測(cè)算法對(duì)應(yīng)的名詞;另一部分作為句型模塊的輸入,用于計(jì)算描述語(yǔ)句中非目標(biāo)名詞的詞匯。
(7)
lab=limax
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
算法1圖像描述生成算法
輸入:圖片i
輸出:描述語(yǔ)句y
1 將圖片i輸入Faster-RCNN,得到圖片內(nèi)各目標(biāo)的特征向量v和列表標(biāo)簽l,初始化表示描述語(yǔ)句的單詞隊(duì)列y為空隊(duì)列。
2 向語(yǔ)言模塊輸入前一時(shí)刻預(yù)測(cè)輸出的單詞編碼Πt-1(首次為開(kāi)始符“<”),根據(jù)上下文融合各目標(biāo)特征向量,計(jì)算過(guò)程如式(3)~式(6)所示。
3 使用名詞模塊計(jì)算名詞編碼,計(jì)算過(guò)程如式(7)~式(12)所示。
4 使用句型模塊計(jì)算其他詞匯編碼,計(jì)算過(guò)程如式(13)~式(15)所示。
5 使用詞性分析模塊,根據(jù)上下文選擇已預(yù)測(cè)出的單詞,計(jì)算過(guò)程如式(15)~式(18)所示。
6 判斷最終輸出的單詞是否為停止符,如果不是停止符“>”,將輸出的單詞yt加入y中,并跳轉(zhuǎn)至第2步,否則返回y,并退出。
本模型在訓(xùn)練過(guò)程中,采用的損失函數(shù)分為2個(gè)部分,分別用于計(jì)算模型在預(yù)測(cè)名詞時(shí)的準(zhǔn)確率和預(yù)測(cè)其他詞匯時(shí)的準(zhǔn)確率,計(jì)算過(guò)程如式(19)~式(21)所示:
(19)
(20)
(21)
本文數(shù)據(jù)集選取通用圖像理解/描述生成的競(jìng)賽數(shù)據(jù)集MS COCO[14],該數(shù)據(jù)集中有20 GB左右的圖片和500 MB左右的標(biāo)簽文件。標(biāo)簽文件標(biāo)記了每個(gè)圖片中各目標(biāo)的精確坐標(biāo)及其英文描述。本文統(tǒng)計(jì)了MS COCO數(shù)據(jù)集中所有英文描述的詞性,詞性分布如圖5所示。其中,名詞占所有詞匯的比重最大(名詞n.,介詞prep.,連詞conj.,動(dòng)詞v.,形容詞adj.,副詞adv.,代詞pron.,數(shù)量詞num.)。
圖5 數(shù)據(jù)集詞性
本文在預(yù)處理過(guò)程中將所有的圖片數(shù)據(jù)縮放并裁剪為512×512大小的圖片,并且使用Faster R-CNN對(duì)MS COCO數(shù)據(jù)集中所有的圖片進(jìn)行目標(biāo)檢測(cè);將Faster R-CNN在目標(biāo)檢測(cè)過(guò)程中ROI Pooling層生成的各目標(biāo)候選區(qū)域特征向量及各目標(biāo)對(duì)應(yīng)的類別儲(chǔ)存起來(lái),作為后續(xù)訓(xùn)練語(yǔ)言模型的輸入使用。本文所采用的英文語(yǔ)料因?yàn)檎Z(yǔ)言特征,單詞有空格作為間隔,不需要進(jìn)行分詞處理??梢灾苯訉⒄Z(yǔ)料進(jìn)行數(shù)據(jù)建模處理,并將語(yǔ)料字符串轉(zhuǎn)換成數(shù)據(jù)向量[15]。
本文采用基于Python語(yǔ)言的深度學(xué)習(xí)框架PyTorch來(lái)完成模型的構(gòu)建。訓(xùn)練模型采用的硬件環(huán)境及軟件環(huán)境如表1和表2所示。
表1 實(shí)驗(yàn)硬件環(huán)境
表2 實(shí)驗(yàn)軟件環(huán)境
(22)
(23)
預(yù)訓(xùn)練結(jié)束后,開(kāi)始對(duì)整個(gè)模型進(jìn)行訓(xùn)練,損失函數(shù)如式(19)~式(21)所示,訓(xùn)練的batch-size為 64,epoch為100次。模型的訓(xùn)練速率為0.02。本文模型在訓(xùn)練過(guò)程中采用Dropout[17]方法來(lái)避免模型出現(xiàn)過(guò)擬合現(xiàn)象,Dropout值為0.5。模型訓(xùn)練過(guò)程中的Loss和Top-5 Accuracy變化分別如圖6和圖7所示,由圖可以看出,算法在迭代過(guò)程中,損失函數(shù)值逐漸收斂于0.5。訓(xùn)練完成后本模型的描述效果如圖8~圖12所示,由描述效果可以看出,本文設(shè)計(jì)的模型所生成的描述語(yǔ)句相對(duì)于Show Attend and Tell模型所生成的描述語(yǔ)句其主體更加準(zhǔn)確,語(yǔ)句更加流暢,有效地提升了圖片與描述語(yǔ)句的關(guān)聯(lián)度。
圖6 Loss變化
圖7 Top-5 Accuracy
圖8 描述效果對(duì)比1
圖9 描述效果對(duì)比2
圖10 描述效果對(duì)比3
圖11 描述效果對(duì)比4
圖12 描述效果對(duì)比5
本文分別采用BLEU(Bilingual Evaluation Understudy)[18]、ROUGE-L(Recall-Oriented Understudy for Gisting Evaluation)[19]、METEOR[20], CIDEr(Consensus-based Image Description Evaluation)[21]算法對(duì)圖像描述生成的結(jié)果進(jìn)行評(píng)價(jià),模型預(yù)測(cè)的準(zhǔn)確率與目前存在的主流圖像描述模型(mRNN[22]、Show Attend and Tell[23]、DeepVS[24]、Top-down[25])的對(duì)比如表3所示。由表3可以看出,在各項(xiàng)客觀評(píng)價(jià)標(biāo)準(zhǔn)下,本文模型相對(duì)于其他模型均有不同程度的提升。
表3 各圖像描述模型描述能力對(duì)比
本文設(shè)計(jì)了一種基于目標(biāo)檢測(cè)與詞性分析的圖像描述算法,該算法通過(guò)使用Faster R-CNN目標(biāo)檢測(cè)模型提取圖像中的信息,然后將提取到的信息輸入帶有注意力機(jī)制的循環(huán)神經(jīng)網(wǎng)絡(luò)中,利用注意力機(jī)制與循環(huán)神經(jīng)網(wǎng)絡(luò)對(duì)需要生成的單詞進(jìn)行詞性分析,根據(jù)下一個(gè)單詞是否為目標(biāo)名詞,采用不同的模型進(jìn)行處理,從而增加了描述語(yǔ)句的準(zhǔn)確率和關(guān)聯(lián)度。實(shí)驗(yàn)表明,本文算法生成的描述語(yǔ)句,在主觀上要優(yōu)于目前的主流算法,在客觀評(píng)價(jià)標(biāo)準(zhǔn)中相對(duì)其他算法也略有提升。該算法能夠有效地對(duì)圖像理解領(lǐng)域的發(fā)展提供支持。下一步,將結(jié)合現(xiàn)有的圖像描述方法,針對(duì)圖片中的動(dòng)作特征進(jìn)行提取來(lái)修正描述語(yǔ)句中的動(dòng)詞,從而進(jìn)一步提升描述語(yǔ)句的準(zhǔn)確率。