李玉剛,王永濱
(1.中國傳媒大學(xué) 計算機與網(wǎng)絡(luò)空間安全學(xué)院,北京 100024;2.廣播科學(xué)研究院,北京 100866)
通常理解一張圖像不但要能夠識別出圖像中存在的物體,對圖像中物體之間關(guān)系的分析是理解一張圖像的關(guān)鍵。而一張圖像通常包含幾十種關(guān)系,比如視覺基因組(Visual Genome)[1]平均每張圖像包含35個物體及21對關(guān)系。這些關(guān)系中大部分對理解圖像沒有影響,如果不加選擇的識別圖像中所有的物體及其之間的關(guān)系不但對理解圖像沒有任何幫助而且增加了計算量。一張圖像中的關(guān)系通常被表示成多個相互獨立的(主語、謂語、賓語)三元組形式,但是觀察發(fā)現(xiàn)圖像中物體之間的關(guān)系通常存在著依賴關(guān)系,比如圖1包含多個物體及多個關(guān)系,但是理解圖像的關(guān)鍵物體只有體重秤、站在體重秤上的人和踩在體重秤上的人及他們?nèi)咧g的關(guān)系。
本文受到基于注意力機制的圖像描述生成算法[2]啟發(fā),利用長短時記憶網(wǎng)絡(luò)(Long Short Term Memory networks,LSTMs)為視覺關(guān)系之間的依賴建模,基于關(guān)系之間存在的聯(lián)系提取圖像中的主要物體并識別物體之間的關(guān)系。
圖1 圖中包含多個物體及物體之間關(guān)系
近幾年,由于深度學(xué)習(xí)算法的推動,圖像識別的準確率得到大幅提升,更多的學(xué)者轉(zhuǎn)向?qū)D像理解的研究,從而建立圖像與語義之間的橋梁。圖像視覺關(guān)系識別是圖像理解的基礎(chǔ),主要有兩種方法:把物體及其關(guān)系作為一個整體去識別;分別識別圖像中的物體及物體之間的關(guān)系[3-5]。前一種方法由于物體及關(guān)系的表現(xiàn)形式多樣實際應(yīng)用時計算復(fù)雜度高,本文采用后一種方法,涉及以下幾種算法。
LSTM是一種特殊結(jié)構(gòu)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),能夠保存之前較長時刻的狀態(tài)。LSTM在RNN的基礎(chǔ)上增加了3個門:遺忘門f控制是否遺忘當前狀態(tài),輸入門i指示是否讀取輸入,輸出門o控制是否輸出:
xt=σ(Urr(t-1)+Uwwk(t))
it=σ(Uirr(t-1)+Uiwwk(t))
ft=σ(Uorr(t-1)+Uowwk(t))
r(t)=ft⊙r(t-1)+it⊙xt
o(t)=r(t)⊙o(t)
(1)
式中σ表示sigmoid函數(shù),xt、it,ft,r(t),o(t)分別表示隱層狀態(tài)、輸入、遺忘、記憶和輸出,U表示需要學(xué)習(xí)的權(quán)重矩陣。
針對物體檢測的算法比較多:R-CNN[6],YOLO[7],SSD[8]以及它們的很多改進算法。SSD相比于其它的模型由于取消了候選框(Region proposals)、像素重采樣(pixel resampling)這些階段,使SSD更容易訓(xùn)練,也更容易把檢測模型融合進系統(tǒng)之中[9]。本文采用SSD進行物體檢測,其網(wǎng)絡(luò)結(jié)構(gòu)基于VGG-16,使用前面的5層,然后利用astrous算法將fc6和fc7層轉(zhuǎn)化成兩個卷積層,再額外增加了3個卷積層和1個average pool層。不同層次的feature map分別用于default box的偏移以及不同類別得分的預(yù)測,最后通過nms得到檢測結(jié)果。
近幾年,注意力模型(Attention Model)被廣泛應(yīng)用于機器翻譯[10]、圖像描述[2]、自然語言處理等領(lǐng)域。目前,注意力機制多采用Encoder-Decoder框架,如圖2所示。
圖2 引入注意力的Encoder-Decoder
Decoder在輸出Yi時根據(jù)前一個時刻隱層節(jié)點的輸出Hi-1與Encoder隱層節(jié)點的輸出進行匹配,即通過函數(shù)fatt(Xi,Hi-1)計算出在圖像的不同位置提取的特征Xi(i=1,2…L,L表示輸入序列長度)與Hi-1的相關(guān)程度αti,然后通過計算時刻t關(guān)注的圖像中的物體。
本文提出一種基于注意力機制的圖像視覺關(guān)系識別框架,系統(tǒng)架構(gòu)如圖3所示。系統(tǒng)主要分為兩模塊:物體檢測和關(guān)系識別,物體檢測模塊采用SSD識別出圖像中包含的多個物體作為關(guān)系識別模塊的輸入。關(guān)系識別模塊是基于注意力模型的RNN,通過使用VGG-16提取物體檢測模塊輸出的物體的classme、box及visual特征[3]作為輸入,組成物體特征集合,每次從集合中提取兩個物體并識別物體之間的關(guān)系。
圖3 系統(tǒng)架構(gòu)
注意力模型受人類注意力機制的啟發(fā),人在觀察圖像的時候不是一次就把整幅圖像的每個位置都看過,大多是根據(jù)經(jīng)驗將注意力集中到圖像中的特定位置。注意力模型打破了Encoder-Decoder模型在編解碼時都依賴于內(nèi)部一個固定長度向量的限制,提取圖像中特定區(qū)域的特征,從而有效地降低計算復(fù)雜度。通過在解碼端選擇與上下文信息z0匹配的編碼輸出序列,由于解碼器是基于LSTM的循環(huán)神經(jīng)網(wǎng)絡(luò),時刻t-1的隱層輸出作為t時刻的輸入從而能夠保持之前序列的信息。目前,注意力模型已經(jīng)在物體識別[11]、圖像描述[2]、自然語言處理[12]等領(lǐng)域得到了廣泛應(yīng)用。
eti=fatt(ai,ht-1)
(2)
式中ai表示從圖像中提取的物體特征,ht-1表示前一時刻的隱狀態(tài),通過注意力模型fatt計算得到時刻t每個物體ai的權(quán)重。fatt可以理解為求兩者的相似性,常見的方法包括:求兩者的向量點積、求兩者的向量Cosine相似性或者通過引入額外的神經(jīng)網(wǎng)絡(luò)求值。
模型在訓(xùn)練時采用端到端的方式,損失函數(shù)使用交叉熵函數(shù),為了降低梯度消失造成的影響采用rmsprop優(yōu)化算法。初始化時,首先用MS COCO對SSD進行訓(xùn)練,然后用高斯權(quán)重初始化整個系統(tǒng)。VGG-16使用ImageNet 2012進行預(yù)訓(xùn)練。
關(guān)系序列(r1,r2,…,rN)中每個元素rt通過從物體集合O中挑選兩個物體并結(jié)合之前的關(guān)系r1,r2,…,rt-1得到。
=P(rk|O,r1,…,rk-1)
(3)
生成序列時如果前一時刻的元素是錯的將導(dǎo)致后面時刻元素的預(yù)測結(jié)果錯誤,從而使整個序列出現(xiàn)錯誤。為解決這個問題我們采用Beam搜索算法查找最有可能的關(guān)系序列。Beam算法的主要思想是查找N個可能的序列組,然后計算每個序列組的得分從中選擇分數(shù)最高的作為最終結(jié)果。
本文采用視覺基因組(Visual Genome)[1]數(shù)據(jù)集,包含99,658張圖像,共200個物體分類和100對視覺關(guān)系。我們?nèi)∑渲?000張圖像用于訓(xùn)練,1000張圖像用于測試。本文采用Recall@50(R@50)及Recall@100(R@100)對實驗結(jié)果進行度量,R@K表示沒K個預(yù)測結(jié)果中正確結(jié)果所占的比例。
由于本文提出的系統(tǒng)涉及到物體檢測和關(guān)系識別兩個部分,我們只驗證關(guān)系識別模塊的準確性,給系統(tǒng)輸入已完成物體檢測的圖像。與以往的識別圖像中所有物體之間的關(guān)系不同,本文提出的圖像關(guān)系識別算法提取圖像中的主要物體及其之間的關(guān)系。為了簡化,目前只識別騎、上、穿幾個關(guān)系對系統(tǒng)進行驗證,實驗結(jié)果如表1所示。
表1 視覺關(guān)系識別實驗結(jié)果
由實驗結(jié)果可見,本系統(tǒng)的識別精度略低于同類其它系統(tǒng),這是由于目前本系統(tǒng)主要關(guān)注是否能夠提取圖像中的主要物體及其關(guān)系,在這方面系統(tǒng)的表現(xiàn)達到了實驗預(yù)期。
本文提出了一種基于注意力機制的端到端的圖像視覺關(guān)系識別算法,算法的關(guān)鍵是能夠在對整張圖像的理解基礎(chǔ)上提取出圖像中的關(guān)鍵物體并識別它們之間的關(guān)系,簡化了視覺關(guān)系識別的計算復(fù)雜度。算法在MS COCO數(shù)據(jù)集上測試得到了較高的準確度??深A(yù)見,該方法今后會在圖像/視頻檢索、圖像描述、物體檢測等領(lǐng)域得到廣泛應(yīng)用。今后我們的工作主要在以下幾個方面:1)擴大系統(tǒng)能夠識別的關(guān)系集合,使系統(tǒng)能夠識別更多的關(guān)系,并提高系統(tǒng)的識別準確度;2)對多個物體之間的關(guān)系進行建模,比如(男人,拿,桶,喂,馬);3)研究關(guān)系識別在圖像及視頻內(nèi)容檢測、搜索方面的應(yīng)用。