呂 凡,胡伏原,沈軍宇,孫 鈺
(蘇州科技大學(xué) 電子與信息工程學(xué)院,江蘇 蘇州 215009)
近年來,圖像多標(biāo)簽分類獲得了許多學(xué)者的關(guān)注。傳統(tǒng)的多標(biāo)簽分類算法分為兩種[1],分別是問題轉(zhuǎn)換法和算法適應(yīng)法。其中問題轉(zhuǎn)換法將多標(biāo)簽問題轉(zhuǎn)化為單標(biāo)簽問題進行計算,例如Binary Relevance算法[2]和Classifier Chains算法[3],等等;算法適應(yīng)法將已有的單標(biāo)簽分類算法應(yīng)用到多標(biāo)簽分類問題上,例如多標(biāo)簽k-NN算法[4]和多標(biāo)簽決策樹算法[5]。目前,針對圖像多標(biāo)簽分類問題,基于深度學(xué)習(xí)的方法受到廣泛關(guān)注,其中基于CNN的方法和基于CNN-RNN的方法取得了較好的效果。CNN方法通過卷積神經(jīng)網(wǎng)絡(luò)[6](Convolutional Neural Network,CNN)提取圖像中的高維特征,直接利用傳統(tǒng)分類器對特征進行分類。Gong等人[7]基于CNN構(gòu)建了一個配準(zhǔn)排序的top-k的目標(biāo)函數(shù),優(yōu)化后可以使得正樣本的排序高于負(fù)樣本,從而進行分類。Wei等人[8]提出了一種基于圖像子區(qū)域的方法,將圖像分解為多個包含單標(biāo)簽的子區(qū)域以簡化多標(biāo)簽問題。CNN-RNN方法借助循環(huán)神經(jīng)網(wǎng)絡(luò)[9](Recurrent Neural Network,RNN)的序列處理能力將圖像的多標(biāo)簽分類問題看作是一個序列生成問題。Wang等人[10]利用LSTM解析從CNN中提取的圖像特征,生成相關(guān)的圖像多標(biāo)簽序列。Liu等人[11]通過正確的標(biāo)簽來規(guī)則化CNN的參數(shù),并采用CNN的預(yù)測值初始化LSTM進行標(biāo)簽序列生成。上述CNN-RNN方法中,其前提在于將圖像的多個標(biāo)簽看作是具有一定規(guī)則的序列。
Jin等人[12]提出了在CNN-RNN結(jié)構(gòu)中,多標(biāo)簽預(yù)測結(jié)果和標(biāo)簽的順序具有密切關(guān)聯(lián),并驗證了采用不同的標(biāo)簽順序?qū)淖冾A(yù)測的效果。但由于圖像的多個標(biāo)簽是并列的關(guān)系,并不存在具體的前后順序,從而無法確定絕對合適的標(biāo)簽序列。僅采用一種設(shè)定的順序使得標(biāo)簽容易在RNN的迭代過程中丟失,無法保證預(yù)測到全部標(biāo)簽。例如,構(gòu)建CNN-RNN結(jié)構(gòu)對圖1所示圖像進行多標(biāo)簽預(yù)測,采用從左至右順序的預(yù)測結(jié)果為“sofa,bottle,plant,tv”,采用從遠(yuǎn)至近順序的預(yù)測結(jié)果是“tv,chair,sofa”,二者分別丟失了標(biāo)簽“chair”和標(biāo)簽“bottle,plant”。
圖1 按照不同順序預(yù)測的標(biāo)簽(括號內(nèi)代表缺失的標(biāo)簽)
筆者針對CNN-RNN方法中采用單一標(biāo)簽順序而導(dǎo)致預(yù)測效果不足的問題,提出了一種雙LSTM的方法CNN-BiLSTM。該方法在CNN-RNN的基礎(chǔ)上,構(gòu)建兩個LSTM序列生成模塊,通過不同的序列規(guī)則生成預(yù)測標(biāo)簽序列??紤]到雖然兩個LSTM的標(biāo)簽順序不同,但是標(biāo)注的內(nèi)容應(yīng)當(dāng)是一致的,通過均方誤差縮小由不同序列規(guī)則生成標(biāo)簽的差異。最終,通過結(jié)合兩個LSTM的標(biāo)簽預(yù)測結(jié)果減少標(biāo)簽的丟失,從而得到最終的預(yù)測標(biāo)簽。通過在PascalVOC2007數(shù)據(jù)集上的實驗驗證了提出方法的有效性。
將圖像的多標(biāo)簽分類問題定義為一個標(biāo)簽序列生成問題,以預(yù)測出給定圖像所有可能的標(biāo)簽。給定圖像訓(xùn)練集 X={x1,x2,…,xN}和對應(yīng)的標(biāo)簽 Y={y1,y2,…,yN},其中 N 代表訓(xùn)練圖像的數(shù)目。第 i張圖像 xi對應(yīng)的標(biāo)簽是 yi={yi1,yi2,…,yiC},其中 C 代表標(biāo)簽數(shù)目;yij=1 代表圖像 xi包含標(biāo)簽 j,否則 yij=0。文中構(gòu)建端到端的模型,學(xué)習(xí)從圖像到標(biāo)簽的映射h:X→Y。測試時,給定一張圖像,通過映射h預(yù)測出圖像對應(yīng)的多個標(biāo)簽。
文中設(shè)計的雙LSTM方法CNN-BiLSTM,其模型框架基于CNN-RNN的模型結(jié)構(gòu)。文中方法服從“編碼器-解碼器”(Encoder-Decoder)設(shè)計模式,通過這種模式可以學(xué)習(xí)從一種表征方式到另一種表征方式的轉(zhuǎn)化方法。編碼器部分利用CNN從所給圖像中提取圖像的高維特征,并在解碼器中利用RNN對特征進行解碼生成相關(guān)的圖像標(biāo)簽序列。模型結(jié)構(gòu)如圖2所示。
圖2 雙LSTM結(jié)構(gòu)的圖像多標(biāo)簽分類方法
基于CNN-RNN結(jié)構(gòu),模型中將圖像的多個標(biāo)簽看作是一種序列。文中首先利用CNN從圖像中提取出特征I。為了充分利用深度神經(jīng)網(wǎng)絡(luò)的特性,采用從最后一層全連接層提取特征。RNN部分構(gòu)建雙LSTM結(jié)構(gòu),其中每一個LSTM對圖像按照不同標(biāo)簽序列進行預(yù)測。RNN經(jīng)常應(yīng)用在序列的生成等任務(wù)[13],LSTM[14](Long-Short Term Memory)是 RNN 的變種結(jié)構(gòu),如圖3所示。在RNN的基礎(chǔ)上,LSTM加入了三個控制門,即遺忘門、輸入門和輸出門,分別來控制是否遺忘當(dāng)前的狀態(tài),是否獲取當(dāng)前的輸入信息以及是否輸出當(dāng)前的狀態(tài)。這三個控制門使得LSTM在長短期的序列記憶中都能夠有較好的表現(xiàn),并且使得模型更易于優(yōu)化。參照文獻[15],文中的LSTM的前傳流程可以表示為
圖3 LSTM的單元結(jié)構(gòu)
其中所有的W和b都代表待訓(xùn)練參數(shù),yt代表t時刻的輸入。it,ft和ot分別代表了LSTM中的輸入門、遺忘門和輸出門。ct和ht分別表示了LSTM的記憶單元和隱藏狀態(tài)。σ(x)=1/(1+e-x)為sigmoid激活函數(shù)。
文中在傳統(tǒng)的CNN-RNN的基礎(chǔ)上設(shè)計了雙LSTM的結(jié)構(gòu)CNN-BiLSTM。如圖2所示,通過CNN解析出圖像特征I之后,解碼器中構(gòu)建獨立的兩個LSTM結(jié)構(gòu)LSTM-1和LSTM-2,同時接受來自CNN的圖像特征。在此過程中,對輸入到LSTM中的每一個標(biāo)簽進行相同的Embedding操作
其中,ek=[0,…,0,1,0,…,0]是第 k 個標(biāo)簽的 one-hot編碼形式,說明圖像包含標(biāo)簽 k,其中 ek[k]=1;UE代表Embedding矩陣。通過LSTM單元運算之后,在預(yù)測下一個單詞的時候,對LSTM的隱藏狀態(tài)進行計算,得到當(dāng)前過程預(yù)測的標(biāo)簽
模型在LSTM的每一步預(yù)測都會計算一個局部損失,即考慮預(yù)測的標(biāo)簽和LSTM規(guī)定采用的序列順序中出現(xiàn)的標(biāo)簽一致。因此,文中對LSTM-1和LSTM-2分別計算其對數(shù)似然運算,得到各自的損失函數(shù)L1(i)和
在此基礎(chǔ)上,LSTM-1和LSTM-2雖然采用的不同序列規(guī)則生成多標(biāo)簽圖像的預(yù)測,但是其本身對應(yīng)的是同一張圖像,因此,生成的標(biāo)簽序列雖然順序不同,但應(yīng)當(dāng)內(nèi)容一致。例如,針對圖2中的圖像,預(yù)測的順序可能是“男孩、披薩、桌子”也可能時“披薩、男孩、桌子”,但是表現(xiàn)的內(nèi)容是一致的。因此,文中構(gòu)建了損失函數(shù)L3,來縮小二者之間的差異
綜上,構(gòu)建最終的損失函數(shù)L
文中采用了圖像多標(biāo)簽數(shù)據(jù)集PascalVOC2007[16]對所提算法進行驗證。PASCAL Visual Object Classes Challenge(Pascal VOC)數(shù)據(jù)集被廣泛使用在圖像多標(biāo)簽分類和語意分割等領(lǐng)域。數(shù)據(jù)集包含5 011張訓(xùn)練圖像和4 952張測試圖像,共包含20個類。
所提方法中,CNN部分采用VGG-16[17]的網(wǎng)絡(luò)結(jié)構(gòu),并從其最后一個全連接層fc_7提取圖像特征。VGG-16的參數(shù)采用在ImageNet大規(guī)模單標(biāo)簽數(shù)據(jù)集上將預(yù)訓(xùn)練的參數(shù)進行初始化。文中,LSTM-1和LSTM-2的隱藏狀態(tài)和記憶單元的大小都設(shè)為512。為了方便預(yù)測,在預(yù)測的文本序列中,插入了獨立的開始標(biāo)簽
文中的對比方法包括 INRIA[18]、FV[19]、CNN-SVM[20]、I-FT[8]、HCP[8]、CNN Multi-label以及 CNN-RNN。文中的雙LSTM方法CNN-BiLSTM中兩個LSTM采用了不同的標(biāo)簽序列規(guī)則。文獻[12]中的分析,采用四種不同的多標(biāo)簽序列規(guī)則,分別是:(1)高頻排序(Frequency),按照數(shù)據(jù)集中各個標(biāo)簽出現(xiàn)的頻率從高到低排序;(2)低頻排序(Rare),按照數(shù)據(jù)集中各個標(biāo)簽出現(xiàn)的頻率從低到高排序;(3)字典排序(Dictionary),按照各個標(biāo)簽的單詞首字母的在字典順序排序;(4)隨機排序(Random),按照隨機順序排序。
文中構(gòu)建的CNN-BiLSTM中的兩個LSTM分別采用高頻和低頻的順序進行標(biāo)簽的預(yù)測。
實驗結(jié)果見表1。文中提出的CNN-BiLSTM方法達到了85.4%的mAP(mean Average Precision),并且在標(biāo)簽 “table”、“dog”、“person” 和 “tv” 上取得了最好的效果。對比方法中,HCP-2000C取得了近似的結(jié)果85.2%,但該方法將圖像分割為多個子區(qū)域,并在訓(xùn)練中引入額外的2 000個類信息提高訓(xùn)練效果,效率較低且依賴于子區(qū)域的提取效果。在CNN-RNN的方法中,采用高頻排序(84.7%)和低頻排序(84.9%)取得的效果要明顯好于字典排序(84.1%)和隨機排序(83.8%),說明了標(biāo)簽的順序?qū)Y(jié)果具有較大影響。文中提出的CNN-BiLSTM的兩個LSTM分別采用高頻和低頻的排序方式,結(jié)合兩種序列規(guī)則,最終的結(jié)果高于單獨采用二者的結(jié)果,這證明了文中提出算法的有效性。如圖4所示,采用文中的CNN-BiLSTM結(jié)構(gòu)進行預(yù)測,對每一張圖像分別列出了其LSTM-1、LSTM-2、最終預(yù)測Pd和真實標(biāo)簽Gt。盡管LSTM-1和LSTM-2預(yù)測的結(jié)果可能不同或者不全部正確,但是通過融合二者的預(yù)測結(jié)果,可以使得最終的預(yù)測結(jié)果更加準(zhǔn)確。
表1 在VOC 2007上的實驗結(jié)果(包括每一個類的平均精度AP和所有類別的均值平均精度mAP)
圖4 在Pasocal VOC 2007上的預(yù)測圖例
筆者提出了一種雙LSTM的圖像多標(biāo)簽分類方法CNN-BiLSTM,該方法在CNN-RNN的基礎(chǔ)上,同時考慮不同序列順序的預(yù)測方式,構(gòu)建了兩個獨立的LSTM分別按照不同的標(biāo)簽順序規(guī)則預(yù)測。實驗證明,該方法能夠有效提高傳統(tǒng)CNN-RNN的效果,提高了只考慮一種標(biāo)簽順序情況的效果。