姜有亮,張鋒軍,沈沛意,3,張 亮,3
(1.西安電子科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院,陜西 西安 710071) (2.中國電子科技網(wǎng)絡(luò)信息安全有限公司,四川 成都 610041) (3.西安電子科技大學(xué)西安市智能軟件工程重點實驗室,陜西 西安 710071)
深度學(xué)習(xí)技術(shù)在目標檢測、圖像語義分割等基本視覺理解任務(wù)上取得了顯著的成果,但對于對視覺信息的整體感知和有效表達仍然不夠. 人們希望計算機可以理解圖像中更深層次的語義信息. Johnson等人提出了場景語義結(jié)構(gòu)圖(scene graph,簡稱場景圖)[1],這是一種對特定場景中語義信息的結(jié)構(gòu)化文本表示,其中,節(jié)點表示物體,邊表示物體之間的關(guān)系. 場景圖生成是將輸入的圖像解析成一種結(jié)構(gòu)化的文本表示,其核心任務(wù)是檢測視覺關(guān)系,即檢測關(guān)系三元組(主體、關(guān)系、賓語)[2-4]. 目前主流的場景圖生成方法遵循兩階段流程[5],第一階段由目標檢測算法得到圖像中的物體集合,并根據(jù)物體的信息提取關(guān)系特征,然后執(zhí)行一個分類任務(wù)以確定每個物體對之間的關(guān)系.
場景圖生成的基礎(chǔ)任務(wù)是目標檢測. 現(xiàn)有的目標檢測算法有傳統(tǒng)檢測算法和基于深度學(xué)習(xí)的檢測算法. 傳統(tǒng)目標檢測算法多基于滑動窗口的框架或是根據(jù)特征點進行匹配,已難以滿足人們對目標檢測效果的要求. 隨著深度學(xué)習(xí)在圖像分類任務(wù)上取得巨大進展,基于深度學(xué)習(xí)的目標檢測算法逐漸成為主流,并取得了極大的成功. 目前基于深度學(xué)習(xí)模型的目標檢測算法可分為兩大類:一種是基于區(qū)域建議的目標檢測算法,其將目標檢測問題劃分為兩個階段,第一階段產(chǎn)生候選區(qū)域(region proposals),包含目標大概的位置信息,第二階段對候選區(qū)域進行物體分類和位置精修,該算法的典型代表有R-CNN[6]、Fast R-CNN[7]和Faster R-CNN[8]等;另一種是基于回歸學(xué)習(xí)的目標檢測算法,其不需要區(qū)域建議階段,可直接預(yù)測物體的類別概率和位置坐標值,比較典型的算法有YOLOv1-v3[9-10]、SSD[11]和RetinaNet[12]等.
圖卷積神經(jīng)網(wǎng)絡(luò)(graph convolutional neural network,GCN)的出現(xiàn)是為了在非歐幾里得結(jié)構(gòu)數(shù)據(jù)上進行卷積操作. 目前圖上的卷積定義可分為兩類[13]:一是基于頻域或譜域(spectral domain)的圖卷積,通過傅里葉變換將結(jié)點映射到頻域空間,通過在頻域空間上做乘積來實現(xiàn)時域上的卷積,最后再將做完乘積的特征映射回時域空間;另一種是基于空間域(spatial domain)的圖卷積,通過聚合鄰居節(jié)點的信號對節(jié)點的特征做變換. 基于空間域的圖卷積神經(jīng)網(wǎng)絡(luò)模型是近年來研究的熱點,代表性的模型有GCNConv[14]、GAT[15]和GraphSAGE[16]等.
本文提出一種基于語義連通圖的場景圖生成算法,將關(guān)系檢測過程分為關(guān)系建議和關(guān)系推理兩步. 以目標檢測算法得到的候選對象為節(jié)點集合,構(gòu)建一個全連接圖,并使用物體的類別信息和相對空間關(guān)系計算物體之間存在關(guān)系的概率,通過設(shè)置閾值來刪除圖中無效連接,得到稀疏的語義連通圖. 為了融合物體的上下文信息,使用圖神經(jīng)網(wǎng)絡(luò)對圖節(jié)點的特征進行聚合. 最后根據(jù)語義連通圖的連接關(guān)系,結(jié)合更新后的主語和賓語特征,以及兩個物體聯(lián)合區(qū)域的特征構(gòu)建關(guān)系特征,預(yù)測語義圖中的每條邊對應(yīng)的關(guān)系類別.
場景圖生成可以看成兩階段的語義檢索過程,首先使用目標檢測算法生成節(jié)點,然后檢測物體間的視覺關(guān)系得到邊.
定義1給定一張圖像I,其對應(yīng)的場景圖用S表示,B={b1,…,bn}?R4是候選區(qū)域的集合,元素bi表示第i個區(qū)域的邊界框.O={o1,…,on}?N是對象的集合,元素oi表示區(qū)域bi對應(yīng)的物體的類別標簽.R={r1→2,r1→3,…,rn→n-1}是關(guān)系的集合,元素ri→j對應(yīng)一個視覺關(guān)系三元組ti→j={si,ri→j,oj},其中si和oj分別表示關(guān)系的主語和賓語.場景圖生成過程可以分解為3部分[17]:
p(S|I)=p(B|I)p(O|B,I)p(R|O,B,I).
(1)
式(1)中,邊界框組件p(BS|S)生成一組候選區(qū)域,這些區(qū)域包含了輸入圖像中的大部分關(guān)鍵對象.對象組件p(OS|BS,S)預(yù)測每個區(qū)域中物體的類別.這兩部分可通過廣泛使用的Faster R-CNN檢測器來實現(xiàn).關(guān)系組件p(RS|OS,BS,S)推斷每個物體對之間的關(guān)系.
場景圖生成的核心是檢測視覺關(guān)系.檢測一對物體間的關(guān)系有兩種思路,一種是直接看作分類問題,即假設(shè)數(shù)據(jù)集中共有K種關(guān)系謂詞,則有K+1種分類結(jié)果,其中+1表示兩個物體間沒有關(guān)系;另一種是先預(yù)測兩個物體之間是否存在關(guān)系,若存在關(guān)系,則再進行K種關(guān)系的分類. 對于第一種方式,將任意兩個對象關(guān)聯(lián)為一個可能的關(guān)系會形成一個全連接圖,通過刪除一些在語義上弱依賴的對象之間的連接便形成稀疏的語義連通圖. 語義連通圖中的邊表示兩端的物體間的語義關(guān)聯(lián)度更強,更易發(fā)生關(guān)系. 稀疏的語義連通圖計算量小,精簡了節(jié)點的鄰接域,減少了干擾,使用圖網(wǎng)絡(luò)提取特征更合理高效.
基于語義連通圖的場景圖生成算法的整體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,主要分為以下幾個步驟:
(1)目標檢測和特征提取:使用Faster R-CNN網(wǎng)絡(luò)檢測物體,并使用Faster R-CNN的輸出構(gòu)建物體節(jié)點的初始特征.
(2)關(guān)系提議:將任意兩個對象關(guān)聯(lián)為一個可能的關(guān)系以形成一個全連接圖,然后使用一個關(guān)系建議模塊刪除不會發(fā)生關(guān)系的兩個物體之間的連接,從而形成一個稀疏的語義連通圖.
(3)特征增強:在語義圖上使用圖卷積網(wǎng)絡(luò)模型對結(jié)點的特征進行更新和增強,使得結(jié)點融合上下文環(huán)境信息.
(4)聯(lián)合區(qū)域視覺特征提取:對于有連接關(guān)系的物體對,將其聯(lián)合邊界框映射到特征圖上,得到關(guān)系RoI,使用CNN提取關(guān)系RoI對應(yīng)的視覺短語特征.
(5)物體和關(guān)系預(yù)測:根據(jù)細化的對象特征重新預(yù)測物體類別,將視覺短語特征、主語和賓語特征進行哈達瑪乘積運算得到關(guān)系的特征,使用分類器對關(guān)系進行分類.
圖1 整體網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.1 Overview of the model
本文使用Faster R-CNN網(wǎng)絡(luò)作為基礎(chǔ)的目標檢測模型. Faster R-CNN的輸出包含物體的類別信息(類別概率向量)和物體邊界框(bounding box,BBox)(代表物體在圖像上的位置信息). 對于Faster R-CNN檢測出的每個物體,可以得到3種初始信息:
(1)視覺特征:物體的視覺特征使用Faster R-CNN后端的兩層全連接層輸出的4 096維特征,vi∈R4096.
(2)空間特征:物體的邊界框由(x,y,w,h)4個值表示,分別為中心點的橫縱坐標及矩形框的長和寬,用正弦位置編碼對位置坐標進行轉(zhuǎn)化,然后使用一組可訓(xùn)練的參數(shù)以學(xué)習(xí)的方式轉(zhuǎn)化相對位置特征,將 4維向量表示的位置特征映射到128維,即si∈R128.
(3)語義特征:語義特征是物體類別標簽的詞嵌入(word embedding),采用預(yù)訓(xùn)練的Word2vec將類別標簽轉(zhuǎn)化為對應(yīng)詞向量li∈R200.
在所有O(n2)個物體對中,只有一小部分物體對可能具有關(guān)系.大量的連接會使訓(xùn)練和推理難以進行,且冗余的關(guān)系建議會降低召回性能.因此需要構(gòu)建一個語義指導(dǎo)的關(guān)系建議網(wǎng)絡(luò),以刪除全連接圖中語義依賴性弱的物體之間的連接,從而構(gòu)建高效的語義連通圖.本文使用預(yù)訓(xùn)練的Word2vec模型學(xué)習(xí)單詞嵌入,從而得到對象之間的語義依賴.詞嵌入矩陣為We∈RC×m,每一行為一個物體類別標簽的詞嵌入向量,則物體i的語義嵌入可表示為:
ei=si·We,
(2)
式中,si∈RC為物體i的預(yù)測類別分布向量,是Faster R-CNN后端用于分類的全連接層的輸出,C為數(shù)據(jù)集中物體類別數(shù)量.式(2)表示的詞嵌入是一種軟嵌入,考慮了Faster R-CNN模型給出的對象類別預(yù)測的不確定性,能夠減輕對象分類誤差帶來的負面影響.
(3)
然后將關(guān)系表示ri,j送入多層感知機(multilayer perceptron,MLP). MLP的輸出由Sigmoid函數(shù)正則化到[0,1]區(qū)間,即得到語義依賴分數(shù)SCi,j,該分數(shù)表示對象對(oi,oj)之間形成一個有意義的關(guān)系的可能性.選擇語義依賴得分在top-K且大于閾值的對象對. 由于非極大值抑制(non-maximum suppression,NMS)[18]會降低關(guān)系提議的召回率,本文使用top-K來限制關(guān)系建議的最大數(shù)量,以提高訓(xùn)練的有效性,并使用分數(shù)閾值來減少冗余.
(1)GCNConv:GCNConv從圖譜理論角度定義圖結(jié)構(gòu)上的卷積操作,其信息聚合的方式為:
(4)
(5)
式中,ej,i表示源節(jié)點i到目標節(jié)點j之間的邊的權(quán)重.
(2)GAT:GAT將自注意力機制引入圖網(wǎng)絡(luò),注意力機制可看作為在將一個節(jié)點的鄰居的特征聚合到這個節(jié)點時為每個鄰居節(jié)點分配的權(quán)重,其節(jié)點特征的更新方式為:
(6)
其中,注意力系數(shù)αij由下式計算:
(7)
式中,[.]表示拼接操作;Λ為向量變換,由全連接層實現(xiàn).
圖2 特征更新網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Illustration of the feature refining module
圖3 關(guān)系推理網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 Illustration of the relation reasoning module
3.1 數(shù)據(jù)集
Visual Genome[19]數(shù)據(jù)集是目前擁有最多的物體和視覺關(guān)系的開放數(shù)據(jù)集. 由于數(shù)據(jù)集中的注釋是由眾包工人完成的,很大一部分對象注釋的質(zhì)量很差,且有重疊的邊界框和含糊不清的對象名稱. 為了消除這些干擾,很多研究人員已經(jīng)探索了多種半自動的方法(如類合并和過濾)來清除對象和關(guān)系注釋,構(gòu)建出很多過濾后的VG版本. 本文的實驗使用VG150[20]和VG-MSDN[21]兩個數(shù)據(jù)集. VG150對每張圖像修正了22個邊界框或?qū)ο竺Q,刪除了7.4個邊界框,合并了5.4個重復(fù)的邊界框. 基準測試方法使用最常用的150個對象類別和50個謂詞關(guān)系類別進行實驗評估. 因此,每張圖像對應(yīng)一個大約由11.5個對象和6.2個關(guān)系構(gòu)成的場景圖VG150保留了VG數(shù)據(jù)集全部的108 077張圖像. VG-MSDN對不同時態(tài)的詞進行規(guī)范化,同樣選取了150個最常見的物體種類和50個關(guān)系類別,同時刪除邊界框的短邊小于16像素的物體的標注信息,經(jīng)處理后剩余95 998張圖像.
本文評價指標為圖像級的召回率Recall@K(R@K)[22],用以計算預(yù)測的關(guān)系三元組中置信度最高的前K個中包含的真實關(guān)系組合的比例.實驗中K分別取50和100.具體計算方式為:給定N張圖像,對于每張圖像首先對所有預(yù)測的視覺關(guān)系按照得分進行排序,然后取得分為前K的預(yù)測.視覺關(guān)系的得分由包括主語對象的分類得分、賓語對象的分類得分和視覺關(guān)系謂詞的分類得分相加而得.對于圖像i,若其包含|GTi|組真實的關(guān)系標注,而模型正確預(yù)測到的關(guān)系組合為TPi=TopKi∩GTi,則召回率為:
(8)
給定一幅圖像,場景圖生成任務(wù)包括對一組對象進行定位,對其類別標簽進行分類,以及預(yù)測這些對象之間的關(guān)系. 對場景圖生成模型的性能評估通常有多種不同的任務(wù)設(shè)置,本文將在以下3種任務(wù)中測試所提出的模型:
(1)謂詞分類任務(wù)(predicate classification,PredCls):給定圖像中物體的類別標簽和邊界框信息,檢測物體對之間是否存在關(guān)系,并對關(guān)系進行分類;
(2)場景圖分類任務(wù)(scene graph classification,SGCls):給定圖像中的一組物體的邊界框,預(yù)測物體類別,并檢測物體之間的關(guān)系;
(3)場景圖檢測任務(wù)(scene graph detection,SGDet):給定一張圖像,需檢測出圖像中的物體,并檢測物體間的關(guān)系.
本文在VG150和VG-MSDN數(shù)據(jù)集上對所提出的場景圖生成算法性能進行測試,并與現(xiàn)有算法進行比較,結(jié)果如表1所示.
表1 各種模型的結(jié)果對比Table 1 The results of various models
從表1可以看出,本文提出的基于語義連通圖的場景圖生成算法在兩個數(shù)據(jù)集上都取得了較好的結(jié)果. 由于VG150數(shù)據(jù)集中選取的是出現(xiàn)頻率最高的150種物體和50種關(guān)系,對于SGCls 和SGDet兩個任務(wù),同樣的算法在VG150數(shù)據(jù)集上的結(jié)果更好一些. 在VG150數(shù)據(jù)集上,本文的算法在3個任務(wù)上都比其他算法在召回率上有大幅提升,提升約5%~10%,而在VG-MSDN數(shù)據(jù)集上與其他的算法效果不相上下. 在PredCls任務(wù)上,R@50提升明顯,而其他指標稍低,推測在關(guān)系建議模塊中刪除的連接較多,可能誤刪了一些有效關(guān)系.
為了更直觀地顯示算法生成場景圖的結(jié)果,在VG150數(shù)據(jù)集的測試集中隨機選取了6張圖像進行測試,并將結(jié)果可視化表示,如圖4所示. 上方圖像中標記了物體的類別和Bounding Box,下方是圖像對應(yīng)的場景圖,其中綠色標記是算法輸出的正確檢測結(jié)果,紅色標記是算法未檢測到或是檢測錯誤的物體和關(guān)系,檢測錯誤的物體和關(guān)系在括號中給出了ground truth標簽. 可以看出,大多數(shù)的物體和關(guān)系均可檢測到,但物體分類錯誤的情況仍較多. 從第四張和第五張圖像的測試結(jié)果可以看出,雖然物體分類錯誤,但關(guān)系仍可檢測出來,說明模型在一定程度上還是可以學(xué)習(xí)到獨立于物體的關(guān)系特征表示. 同時,檢測錯誤的物體確實存在一定的干擾,如第五張圖像中的兩個檢測錯誤的“person”,都有雨傘的遮擋.
圖4 VG150數(shù)據(jù)集上的測試結(jié)果示例Fig.4 Some visualization test samples of ours model on VG150 dataset
本文提出了基于語義連通圖的場景圖生成算法,借助物體的語義信息預(yù)測物體之間是否存在關(guān)系,同時使用圖卷積神經(jīng)網(wǎng)絡(luò)融合物體節(jié)點的特征,并使用融合了上下文信息的物體特征組合構(gòu)建關(guān)系特征,對關(guān)系類別進行推理. 經(jīng)實驗驗證,本文算法在VG150和VG-MSDN兩個數(shù)據(jù)集上都取得了有競爭力的結(jié)果.