北京市延慶區(qū)第一中學 曹 斌
自動圖像描述功能從表面上來看,機器不僅要識別出圖像中包括哪些物體,同時還必須能夠理解并描述物體之間的聯(lián)系以及它們各自的基本屬性和參與的活動,這屬于機器高級智能形態(tài)的表現(xiàn)了。
從具體實現(xiàn)機制上來看,自動圖像描述從信息輸入到輸出經(jīng)歷了信息的編碼和解碼兩個部分,在機器翻譯中,信息編碼把輸入圖像變成特征數(shù)據(jù),解碼部分再將特征數(shù)據(jù)轉(zhuǎn)換成目標語言。所以圖像描述結合了智能系統(tǒng)兩個領域的發(fā)展成果:“看”和“語言表達”,分別對應人工智能最重要的兩個領域: 機器視覺和自然語言處理。
圖像描述的任務是通過一定的訓練,讓機器自動生成一句話S,來描述給定的二維圖像I。句子中的第t個單詞記為,其中N是句子的長度。是一個特殊的單詞,表示句子結束。注意句子是變長的。單詞來自于事先給定的詞典,對詞典中的單詞進行編碼后,可以用一個P維向量表示單詞。一種常用的編碼方式是one-hot編碼,它的編碼的長度P等于詞典中的單詞個數(shù),如果單詞只有第p個元素為,其余元素全為,那么就可以表示詞典中的第p個單詞。但是one-hot編碼的效率比較低。而且,在使用one-hot編碼的情況下,所有的單詞都是獨立的,距離也是固定的。而在實際情況中,一些意義比較相近的字詞,它們在空間的表示應該比較接近。因此可以進一步對單詞進行word embedding處理。Embedding編碼把單詞映射為空間中的實向量,可以更好地表示單詞之間的相似性。
要對圖像進行描述,可以先對圖像中的物體進行檢測與識別,從中提取出有效特征。卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)是一種有效的圖像識別方法。因為句子中的單詞是有順序的,所以可以使用循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Networks, RNN)學習語言模型,把圖像識別的結果轉(zhuǎn)換為自然語言。中文圖像描述的基本模型是把CNN的最后一個隱含層的狀態(tài)作為LSTM的輸入。而且中文標注具有其特殊性,可以直接把句子中的單個的字作為單詞,也可以通過分詞的方法,把句子中的語素提取出來作為單詞。
本模型主要有兩個重要部分組成:特征提取層和語言生成層。
(1)特征提取層。特征提取層是基于DCNN(Deep Convolutional Neural Network)深度卷積網(wǎng)絡對輸入的圖像進行編程,輸出一個N維特征向量,來提取每個特征中所包含的信息量。本模型中DCNN采用的是VGG網(wǎng)絡。VGG網(wǎng)絡架構于2014年出現(xiàn)在Simonyan和Zisserman中的論文中[3]。它把網(wǎng)絡分為5組(模仿AlexNet的五層),使用的卷積核大小為 3 x 3,并把它們組合起來作為一個卷積序列進行處理。VGG網(wǎng)絡的特點是:VGG網(wǎng)絡非常深,一般有16~19層;由于它采用多個3 x 3的卷積,模仿出更大的感受野的效果。這些思想也被用在了后續(xù)的網(wǎng)絡架構中,如 Inception 與 ResNet。VGG網(wǎng)絡也有一些不足:1)訓練很慢;2)weights很大。
(2)語言生成層。利用VGG網(wǎng)絡提取完圖像特征之后就可以使用LSTM來學習和生成相應標注。LSTM的初始輸入是用CNN做圖像特征提取后的輸出向量。LSTM節(jié)點內(nèi)部運算可以表示為:
其中變量ct表示節(jié)點內(nèi)部記憶,變量ft表示是否遺忘節(jié)點當前記憶,變量it表示是否讀取新的輸入,變量ot表示是否輸出節(jié)點記憶,變量mt表示隱含狀態(tài)。W是待訓練的網(wǎng)絡參數(shù),以后用θ來表示。非線性變換表示sigmoid函數(shù),表示雙曲正切函數(shù)。符號表示Hadamard積。
網(wǎng)絡的輸出Pt是P維向量,表示對每個單詞出現(xiàn)在句子的第t個位置的概率的預測。LSTM網(wǎng)絡的訓練過程為,學習最佳的模型參數(shù)θ,使得最大化在給定圖片下其生成正確描述的概率最大:
其中I表示訓練集中的一個圖像,而S表示描述該圖像的一個合適的標注(即正確的句子),θ為網(wǎng)絡需要學習的參數(shù)。
由于訓練集不夠大,對整個數(shù)據(jù)集進行分布估計的效果不足,所以本模型容易出現(xiàn)過擬合問題。針對該缺點,可采取多種解決方法:如正則化、 early stopping、dropout、利用驗證集進行交叉檢驗、權值衰減等方式。其中,正則化是在目標函數(shù)或代價函數(shù)后面增加一個正則項,降低模型的復雜度,增強模型對噪聲的抗干擾能力。Early stopping方法在模型對訓練集迭代收斂前截斷迭代次數(shù),停止迭代,具體思路是在訓練的過程的同時,記錄驗證集上的正確率,記錄驗證集的正確率達到最佳時的epoch數(shù),之后驗證集的正確率開始下降則停止訓練;本實驗有驗證數(shù)據(jù),可以使用該方法。dropout方法是修改神經(jīng)網(wǎng)絡本身的結構來防止過擬合,在每次迭代中設置一定的比例隨機刪除一些隱藏層的神經(jīng)元,假設這些神經(jīng)元不存在,同時保持輸入層與輸出層的神經(jīng)元的個數(shù),這樣便得到新的神經(jīng)網(wǎng)絡。這些方式都可以降低模型對訓練集的過度依賴,防止過擬合問題,提高模型的泛化能力。
這里基于python語言建立一個基礎的中文圖像描述模型。本模型使用VGG19網(wǎng)絡的第一個全連接層fc1的特征,維數(shù)為4096,訓練集有8000張圖片,每個圖片配有3~5句標注,一共有38445句標注。
首先構造feature和caption之間的一一對應向量,由于caption個數(shù)比feature多,所以按照caption排列成一個38445×1的向量,根據(jù)它生成相應的大小為38445×4096的特征矩陣。然后對所有caption中出現(xiàn)的單詞個數(shù)進行計數(shù):如果不對中文進行分詞,則一共有2591個不同的單詞,其中出現(xiàn)頻數(shù)大于3的單詞只有1885個;如果使用Jieba庫 對中文進行分詞處理,則基本單元的組合數(shù)變多, 一共有11552個不同的單詞組合,其中出現(xiàn)頻數(shù)大于3的單詞組合只有3786個。根據(jù)找到的頻數(shù)大于3的單詞構造詞典,并計算每一個單詞的出現(xiàn)概率。用于LSTM的語言生成模型中,其中,word embedding的結果x_t的維數(shù)為256,LSTM的隱含層的維數(shù)等于256,且LSTM模型參數(shù)優(yōu)化方法是Adam,設置學習率為0.001。為防止過擬合,訓練時利用驗證集測試結果。實驗平臺為Ubuntu 14.04, 配置的GPU為Nvidia TITANX,使用Tensorflow 1.1.0版本。在該配置下,模型需要迭代約6個epoch,總共訓練用時小于半小時。
圖1 草地上的斑馬
本模型的訓練結果為:
由此可見本模型在一定程度上可以學習出語句中漢字之間的聯(lián)系。但是模型一也存在很大的局限性,只適合于處理一些比較普通而且變化不大的句子,不適合區(qū)分相似的事物。比如上一個例子中本模型無法精確識別斑馬數(shù)量上的特征。下表1為本模型在不同測試集上的指標。
表1 所建模型在測試集上的指標
經(jīng)過調(diào)試,本模型達到了較好效果,這與我們的預期以及人類進行圖片描述的行為方式表現(xiàn)基本一致。此外,本實驗還比較了分詞與不分詞對模型效果的影響:不分詞的結果要略優(yōu)于分詞,這與我們的直覺相反,原因可能是分詞不準確引入了噪聲,以及我們的訓練集樣本量相對較小,分詞后產(chǎn)生的詞典更大,解空間的復雜度增加,模型更大概率收斂到效果較差的局部最優(yōu)解。
[1]高永英,章毓晉.基于多級描述模型的漸進式圖像內(nèi)容理解[J].電子學報,2001,29(10):1376-1380.
[2]鄭永哲.基于深度學習的圖像語義標注與描述研究[D].廣西師范大學,2017.
[3]蔡曉龍.深度學習在圖像描述中的應用[J].電腦知識與技術,2017,13(24).
[4]雷國偉,呂迎陽,紀安妮等.圖像特征的CNN提取方法及其應用[J].計算機工程與應用, 2004,40(14):204-206.