董虎勝,徐建峰,孫浩,吳銘儀
(1.江蘇省智能服務工程技術研究開發中心,蘇州215009;2.蘇州經貿職業技術學院,蘇州215009)
圖像描述生成(Image Caption)[1-2]是計算機視覺中一項新興的任務,它的目標是對給定的圖像自動生成一段有意義的描述性內容。由于該任務除了計算機視覺中傳統的檢測、分類等工作外,還涉及到對自然語言的處理,因此非常用具有挑戰性。作為對圖像的高層語意理解,圖像描述生成技術在圖像檢索、圖像與視頻事件分析、輿情分析等應用中具有廣泛的前景,因此一經提出便獲得了廣泛的關注。
目前在對圖像描述生成方法的研究中,基本上都采用了Encoder-Decoder的系統架構[3],借助于在其他視覺任務中取得了優秀性能的深度卷積神經網絡作為Encoder來獲得圖像的特征表達,再使用Decoder網絡根據特征表達訓練解碼器生成最終的文本描述序列。由于深度卷積神經網絡(Deep Convolutional Neural Network,DCNN)具有優秀的特征學習能力,而長短時記憶網絡(Long-Short Term Memory,LSTM)[4]具有很好的序列數據處理性能,使用CNN+LSTM的圖像描述生成方法在獲得的圖像描述質量上要顯著優于圖像特征與描述語句特征匹配的方法,與使用固定文本描述模板添加關鍵詞的方法相比,更具有靈活多樣性[5]。
在對圖像中的內容使用自然語言進行描述時,除了從整體把握圖像之外,人們也會更加關注圖中一些局部的信息,這對應于表達語句中的一些關鍵詞語,而句子中的其他詞語主要對這些關鍵詞語進行上下文的描述。
當前的深度學習領域已經提出了多種模型架構,如GoogleLeNet、VGG、ResNet等,這些架構在諸如圖像識別、目標檢測等其他計算機視覺任務中表現出了優秀的性能。另外這些優秀的模型還提供了在ImageNet數據集上作了訓練的參數,在其他任務中作適當調優即可作為優秀的特征提取器使用。因此,本文采用了在性能與網絡架構上取得比較好的平衡的ResNet-101深度殘差網絡(Residual Net)[6]作為模型的 Encoder,模型的參數為在ImageNet上訓練后的結果。
與其他的網絡架構相比,深度殘差網絡設計了一種特殊的“短路”結構。若將輸入設為x,將某一網絡層設為H,那么以x作為輸入后該層的輸出將為H(x)。如AlexNet和VGG等一般架構的CNN網絡會直接通過訓練學習出H的各個參數,即直接學習H:x?H(x)。但殘差學習的是使用多個網絡層學習輸入與輸出之間的殘差之間的殘差-x,即學習的是 H:x?+x,其中 x為恒等映射(identity mapping),而即為有參網絡層需要學習的輸入與輸出之間的殘差。在DCNN模型中基本上都采用了多個“卷積-池化”層的堆疊來實現對圖像進行空間嵌入,隨著模型層數的加深,所獲得的特征圖在空間尺寸上越來越小,但是在通道數上越來越多,一方面達到對嵌入空間的降維,同時也能夠捕捉原始圖像不同方面的特征。總體上,隨著層數的加深,學習到的特征也越來越抽象,更接近于對圖像高層語義信息的提取。本文在使用ResNet-101架構時丟棄了最后兩層,即全連接層與分類層,僅取最后輸出的2048個通道的14×14大小的特征圖(Feature Map)用作為Decoder的輸入。
作為圖像描述自動生成模型中的Decoder,其主要任務是接收Encoder輸出的特征圖并逐字生成對圖像的描述的句子。由于生成句子時需要按序列逐字生成,因此當前使用的Decoder模型均為循環神經網絡(Recurrent Neural Network,RNN)[7]。不過盡管樸素的RNN模型具有比較強的序列處理能力,但是僅能利用前一時刻的信息,無法捕捉到較遠間隔前的相關信息。與樸素RNN相比,常短時記憶網絡(Long-Short Term Memory,LSTM)采用了四個特殊的門結構來實現對長時依賴關系的處理,有效地解決了序列數據中的長時記憶與短時依賴。圖1給出了LSTM網絡的結構。
如圖1所示,LSTM實際上是一種具有重復神經網絡模塊(即LSTM Cell)的鏈式形式。在LSTM Cell中包含了遺忘門、輸入門、輸出門三個門結構,它們分別控制了當前的輸入樣本與Cell前一時刻的狀態對當前狀態Ct的影響,以及當前Cell狀態中有多少信息被輸出到LSTM的輸出ht中。通過對這些處理的循環迭代,LSTM就實現了對Cell狀態的序列化更新處理。訓練好的LSTM網絡就能夠捕獲序列數據中長短時依賴關系及數據內在模式。

圖1 LSTM網絡展開結構圖
LSTM中的遺忘門決定了當前Cell需要從前一個時刻的狀態Ct-1中丟棄什么信息,遺忘門接收前一時刻的狀態ht-1與當前輸入的樣本xt,并使用sigmoid函數輸出一個位于(0,1)之間的數,實現對原有記憶信息進行選擇性的保留和遺忘。該步驟的運算式為:

式中Wf和bf分別為權重矩陣與偏置向量,表示向量的拼接運算,為sigmoid函數。
在前一時刻的狀態ht-1與當前輸入的樣本xt經過遺忘門后,下一步需要決定讓多少新的信息被存儲進Cell狀態中。這一過程分為兩步,首先是使用遺忘門來決定哪些信息需要被更新,即獲得圖1所示的it;其次是使用一個tanh層生成用于Cell狀態更新的備選向量接下來,Cell新的狀態將由通過遺忘門的信息與通過輸入門的信息相加來獲得。整個過程可以被表達為如下的算式:

式中的?表示對向量按元素進行相乘的運算。
LSTM Cell最終的輸出是Ct過濾后信息,首先由輸出門來確定Cell中哪些信息將被輸出,即獲得一個過濾模板Ot,然后將通過tanh激活的Ct與Ot相乘獲得最終輸出ht。整個過程可表達為如下的算式:

盡管直接使用LSTM作為Decoder即可實現對圖像描述的生成,但是語言描述生成時采用的是按序列逐詞生成的方式,這些詞與圖像中的內容應具有很強的圖-文相關性,但是從整幅圖像中提取的特征會引入不必要的噪聲,增強了圖像特征的語意模糊性。反之,若能夠生成的詞語找到圖像中的對應的區域,再提取特征則可以增強圖像特征的表達能力。這種在圖像特征提取取對圖像不同區域施加不同權重的策略即為注意力機制。圖像的注意力機制應滿足=1的條件,即圖中的各像素點的權重αp,t的和應為1,p指代像素點位置。
本文的注意力網絡接收Encoder網絡生成的特征圖后,首先將使用扁平化運算將其變形為N×14×14×2048維的向量,然后通過由三層全連結層、一層ReLU激活層和一層Softmax層構成的網絡。Softmax層的輸出即為獲得的注意力權重。
獲得權重后,在描述句子的生成中的每一步中,都需要使用注意力網絡根據Encoder生成的特征圖與LSTM前一步的狀態ht-1計算每個像素的權重,然后再根據LSTM前一步生成的單詞與當前加權的特征圖生成下一個單詞。完整的圖像描述生成模型如圖2所示。

圖2本文基于注意力機制引導的圖像描述生成模型
為了驗證本文基于注意力機制引導的圖像描述生成模型的有效性,在MSCOCO(Microsoft Common Objects in Context)2014數據集上進行了實驗。MSCOCO2014數據集為每張圖像提供了至少5個文字描述句子,而且已經作了訓練集、驗證集、測試集的劃分,其中分別包含113287、5000、5000張圖像。本文僅在訓練集上對模型進行訓練,并在測試集上進行圖像描述句子的生成,采用人工觀測圖像描述進行評價,未引入客觀量化評分標準。
在實驗中單詞嵌入維度為512維,由于訓練集中圖像描述句子中單詞數量長短不一,為了使輸入的序列具有相同的長度,在對各個句子按單詞數量降序后進行了填補。在LSTM與注意力網絡中設置隱藏層與Softmax輸出的維度均為512維。在訓練時設置Encoder與Decoder模型的優化器均為Adam,初始學習率分別為0.0001與0.0005,并每隔20個epoch進行0.9倍的衰減。此外,實驗中取批次大小為32,訓練最大epoch數為120。模型使用Ubuntu環境下的PyTorch深度學習框架實現,采用NVIDIA GTX 1080顯卡進行硬件加速。
圖3給出本文模型在測試集上獲得的圖像描述生成結果,從圖中可以看出訓練后的模型能夠生成比較流暢的文本描述,語句的結構比較完整,與圖中內容也比較匹配吻合。

圖3
本文提出了基于注意力機制引導的圖像描述生成算法。模型使用深度卷積神經網絡作為圖像特征的提取器,在獲得圖像的特征圖后使用LSTM語言模型來生成圖像描述,為了使生成的描述句子更為準確,根據LSTM的輸出與特征圖計算了注意力權重,使得提取的特征具有更好的表達能力。在MSCOCO數據集上的實驗表明本文模型能夠生成比較優秀的文本描述。