許 昊,張 凱,田英杰,種法廣,王子超
1.上海電力大學 計算機科學與技術學院,上海201300
2.國家電網公司 上海電器科學研究院,上海200437
近十年是深度學習進入高速發展的黃金時期,各領域基于深度學習算法的研究取得了豐富的成果,其工業化的應用也惠及到人們生活中的方方面面。例如,可以使用指紋、人臉或者虹膜進行手機解鎖,在YouTube 觀看外語視頻時可以實現實時翻譯字幕的顯示。在年初爆發新型冠狀病毒的關鍵時期,大部分車站、高速收費站等都可以使用紅外線檢測儀來安全快捷地檢測人體的體溫,年初時由于疫情大家都戴起了口罩,這也帶來了一些小的生活煩惱:很多通過人臉識別解鎖的手機“認不得”自己了,但是隨著深度學習在大數據中的學習,這一問題很快得到了解決。深度學習在圖像領域:圖像分類[1-3]、目標檢測[4-6]、場景識別[7-9]等得到了廣泛應用,隨后出現了多模態的圖像語義技術,也就是將圖像和文本跨模態建立聯系,進而使計算機能夠從人類思維的角度出發去處理圖像中的信息,并能夠識別各目標之間的聯系,最終以文字的形式表示出來。這項技術在人們的生活中也得到了有效的應用,例如能夠對盲人進行導航。基于這樣的需求,能夠通過實時采取和分析視頻圖像,將采取的圖像信息進行處理并輸出成一段文本,最后通過文本轉語音傳入盲人的耳中,使得盲人能夠實時地感知周圍的環境。對于智能機器人的發展也同樣重要,圖像描述的技術能夠準確識別出提取圖像中的關鍵內容,并進一步理解圖像中各物體間的關系,相當于讓它有了一雙能夠感知世界的“眼睛”,這對于機器人技術的發展也具有巨大的推動作用。圖像描述在圖像檢索系統也有著一定的應用價值,傳統的圖像檢索技術主要是利用圖像的標簽進行對應索引的建立,但如果標簽存在錯誤,圖像就不能被正確檢索,如果將圖像描述技術應用其中,圖像檢索系統能正確地理解圖像內在目標的語義,這樣系統也就能對龐大的無標簽圖像進行正確有效地檢索,這樣圖像檢索的效率就能得到提高,檢索的范圍也得到拓展。除此之外,該技術在其他領域也有著應用前景,例如生成醫學CT圖像的報告,新聞標題的生成等。近年來,圖像描述的技術也趨于成熟,圖像描述的技術也發展到視頻描述,例如根據短視頻進行一篇新聞報告的生成等。可以看出,圖像描述技術在現實中的有著巨大的實用價值。
圖像描述作為把計算機視覺和自然語言處理相結合的跨模態跨領域的任務。一般地,它將輸入的圖片通過卷積神經網絡提取圖像特征并利用循環神經網絡等方法生成一段文字的描述,這段描述要求和圖片的內容高度相似。這對于人類來說是很簡單的,通俗來說就是看圖說話,幾歲的兒童就能很詳細地描述一張圖片的內容。但對于計算機來說還是有很大的難度的,這要求計算機利用模型來提取圖片內的特征以及一些高層語義信息,然后利用自然語言處理的方法表達圖片中的內容。
最初,傳統的圖像描述算法是通過模板填充[10-11]的方法來生成圖像描述,它主要是通過局部二值模式、尺度不變特征轉換或者方向梯度直方圖等算法提取圖像的視覺特征,并根據這些特征檢測對應目標、動作及屬性對應的單詞詞匯,最后將這些單詞填入到模板中。不難看出這樣的方法雖然能夠保證句型語法的正確性,也有著很大的局限性,由于使用的模板是固定的,它也依賴于硬解碼的視覺概念影響,這樣生成的語句格式相對固定且形式單一,應用的場景也很局限,正因為這樣天然的缺陷,后續的改進也變得更加繁瑣而無法應用到實際的場景之中。還有一種是基于檢索[12-13]的方法,它主要是將大量的圖片描述存于一個集合中,然后通過比較有標簽圖片和訓練生成圖片描述兩者間相似度來生成一個候選描述的集合,再從中選擇最符合該圖片的描述。這樣的方法能保證語句的正確性,但語義的正確性卻難以保證,因而對圖像描述的正確率較低。
得益于深度學習的發展,借助深度學習的方法推進跨模態學習成為當前的主流,這也是目前使用最多的基于生成的方法。這類方法的大致流程是先將圖像信息編碼后作為輸入放進模型,隨后利用此模型生成該圖像對應的文本描述。如圖1所示,這樣的模型一般采用編碼器-解碼器架構,編碼器使用卷積神經網絡(CNN[1])提取圖像特征,解碼器采用循環神經網絡(RNN[14])來生成文本描述。這是在圖像描述中普遍應用且效果最好的模型,它在語句結構的完整性、語義的正確性,以及泛化能力得到了一致的認可。

圖1 基于CNN-RNN的圖像描述
本章對基于深度神經網絡[15]的圖像描述[16-17]基本架構和改進進行介紹。首先,當前圖像描述基本都是在編碼器-解碼器架構上進行改進,基于編碼器、解碼器上的改進主要如圖2所示。

圖2 基本架構概述
在2015 年,Vinyals等人[18]提出一個NIC 的模型,這個模型的靈感來自于谷歌2014 年有關機器翻譯的工作,也就是著名的系列到序列(seq2seq)模型[19],它著重解決的是語言翻譯的問題,最終也取得了很好的成績,這也是編碼器-解碼器架構的最初提出。在機器翻譯里,輸入的是源語言,輸出的是目標語言的翻譯文字,由于兩句話的長度可能不等,該模型采用RNN 網絡對句子進行了編碼,轉化為一個固定長度的向量,然后再將這個向量輸入到另一個RNN 網絡來進行解碼,進而輸出翻譯后的句子。這樣的結構在機器翻譯的模型中實現了變長序列到變長序列的一個映射。對應到NIC 模型中就是圖片到文字的一個映射。如圖3所示,這篇論文中的模型基于機器翻譯模型上進行了改進,編碼器使用基于CNN的InceptionNet提取圖像特征信息,解碼器依舊使用RNN處理輸入的圖像信息來生成描述。在同一時期,Karpathy 等人[20]提出的結構和NIC 模型幾乎一致,區別在于它使用VGGNet[21]作為圖像特征提取器。

圖3 NIC模型
在NIC 模型的訓練階段使用的是COCO 數據集中訓練集和數據集中的圖片及其對應的文本描述。在編碼階段,模型用CNN 將圖片編碼為向量I,I是一個224×224×3 的向量,這里的CNN 使用的是Google Inception Net 后接一層全連接層。對于圖片相應的文本描述,為每句描述添加一個start 和end 標記,也就是圖3 中的<BOS>和<EOS>。假設提取的語料庫有m個詞,首先將句子中的每個單詞編碼成獨熱編碼(one-hot)的形式,如圖3中的每一個LSTM模塊的輸入都是一個m維的向量,然后通過一個矩陣變換將這個m維向量轉換為一個512 維的向量,即和圖像的編碼維度相同。而在解碼階段,模型使用的是單層的LSTM 網絡,可以用下列公式描述這個過程:

其中,N-1 表示句子的長度,不包括<BOS><EOS>標記,LSTM可以表述成ht+1=f(ht,xt),ht表示為t時刻LSTM的輸出,這個公式可以理解為每一步的輸出是上一步的輸出和當前時刻的輸入的函數。對應到公式(1)中,h-1=0,初始值為0,h0=f(h-1,x-1),x0=WeS0,如此循環。LSTM每一步的輸出后會接一個softmax分類器,維度等于語料庫中的詞匯量,模型的損失是每一步正確預測單詞的負對數似然之和,如公式(2)所示:

使用這個損失函數來最大化每一步輸出單詞的概率。在接下來的訓練階段,NIC 模型選擇已經在Imagenet上訓練好的CNN模型,訓練的第一階段固定CNN的參數不變,參與訓練的有LSTM 和wordembedding 的參數。在第二階段再把CNN、LSTM 和wordembedding這三部分的參數一同進行訓練。在預測階段,有兩種生成描述的方式:第一種是在LSTM 生成單詞的每一步選擇模型輸出概率最大的一個單詞,直到預測輸出到<EOS>標記停止。第二種是使用beamsearch,需預先設定一個值N,論文中選用的值是3,那么在第一步選擇輸出概率最大的三個單詞,第二步依舊選擇概率最大的三個單詞并與上一步生成三個單詞的組合,即九個短語的組合,然后再選取其中概率最大的三個短語,以此類推。最終模型訓練出來的模型具有很好的泛化能力。
Showandtell[18]和Neural Talk[20]介紹了圖像描述的編碼器-解碼器架構,可以說是圖像描述在深度神經網絡的啟蒙之作,對后續圖像描述的發展有著深遠的影響,使編碼器-解碼器架構成為圖像描述的主流,對其他相關預測模型也有著一定的借鑒意義。
Fang等人[22]對編碼器進行了改進,該方法可以分為三步:第一步檢測單詞,采用使用多實例學習來訓練視覺檢測器來識別生成描述中常見的單詞,包括名詞、動詞和形容詞等不同部分。這樣的方法可以避免有些描述性詞匯如beautiful 不能在圖片中被框出。第二步生成句子,采用統計模型MELM 來預測下一個單詞的概率。第三步重新排序句子,選擇最符合的語句。通過提取關鍵詞作為輸入來生成描述的方法為后續結合圖像和語義的編碼方法提供了借鑒。
Li 等人[23]在特征提取方法上使用目標檢測算法Fast R-CNN 提取目標檢測框作為圖像特征,并使用該特征額外訓練屬性分類器來獲取對象的屬性,比如物體的顏色、材質等。隨后將圖像特征和屬性特征輸入到視覺語義LSTM 中進行解碼。在編碼階段使用目標檢測算法能夠提取帶有類似注意力效果的圖像特征,為解碼器生成高質量文本提供了可能。Anderson 等人[24]的工作使用類似的編碼器并改進了解碼器,得到了當時的最優結果。
編碼階段主要是基于圖像領域知識的應用,解碼階段則是自然語言處理領域知識的創新改進和應用。
Wang等人[25]提出了一種新型的解碼結構。人類在看圖描述的過程中,一般是先定位圖片的位置和他們之間的關系,然后再詳細說明物體的屬性。以此為基礎,他們設計了一種coarse-to-fine 的方法。首先由Skel-LSTM使用CNN提取的圖像特征來生成骨架語句,然后使用Attr-LSTM 為骨架語句中的詞語生成對應的屬性詞,最后將這兩部分結合生成完整的最終描述語句。
Mathews等人[26]為了生成高精度且具有語言風格的圖像描述,提出了一個分離語義和風格的結構,通過兩組GRU 單元來實現的。一組GRU 提取圖像特征中的語義對(詞語、屬性),另一組GRU是基于一本小說訓練得到。基于上述輸入的語義對來生成最終富有語言風格的描述。
此外,Aneja 等人[27]提出了一種不同于用LSTM 或者RNN 進行解碼的方法,該工作啟發式地利用卷積來進行圖像描述,達到不比傳統LSTM差的效果。它的輸入輸出和RNN 一樣,都進行了wordembedding,但將RNN 的部分換成了MaskedCNN,使用這樣的方法能夠避免RNN 的時序限制,如此可以在相同的參數量下有更快的訓練速度。
受模板生成方法的啟發,Lu 等人[28]提出了一種“插槽”的圖像描述方法,其生成句子中的插槽與圖像區域相關聯,直接依據圖像特征去預測單詞。該結構在編碼階段使用目標檢測算法Fast R-CNN提取圖像的區域特征。解碼階段將句子中的詞語分為視覺詞與文本詞,如果當前時刻所產生的詞是文本詞,那么這個單詞通過語言模型從文本詞匯庫中生成;如果是視覺詞,由目標檢測算法直接由圖像標定區域特征產生的視覺詞進行填充,最終形成描述。使用神經網絡模型來提取句子模板,有效地解決了傳統模板填充語句呆板的問題。
Yu等人[29]提出使用Transformer作為解碼器,Transformer是一種僅使用Attention而不使用RNN或CNN的模型。該工作使用Faster R-CNN模型從圖像中提取視覺特征,經過Transformer 進行再編碼后輸入另一個Transformer進行解碼,編碼部分也可不經過Transformer的編碼直接輸入到解碼器中。由于Transformer能夠獲得圖像和文本各自注意力狀態以及圖像文本間的聯合注意力,因此能夠生成更高質量的描述文本。
人類在描述一張圖片時,不僅從圖片本身獲得相關信息,還有著其他相關背景知識地支撐。知識圖譜的發展和應用也為這一方向提供了可能。Lu 等人[30]在圖像描述中引入了知識圖譜相關的知識。該工作先使用CNN和LSTM的編碼器-解碼器架構來生成圖像描述的文本模板,然后使用基于Knowledge Graph的集體推理算法,根據實體類型和頻率在模板中為每個槽填充通過知識圖譜檢索的特定命名實體。最終的描述結果在結構語義上能夠得到不錯的提升。
上述簡要介紹了圖像描述在編碼器-解碼器架構上的一些代表性工作。(1)在編碼階段主要表現在引入了目標檢測和關鍵詞提取。對于圖像特征的提取影響著后續文本生成的工作,在編碼階段要求更好地提取圖片內的信息以及圖片內各目標之間的聯系、目標檢測以及注意力機制等方法的使用都是出于這樣的目的。(2)為了編碼器輸出的特征能夠更好的應用,在解碼階段創造性地引入卷積神經網絡(CNN)解碼、雙層解碼器和知識圖譜等外領域的知識。不難看出,在未來相當一段時間內,圖像描述的研究工作還會在編碼器-解碼器架構上進行創新和發展。
在編碼器-解碼器架構上對于圖像描述算法的后續改進主要有這樣四種方法:注意力機制、對抗生成網絡、強化學習、圖卷積神經網絡。圖4 簡要概括了各類方法。

圖4 基于深度神經網絡的圖像描述方法
2.1.1 概念
從最基本的意義上講,注意力定義為從所有可用信息中選擇一個子集進行進一步處理的過程。視覺注意對于建立圖像內部表示的時空連貫性至關重要。注意力機制在圖像描述領域的引入得到了驚人的效果。
隨著生成描述語句的多樣復雜化,對應的句子向量也變長,為了應對這樣的長序列,注意力機制在圖像描述中應用逐漸廣泛。目前圖像描述主流的注意力機制有這樣幾種:自注意力(Self-Attention)[31]、硬注意力(Hard Attention)[32]、軟注意力機制(Soft Attention)[32]。
自注意力機制是一種與單個序列自身不同位置相關聯的注意力機制,其目的是計算同一序列的表示形式。例如語句“A dog is running after a cat.”句中單詞的生成都依賴于與其余單詞的內在聯系。每個單詞vi與序列中其他單詞vj的內在聯系eij可以用公式(3)表示:

在經過softmax層歸一化后可以得到對應每個單詞的注意力權重,以此來進行選擇后續的單詞生成。
在圖像描述模型應用中,自注意力機制一般結合Transformer 模塊使用,Yu 等人[29]應用的Transformer 模塊中有這樣的自注意力機制,這個模塊能夠獲得圖像信息和文本信息各自注意力狀態以及圖像信息和文本信息之間的聯合注意力狀態,因此使得模型性能得到不錯的提升。
硬注意力機制將集合向量中權重最大的一個向量賦值為1,其他向量權重值為0,這樣就達到了只關注權值為1 向量對應圖像區域的目的。其上下文向量z^t可以用公式(4)表示:

其中,ai表示圖像區域i的向量,st,i表示當圖像區域ai被選中時取值為1,否則為0。
在圖像描述模型應用中,應用硬注意力機制能減少訓練的時間成本,缺點是模型不可微,需要采用更復雜的技術進行處理,例如使用蒙特卡洛方法或者強化學習等。
軟注意力機制給以集合向量中每一個向量介于0與1 之間的注意力權重,權重之和為1。其上下文向量可以用公式(5)表示:

其中,αt,i表示圖像區域ai在t時刻被解碼器選中輸入下一時間步長的概率。
在圖像描述模型應用中,應用軟注意力機制可以使得模型更加平滑且可微分,缺點是當輸入數據量很大時,相應的參數量將很大,對于硬件要求很高。相比而言,由于軟注意力機制良好的解釋性,其在主流的研究中得到了更廣泛的應用。
2.1.2 相關工作
Xu等人[32]在2016年在NIC模型的基礎上把注意力機制應用在圖像描述的圖像特征中。其基本思想是將編碼階段獲取的圖像特征進行注意力處理,解碼階段使用LSTM。在NIC模型中,生成預測句子中的每一個單詞時,沒有考慮圖片中對應的位置,它接受的輸入是上一步預測得到的單詞和隱藏層的輸出,注意力機制就是在預測每一步單詞的同時加入對應在圖片中的位置信息,即ht+1=f(ht,xt,z^t),z^t∈RD。如圖5所示,模型在預測下劃線單詞能關注圖中亮點部分信息,而不是使用整張圖片的編碼信息進行輸入。該文章提出了兩種注意力機制:硬注意力機制和軟注意力機制。訓練時模型接受的輸入是一張圖片和對應的描述,描述中的每一個詞會被編碼為一個one-hot向量。在LSTM中的解碼部分,與NIC 模型從CNN 的最后接一個全連接層來生成固定長度的向量不同,而是直接獲得卷積的結果,也就是一張張特征圖。特征圖的尺寸為n×n,數量為D,實驗可知,每一張特征圖中對應位置也就是關注的圖片中的相同的位置,整張圖片關注區域的集合可以表示為a={a1,a2,…,aL},ai∈RD,L=n×n。這里集合中的每一個向量也就對應圖片中某個區域的特征信息。

圖5 Attention機制可視化
Lu 等人[33]提出了注意力機制的改進工作。這項工作考慮生成描述時與視覺信息無關詞的問題,如“the”“of”這些詞和圖片內容是無關的,而且有些需要視覺特征來生成的詞,也可以直接通過語言模型進行預測,例如“taking on a cell”后生成“phone”,因此在LSTM 上進行了擴展,加入了“崗哨向量”,存儲著解碼器中已有的知識信息。同時提出新的自適應注意力機制,使得模型在生成每個詞時,可以決定模型是關注視覺信息還是只依靠語言模型,如果需要關注視覺信息,通過空間注意力來決定關注圖像的哪個區域,其機制如圖6 所示。自適應上下文的向量定義為C^t,這個向量融合圖像的空間特征和視覺哨崗向量βt。具體計算公式如公式(6)所示:

這個創新的改進在當時達到了最好的水平,并且在現在的COCO排行榜上仍排名很高。

圖6 視覺崗哨的自適應注意力模型
Anderson等人[24]引入了Top-down、Bottom-up機制。該模型編碼器使用目標檢測算法Faster R-CNN來進行提取圖像的區域特征。為了提升提取特征的能力,對Faster R-CNN 的輸出和損失函數進行了改進,設計了屬性分類的部分。Bottom-up機制用來提取圖像各區域的特征向量,Top-down的機制用來分配Bottom-up提取的特征對文本描述的貢獻度,兩者提取到的特征組合得到聯合注意力權重。在解碼階段使用一個雙層LSTM模型,分別是Attention LSTM和Language LSTM,由軟注意力加權后的圖像特征向量和Attention LSTM 的輸出作為Language LSTM 的輸入,產生最終的描述。這樣的Top-down、Bottom-up 機制能夠使模型關注圖像中重要的對象目標,使得描述的結構主次分明。這項工作在編碼和解碼階段的改進在當前仍具有極高的利用價值。
Huang等人[34]在文獻[35]工作的基礎上加入了AoA(Attention on Attention)模塊,該模塊增加另一種注意來擴展了常規注意機制。該模塊通過兩個線性變換生成一個“信息向量”和一個“注意門”。信息向量通過線性變換從當前上下文和關注結果中導出,并存儲注意力信息與來自當前上下文的信息。注意門獲取查詢信息和注意力結果,并通過另一個線性變換加以sigmoid 激活得出。隨后,AoA通過使用逐元素乘法將注意門應用于信息向量來增加另一個注意力,得到“關注信息”,即預期的有用知識。在該模型中,AoA模塊應用在編碼器和解碼器中,在編碼器中,首先提取圖像中的特征向量,并采用自注意力模塊對它們之間的關系進行建模,然后應用AoA 來衡量它們之間的關聯程度。在解碼器中,AoA 模塊能過濾詞嵌入向量ct中無關的信息,僅保留注意力部分,隨后使用LSTM進行解碼輸出。這樣組成的一個AoANet,結合強化學習能夠更好地解決不相關注意力問題,達到當時最優的性能。
2.1.3 小結
注意力機制最初在計算機視覺領域提出,在自然語言處理領域也得到了廣泛的應用。對于結合計算機視覺和自然語言處理的圖像描述研究來講,注意力機制已成為不可缺少的一個組件,也是當前研究的重點之一。在解碼器生成下一時間步長的單詞時,注意力機制能夠起到讓模型將“注意力”集中到圖像中最相關的那個區域,使得圖像和生成文本間聯系更加緊密,因此能達到很好的效果。
2.2.1 概念
先前的圖像描述方法主要通過極大似然估計(MLE)的思想來訓練模型,即最大化訓練樣本出現的可能性。傳統的編碼器-解碼器架構在訓練上多采用交叉熵作為損失函數,這樣會使模型在生成的圖片描述會高度模仿Ground Truth,這是全監督學習的優勢,也是局限所在,它生成的描述會更加泛化,從而抑制了多樣化的表達。基于這樣的考慮,有研究者把在圖像領域有著優異表現的生成對抗網絡方法融入到圖像描述中。
生成對抗網絡(GAN)[36],由一個生成網絡和一個判別網絡組成,二者互相競爭訓練,最后達到一種平衡。如圖7 所示,生成網絡通過機器生成數據(大部分情況下是圖像),目的是“騙過”判別網絡,判別網絡判斷這張圖像是真實的還是機器生成的,目的是找出生成網絡做的“假數據”。GAN 的核心思想是基于判別網絡的“間接”訓練,判別網絡本身也在動態更新。

圖7 GAN基本結構
2.2.2 相關工作
Dai等人[37]首次將Conditional GAN 運用在圖像描述,該方法生成的圖片描述貼近人類的表達,改善了句子的自然性和多樣性。如圖8所示,該模型由一個生成網絡和一個判別網絡組成。生成網絡使用傳統的編碼器-解碼器架構,用CNN提取的圖像特征及噪聲作為輸入,用LSTM生成句子。隨后通過蒙特卡洛樹搜索算法從判別網絡得到損失,并通過策略梯度算法更新參數,輸入圖像得到偽造的句子描述。判別網絡用LSTM 對句子編碼,然后與圖像特征一起處理,得到一個概率值。在訓練判別網絡時,把對自然性的判別和對相關性的判別區分開,也就是說,判別網絡既要判別句子是否像是人類生成的,又要判別句子和圖片是否相關。這項工作以產生多樣性描述為切入點引入了Conditional GAN 的結構,實驗證明在多樣性會明顯好于傳統的模型,但是該模型算法和人類描述還是有著不小的差距。

圖8 Dai等人模型
同年,Shetty等人[38]也同樣使用了Conditional GAN的結構在圖像描述上,其主體結構與上一項工作差別不大。不同之處主要是在輸入項中除CNN 和噪聲特征外,還有目標檢測的特征,通過常用的目標檢測網絡Faster R-CNN 得到。為了讓生成網絡捕捉到更清晰的目標信息,在改用Gumbel-Softmax[39]的技巧把采樣過程近似成連續可微的操作取代策略梯度算法來更新參數。與文獻[37]區別在于提出了一個判別網絡,它接受圖片與其對應的描述,并懲罰生成網絡組內相似度高的描述。這個判別網絡有兩個計算距離的核心,一個計算圖片與描述間的距離來判斷描述是否準確,另一個計算不同描述間的距離來判斷描述是否足夠多樣化。這種的機制能夠使得生成網絡生成更加多樣化的描述語句。
此外,Zhang等人[40]提出的模型由兩個不同的GAN組成。第一個GAN 基于文本描述生成初始的形狀,基礎的顏色,然后從隨機noise中繪出背景分布,產生低分辨率圖像,第二個GAN通過結合文本描述,進行圖像的細致化繪制,產生高質量的圖像。Shekhar 等人[41]拓展了COCO數據集,并通過對抗樣本驗證了Lavi模型的魯棒性,Dai 等人[42]則使用對抗樣樣本訓練解決圖像描述任務生成的描述缺少獨特性的問題。可以看出,在使用生成對抗網絡來訓練的模型能解決生成的描述缺少多樣化的問題。
以上的方法主要是基于公開數據集上的有監督學習,近年來有些研究者開始使用無監督的方式訓練圖像描述的模型。Feng 等人[43]首次提出了這樣的一個無監督的模型,它使用對抗文本生成方法在語料庫中訓練一個語言模型,生成網絡接收CNN提取的圖像特征,產生基于該特征的句子。判別網絡判斷該句子是模型產生的,還是來自語料庫的真實句子。生成網絡通過生成盡可能真實的句子來騙過判別網絡,為了實現這個目標,模型在每個時間步驟給生成網絡一個獎勵,并將此獎勵命名為對抗性獎勵。通過預訓練好一個視覺檢測器,對每幅圖像中檢測里面的視覺概念,如果生成的句子里包含了視覺概念,那么給獎勵。為了產生的描述比較準確,圖像和句子被投射到一個共同的潛在空間。給定投影圖像特征,可以解碼對應的描述,進一步用于重建圖像特征。同樣,可以將句子從語料庫編碼到潛在的空間特征,然后重建句子。通過對生成的句子進行雙向重構,使得生成的句子能夠很好地表達圖像的語義,進而改進了圖像字幕模型。這樣基于無監督學習的模型能夠更好地生成多樣性描述,為研究者的后續研究提供了一個新的方向。
2.2.3 小結
通過生成網絡和判別網絡間的博弈,生成對抗網絡的在圖像描述算法中的應用能使解碼器生成比較逼真的句子,文字更加自然和多樣。但也存在著在評價標準中得分不高的缺點。
2.3.1 概念
強化學習[44]是機器學習一個領域,它主要包含智能體(Agent)、環境(Environment)、行動(Action)、獎勵(Reward)四個元素。智能體通過交互和反饋的方式進行訓練,環境從中獲得懲罰或者獎勵,最終解決特定的任務。圖9 描述了強化學習的基本流程。強化學習在深度學習各領域也有著廣泛的應用,傳統的圖像描述研究,都是將單詞生成看成一個分類的問題,主流模型也是利用交叉熵損失函數來訓練模型。但是利用交叉熵損失函數訓練存在以下問題:模型訓練和測試階段存在曝光誤差,交叉熵損失函數無法直接對不可微分的評價標準進行微分運算。強化學習能夠同時解決這兩個問題,它能夠直接用來優化不可微分的評價標準。

圖9 強化學習基本結構
2.3.2 相關工作
Ranzato等人[45]將BLEU和ROUGE-2評價指標作為強化學習的獎勵來訓練模型。在訓練階段,句子的前幾個單詞使用交叉熵損失函數訓練,剩下單詞采用強化學習訓練。隨著逐步提高強化學習的比例,最終整個語句都用強化學習進行訓練。針對在圖像描述中交叉熵損失函數無法直接對不可微分的評價標準進行微分運算的問題,Liu等人[46]提出在強化學習中將SPICE和CIDEr評價指標作為獎勵,并使用策略梯度來優化上述指標的參數。該模型使用蒙特卡羅方法來抽取樣本并估計每次時序上的回報獎勵。在加入強化學習后,圖像描述算法的效果有了顯著的提高。
Ren 等人[47]同樣使用強化學習訓練圖像描述模型,并采用了Actor-critic 結構。該模型將智能體定義為圖像描述生成網絡,環境狀態定義為當前狀態的視覺特征和生成的描述,行動定義為可用單詞,獎勵定義為在同一向量空間內圖像和其真實描述對應的視覺向量和文本向量之間的相似度。其策略、獎勵和價值函數利用深度神經網絡進行近似,視覺特征使用VGG-16網絡進行編碼,語義特征使用RNN 網絡進行編碼。它通過上述結構訓練一個“策略網絡”和“價值網絡”相互協同來生成圖像描述。策略網絡由VGG16 和LSTM 組成,它用于在給定當前狀態預測下一步操作。價值網絡在策略網絡結構基礎上添加用于回歸任務的多層感知器,用于評估給定圖像特征的下一個單詞和生成語句的前一個單詞。實驗證明在COCO 數據集上該結構能夠達到當時最優的結果。
Rennie等人[35]提出了一種新的序列訓練方法,簡稱SCST(Self-Critical Sequence Training),并證明SCST算法可以極大地改善圖像描述算法的性能。該方法通過直接對CIDEr評分標準進行優化,該模型基于策略梯度的強化學習算法建立一個基線,即通過貪婪搜索算法選出概率前n大的句子作為這個基線,模型會抑制得分在基線以下的語句,激勵得分在基線以上的語句。這可以使模型更有效地對CIDEr評分標準進行訓練,并使用策略梯度來更新模型。這樣的SCST 方法在MSCOCO數據集上取得了當時的最優結果。后來的很多研究者也在這樣的一個模型進行了改進。
2.3.3 小結
強化學習在圖像描述算法中的應用主要表現在對評價標準的直接優化,從源頭上能顯著提升生成描述的質量,因此在已有模型上加入強化學習算法能夠有效地提升模型的性能。
2.4.1 概念
圖卷積網絡(GCN)是對圖數據類型執行卷積的網絡,而不是CNN對像素組成的圖像執行卷積。一般地,圖數據可以用G=(V,E)來表示,V代表圖的頂點,E代表圖的邊,圖10描繪出圖卷積網絡的基本框架。

圖10 圖卷積網絡結構
CNN旨在從圖像中提取最重要的信息以對圖像進行分類,GCN 也會在圖形上通過過濾器來尋找有助于對圖形中的節點進行分類的基本頂點和邊緣。在CNN中,所有像素之間的節點連接是統一的,這足以解決圖像分類的問題。但在節點連接是動態的情況下,CNN將達到其極限,因為CNN 僅適用于具有規則結構的數據(歐幾里德域數據),而GCN 能夠處理非歐幾里德域數據。因此GCN在處理圖像分類等任務上有著優異的性能。
2.4.2 相關工作
Yao 等人[48]提出了一個層次解析(HIP)的結構。該結構會將圖片解析成樹狀結構:整張圖片作為該結構的根節點,由Faster R-CNN 提取圖片得到的一系列Region-level區域作為中間節點,由另一個Faster R-CNN來提取圖片的Instance-level 區域作為葉子節點。在該層次結構上,構建具有區域級別的有向邊的語義圖,其中頂點表示每個區域,而邊緣表示各區域之間的關系。利用圖卷積網絡豐富該語義圖各區域間的視覺關系,這能顯著改善圖像描述的質量。該模型使用了GCN結合圖像內兩種不同的特征,使得能在解碼階段生成高質量的描述,增強了模型的可解釋性。
Chen等人[49]提出了一個抽象場景圖(Abstract Scene Graph,ASG)的結構,見圖11。應用圖結構來提取圖像內主觀想表達的物體、屬性以及關系特征,該結構能夠更細粒度反映出用戶主觀想表達的描述意圖,同時生成的描述也更加多樣化。ASG模塊中設置三類節點:物體節點(obj)、屬性節點(attr)和關系節點(rel),這樣能夠充分抽取出圖像中的特征,在應用圖注意力機制和更新機制下,通過Up-Down Attention 中的雙層LSTM 來生成多樣性的描述。上述模型能夠基于給定的ASG模型來主動地實現更好的交互性、可解釋性、多樣性描述。Wang等人[50]使用了類似的圖結構對圖片中的節點進行增強,并使用時序卷積神經網絡(TCN)沿時間維度建立多張圖片之間的交互,得到集合中圖像內部關系和跨圖像關系的特征,最后輸入到層次化解碼器中來生成一段小故事。上述跨圖片生成可解釋性段落的思路也是未來圖像描述的一個研究方向。

圖11 ASG結構
2.4.3 小結
人類看圖描述時,會將圖像抽象看作一個場景,然后觀看和推測圖像內各目標之間的關系,將這樣的關系轉化為圖結構能夠更好地保存特征的可解釋性與推理性。因此在圖像描述中應用GCN能更好將圖像中物體間的特征保留,并和文本更好地匹配來生成高質量的描述文本。
在現在主流的圖像描述模型中,都會在編碼器-解碼器的基本架構上加入注意力機制來提高模型的性能,注意力機制能夠在生成文本時突出圖像中的主體,并能夠準確表述出主體間以及與其他目標之間的關系,這也是目前注意力機制在圖像描述模型廣泛應用的原因。生成對抗網絡(GAN)的應用,其通過生成網絡和判別網絡間的博弈來生成更加生動的、貼近原圖片的自然化描述,雖然其評價得分不高,其特點對于機器人視覺或者盲人導航卻很適用。強化學習從評價標準出發,利用強化學習的方法對其進行優化,可以說是更加標準化的一種措施。這對于圖像檢索、醫學CT 報告生成這樣有格式化需求的場景是個不錯的選擇。GCN能有效地抽取圖像內各個目標之間的聯系,并對節點特征信息和結構信息進行端對端的學習,其在圖像描述的公開數據集上能夠生成具有交互性、可解釋性、多樣性描述。只是隨著網絡層數的增加,模型的性能會大幅下降,并且其可擴展性差,模型參數過于冗余,收斂慢,訓練時間長。各方法的性能對比如表1所示。

表1 不同圖像描述方法性能對比
本章首先整理了目前應用于圖像描述的公開圖像數據集,分別進行介紹和對比,接著介紹了針對圖像描述領域的主流評價標準,最后在此基礎上對現有不同圖像描述結構的性能進行實驗對比和分析。
深度學習是在大量數據集的基礎上驅動實現的,公開數據集的提供有利于各領域的發展。在圖像描述領域,目前廣泛應用的數據集主要有以下三種,主要對比如表2所示。

表2 數據集對比
(1)Microsoft COCO數據集[51]
MSCOCO 數據集被廣泛運用于目標檢測、目標追蹤以及圖像描述。該數據集旨在通過將對象識別問題置于更廣泛的場景理解問題的上下文中,從而提高對象識別的最新水平,并通過收集包含自然環境中常見對象的圖像來實現。該數據集使用專業機構人為地對圖片進行描述,每張圖片收錄5 句或者15 句參考描述,可以想象這項工作消耗了大量的人力物力。MSCOCO數據集對應的標注集,一般以json 格式保存。第一種是MSCOCO C5,每張圖像包含5 句參考描述。第二種是MSCOCO C40,這個標注集對應只包含著5 000 張圖片,這些圖片是從MSCOCO數據集中隨機篩選出來的,與C5 不同的是,它的每張圖片包含著40 句參考描述。一般使用C5 標注集即可滿足訓練的要求,通常使用MSCOCO數據集也一般默認使用MSCOCO C5。這個數據集也是目前圖像描述研究者實驗的首選。該數據集有超過33 萬張圖片,其中20 萬有標注描述,包含91類目標,328 000張圖像中總共有250萬個帶有標簽的實例,這也是目前最大的語義分割數據集。
(2)Flickr8K[52]和Flickr30k[53]數據集
從數據集的命名可以看出這兩個數據集分別包含了8 000和30 000(確切是31 783)張圖片。這些圖片從Flickr相冊網站選出。該數據集每張圖片具有5句人工標注的參考描述,這兩個數據集的驗證集和測試集使用的圖片數量都是1 000 張,剩余的圖片用于訓練階段。可以看出,相比MSCOCO數據集,這兩個數據集在數量方面存在著明顯的不足,但由于MSCOCO數據量太大,在訓練過程中會花費大量的時間,Flickr 數據集在初探圖像描述時可以使用來進行實驗來驗證模型的效果。
(3)Visual Genome數據集[54]
Visual Genome(VG)數據集是斯坦福大學李飛飛組在2016 年發布的大規模圖像語義理解的數據集,初衷是該數據集能夠像ImageNet那樣推動圖像在高級語義理解方面的研究。該數據集包含超過10 萬張圖像,其中每個圖像平均具有21 個對象,18 個屬性以及對象之間的18 對關系,在標注數據方面包含了每張圖片的目標,屬性以及圖像內目標間的關系。該數據集規范化區域描述中的對象、屬性、關系和名詞短語,以及Word-Net同義詞集的問題答案對。它代表了圖像描述、對象、屬性、關系和圖片問答的最密集最大的數據集。而針對VG 數據集中的區域標注過程,該數據集的人工標注并不是直接標注目標間的關系,不然標注員往往傾向于標出一些高頻而瑣碎的關系,如wearing(woman,shoes),而非聚焦圖片中最顯眼的部分。在生活中,人們在用自然語言描述圖片時,也更傾向于捕捉圖片的主體部分,所以,標注員最終被要求先給出描述,再根據描述來標注區域(region)、邊界框(bounding box)、目標(object)、關系(relationship)等其他內容。在最原始的VG數據集中,數據太過龐大,其中目標的標注也過于雜亂,還有命名模糊和boundingbox重疊的問題。在2019年Liang等人[55]對這個數據集進行了改進,該數據集旨在提取圖片中真正與視覺相關的聯系,同時也改善了原VG數據集中謂語冗余的問題。在此使用此數據集進行特征表示的預訓練后,在圖像描述模型的性能上有著普遍的提升。該數據集提出時間相對較短,不少的研究工作開始使用這個數據進行預訓練,相信在不久的未來,VG數據集會得到更加廣泛的應用。
很顯然,評價標準有權威性的是人類自己,但是要對深度學習中海量的數據進行評價單靠人工是不現實的,因此人們也提出了各類自動評價標準,旨在最終實驗的結果盡可能和人工評價相關接近。最主流的評價標準有以下幾種:BLEU、ROUGE、METEOR和CIDEr。
(1)BLEU[56]
BLEU(Bilingual Evaluation Understudy)最初是用于評估從一種自然語言機器翻譯為另一種自然語言得到文本的質量的一種算法。這和圖像描述算法評價生成文本的要求是一致的,即對生成的待評價語句和人工標注語句間的差異進行評分,得分輸出在0~1 之間。該標準現已成為圖像描述算法應用最廣泛的計算標準之一。
對于圖像Ii,圖像描述算法對于這個圖像生成的描述語句ci,人工標注的五個描述語句集合Si={si1,si2,…,si5} ∈S,要對ci進行評價。BLEU 的計算公式如下所示:

其中,每一個語句用n 元組ωk來表示的,n 元組ωk在人工標注語句sij中出現的次數記作hk(sij),n 元組ωk在待評價語句ci∈C 中出現的次數記作hk(ci),lC是待評價語句ci的總長,lS是人工標注語句的總長度。b(C,S )是一個簡潔性懲罰機制,由于BLEU 的評價標準設計傾向于更短的句子,因為這樣的精度分數會很高,為了解決這個問題,該標準使用了乘以簡潔性懲罰參數來防止很短的句子獲得很高的得分,具體規則在公式(7)中可以看出,如果有多個候選的參考語句,該標準會選擇待評價語句和參考語句兩者長度最近的那個參考語句進行計算評價。BLEU得分越高,性能也就越好。
(2)ROUGE[57]
ROUGE最初是用于評估自然語言處理中的自動摘要和機器翻譯的評價標準,它是由自然語言處理領域內多名專家對指定數據給出專業的描述,然后將自動生成的摘要或翻譯與其進行比較。通過比較兩者之間如n元語法,詞序列和詞對重疊的數目來評價自動摘要或者翻譯的質量。通過與專業性摘要的對比評價,能有效提高模型的可靠性。ROUGE得分越高,性能也就越好。
(3)METEOR[58]
METEOR 最初也是用來評價機器翻譯輸出的標準。該算法基于整個語料庫的精度和召回的調和平均值。簡而言之,它對比待評價語句和參考語句之間一元組的重疊部分,并根據語義、詞干形式、精確度來匹配一元組。相比BLEU 標準,由于這個標準引入了外部知識,因此評價時更加接近人類的判斷。METEOR 得分越高,性能也就越好。
(4)CIDEr[59]
不同于上述標準,CIDEr是專門設計用于評價圖像描述算法的,它通過計算每個n 元組的TF-IDF 權重得到待評價語句和參考語句之間的相似度,以此評價圖像描述的效果。一個n 元組ωk在人工標注語句sij中出現的次數記作hk(sij),在待評價語句中出現的次數記作hk(ci),n 元組ωk的TF-IDF權重gk(sij)如下所示:

其中,Ω 是所有n 元組的語料庫,I 是數據集中所有圖像的集合。可以看出,當有n 元組頻繁出現參考語句中,TF 給以該n 元組更高的權重,IDF 則會降低該n 元組在生成語句中的權重。簡而言之,該方法會降低對圖像視覺內容沒有幫助的高頻單詞的權重。
對于長度為n 的n 元組的CIDErn評分計算公式如下:

其中,gn( ci),gn( sij)分別是gk( ci)和gk( sij)生成的向量,‖gn( ci)‖,‖gn( sij)‖則是對應向量的模。同樣的,CIDEr的得分越高,表明待評價語句和參考語句之間的相似度越大,生成的語句的質量也就越好。
本節主要進行實驗的復現和對比,以BLEU、METEOR、CIDEr三種不同的標準進行評價分析。實驗環境基于Ubuntu18.04 系統,CPU 為Inteli9-9900k,GPU為NVIDIA GeForce RTX 2080Ti,16 GB內存,Python3.7+Cuda10.1的Pytorch或者Tensorflow深度學習環境。
實驗數據集使用MSCOCO2014的數據集和500 MB左右包含圖像描述注釋的json 文件,在處理注釋文件時,刪除了非字母字符,將剩余的字符轉化為小寫字母,并將所有出現小于5 次的單詞替換為特殊的單詞UNK。最終在MSCOCO數據集中得到9 517個單詞,也就是最終使用的語料庫。
將生成語句的最大長度設為16,采用Dropout 方法防止過擬合,參數一般設為0.5。在訓練損失函數階段,訓練輪數一般設為30,其他參數如解碼器輸出向量維度及解碼器隱藏層維度D,beam search(集束搜索)數量N,批處理大小B在表3 中列出,D列中有兩個維度(如500/1 000)表示解碼器中兩個不同的解碼器,其各自隱藏層的維度。

表3 模型參數
表4 和表5 中列舉主流的一些圖像描述模型。表4中列舉了上文所述在編碼器-解碼器架構的代表模型。NIC[18]和模型[20]是傳統的編碼器-解碼器架構,一般地,以NIC 模型作為基準模型進行對比。模型[22-24]從編碼器端進行改進,相比NIC 模型,這些模型的評價指標得到了提升,這主要得益于更好地提取和利用圖像的特征。在模型[22]中是在編碼中將關鍵字語義和圖像的特征進行結合,模型[23-24]利用目標檢測的算法提取圖像特征,這樣可以提取圖像中的關鍵信息,能夠使得生成文本更加完整精確。模型[25-30]從解碼器端進行改進,相比NIC 模型,這些模型的指標也得到提升。利用LSTM、GRU、Transformer 以及知識圖譜等方法來解碼圖像特征,將圖像編碼更好地“翻譯”成文字描述。其中Transformer和知識圖譜的方法最終的指標提升最為顯著,主要是由于Transformer結合圖像和文本各自的注意力信息以及兩者之間的聯合注意力信息,知識圖譜得益于引入了外部知識體系,以此來能生成更接近人類的描述。可以得出這樣的結論:解碼器端更好地提取并利用圖像的特征是會得到性能的提升,在編碼器和解碼器端提高圖像信息和文本信息的關聯交互也能有效提高模型的效果。

表4 編碼器-解碼器架構的模型

表5 不同方法融合模型
表5中列舉了添加注意力機制(Up-Down[24]、Xu et al.[32]、Lu et al.[33]、AoANet[34])、生成對抗網絡(G-GAN[37]、Dai et al.[42]、Feng et al.[43])、強化學習(SCST[35]、Liu et al.[46]、Ren et al.[47])、圖卷積神經網絡方法(HIP[48]、Chen et al.[49])融合后模型的性能。顯而易見,加入注意力機制、強化學習后,實驗的效果都得到了顯著的提高,所有的評價指標都有著不錯的提升。但是將對抗生成網絡應用到模型中后,文獻[37]的指標降低了,但生成的文本其實更加自然多樣化,這是由于評價指標的限制,多樣的描述文本反而得不到很高的評分,這也是未來研究需要改進的地方。基于圖卷積神經網絡的模型[48-49]在CIDEr的評價中得到了所有模型中最高的得分,并有著顯著的優勢,可以看出圖結構在圖像特征提取時能夠更加細粒度提取圖像內各對象之間的關系,生成更加高質量的文本。
近年來,在某些格式要求相對固定的領域,圖像描述算法能很好地代替人類生成滿足需求的文本,比如醫學圖像報告,通知文書等。目前,對于編碼器-解碼器架構的改進還有著很多的挑戰。
(1)模型如何正確理解圖像的關鍵物體,并建立物體間的聯系,對最終模型的性能有著關鍵的影響。如何更好地提取和利用圖片中的特征,主流模型一般是使用卷積神經網絡或者目標檢測算法進行特征提取,但圖片中的高層語義還是無法得到表述。基于注意力機制的模型,能夠一定程度上從圖片部分區域出發去生成更符合人類角度的描述,但還是存在一定的缺陷,當前在公開數據集下訓練的模型對未知的物體還是無法正確地生成描述。
(2)圖像描述的模型較為復雜,由于參數較多,模型訓練的步驟比較復雜,訓練時間也較長,一般都以指數量級繼續訓練,使得在實際應用時實時性不高。
(3)目前的模型依賴公開數據集訓練,這樣模型輸入一般是固定的圖像特征,這樣對于同一個圖像的描述內容基本沒有變化,生成的文本會相對單一。
圖像描述是一個相對新的研究任務,經過研究人員近幾年的發展,取得了巨大的進步。基于現有的研究成果,圖像描述任務仍有著很大的發展空間。
4.2.1 從有監督到無監督
圖像描述一般都是采用成對的圖像-文本集的有監督學習,在實際應用時,獲取這樣成對的圖片文本是一個耗費大量人力和時間成本的工程,這對于工業應用來說,獲取數據的成本太高了。無監督學習可以擺脫這樣的圖像-文本集,大大節省了人力物力。使用公開數據集的圖片和從目標網站爬取的文本語料庫進行無監督學習,結合GAN的方法可以有效地解決問題,這樣生成的文本也更加得豐富多樣化。
4.2.2 從死板單一到豐富多樣化
傳統方法從同一張圖片生成的描述基本是沒有變化的,這并不符合圖像描述的初衷,因此采用無監督學習以及Conditional GAN、SeqGAN 的應用,可以生成更加自然靈活的語句。
4.2.3 從語句到段落化
僅僅從圖像中生成一句話往往很難完整地概括圖片中的完整內容,因此從圖片生成段落是一個必然的趨勢,從幾張有關聯的圖片生成一段故事也成為可能。
4.2.4 從復雜到輕量化
當前的圖像描述模型較為復雜,在實際應用時往往很難落實,設計出更加輕量級的網絡結構能夠更方便地部署到工程落實中,乃至到手機等小型智能設備中,將這樣的技術落實到現實生活中能夠更好方便人類,自動駕駛、導航視覺障礙者都急需這樣的技術支持。
4.2.5 評價標準的更新
現如今的圖像描述不再滿足接近訓練文本,這在近幾年的發展中已經趨于成熟,自然多樣化的文本描述才是圖像描述的要求歸宿,因此現如今的評價標準已經無法滿足這樣的需求了,新的評價標準需求迫在眉睫。
本文從圖像描述在深度神經網絡中的發展應用出發,結合模型結構和算法的演變發展綜述具有代表性質的圖像描述方法,并對此進行不同方法的大致分類,在此基礎上進行梳理和對比,并在公開數據集上進行了實驗對比。實驗表明,圖像描述在基于編碼器-解碼器架構上已逐漸趨于成熟,在編碼階段旨在提取更高層次的語義關系來為后續解碼階段生成更為相關的描述,生成對抗網絡和圖卷積神經網絡的引入為生成更多樣化、人性化的描述提供了可能。為了應對當前社會環境的應用需求,圖像描述的發展還有著不少的挑戰。因此,基于深度神經網絡的圖像描述進一步研究還有很大的發展空間。