1. 程式人生 > >The More You Know: Using Knowledge Graphs for Image Classification ——用知識圖譜進行影象分類論文閱讀筆記

The More You Know: Using Knowledge Graphs for Image Classification ——用知識圖譜進行影象分類論文閱讀筆記

Abstract 

使人類區別於現代基於學習的計算機視覺演算法的一個特徵是獲得關於世界的知識並使用該知識推理關於視覺世界的能力。人類可以瞭解物體的特徵以及它們之間發生的關係,從而學習各種各樣的視覺概念,並且可以通過很少的例子學習。本文研究了知識圖譜形式的結構化先驗知識在影象分類中的應用,表明利用結構化先驗知識可以提高影象分類的效能。我們基於最近關於圖的端到端學習的工作,引入Graph Search Neural Network,作為將大知識圖譜有效地結合到視覺分類pipeline中的方法。我們在一些實驗中表明,我們的方法在多標籤分類中優於標準神經網路。

Introduction 

我們的世界包含人類理解的數百萬視覺概念。這些常常是模稜兩可的(番茄可以是紅色或綠色),重疊的(交通工具包括汽車和飛機),並且有數十或數百個子類別(數千種特定種類的昆蟲)。雖然一些視覺概念非常常見,如人或車,但大多數類別的例子較少,形成長尾分佈。然而,即使只顯示了幾個甚至一個例子,人類仍然具有非常顯著的能力來高精度地識別這些類別。相比之下,雖然現代的基於學習的方法可以高精度地識別某些類別,但是通常需要為這些類別中的每個類別提供數千個標記的示例。考慮到視覺概念空間大、複雜而且動態,這種為每個概念構建大型資料集的方法是不可擴充套件的。因此,我們需要尋找目前人類擁有而機器沒有的方法。

在圖上或者神經網路訓練的圖中,端到端(備註:端到端指輸入是原始資料,輸出是最終結果)的學習已經有很多工作。大多數方法要麼從圖中提取特徵,要麼學習在節點之間傳遞證據的傳播模型,該模型以邊緣的型別為條件。一個例子是Gated Graph Neural Network,它以任意的圖作為輸入。給定特定於任務的一些初始化,它學習如何傳播資訊並預測圖中每個節點的輸出。該方法已被證明可以解決基本的邏輯任務和程式驗證。

我們的工作改進了該模型,並將端到端的圖形神經網路應用於多標籤影象分類。我們引入圖形搜尋神經網路(Graph Search Neural Network,GSNN),它利用影象中的特徵對圖形進行有效的註釋,選擇輸入圖的相關子集,並預測表示視覺概念的節點上的輸出。然後使用這些輸出狀態對影象中的物件進行分類。GSNN學習傳播模型,該模型推理不同型別的關係和概念,以便在節點上產生輸出,然後用於影象分類。我們的新架構減輕了GGNN在大圖上的計算問題,這允許我們的模型被有效地訓練並用於使用大知識圖譜的影象任務。我們展示了我們的模型在推理概念中是如何有效的,以改善影象分類任務。重要的是,我們的GSNN模型還能夠通過跟蹤資訊在圖中如何傳播來提供關於分類的說明。

這項工作的主要貢獻是:(a)引入GSNN,作為將潛在大知識圖譜合併到端到端學習系統中的一種方法,該系統在大圖的計算上是可行的;(b)使用噪聲知識圖譜進行影象分類的框架;(c)通過使用傳播模型來解釋我們的影象分類的能力。我們的方法大大優於多標籤分類的baselines。

Methodology

1、Graph Gated Neural Network 

給定N個節點的圖,我們希望產生一些輸出,這些輸出可以是每個圖節點 o_1{}, o_2{}, ... o_N{}的輸出,也可以是全域性輸出o_G{}。這是通過學習一個類似於LSTM的傳播模型來實現的。對於圖v中的每一個節點,在每一個時間t,都有一個隱狀態h_{v}^{(t)}。從t=0時刻開始,初始隱狀態x_{v}

依賴於問題。例如,為了學習圖的可達性,隱狀態可能是一個二位向量,表明是源節點或者是目標節點。對於視覺知識圖譜的推理,x_{v}可以是一位,表示類別的置信度,基於一個物件檢測器或者分類器。

接下來我們使用圖結構,編碼在矩陣A中,矩陣A用於檢索相鄰節點的隱藏狀態,基於相鄰節點之間的邊緣型別。然後通過類似於LSTM的門控更新模組來更新隱藏狀態。這個傳播網路的基本遞迴是:

其中h_{v}^{(t)}是節點v在時刻t的隱狀態,x_{v}是問題的特定註釋,A_{v}是節點a的圖鄰接矩陣,W和U是學習引數。等式(1)是具有x_{v}和空維度的隱狀態的初始化,等式(2)展示了來自相鄰節點的迭代更新,等式(3-6)結合相鄰節點的資訊和節點的當前隱藏狀態來計算下一個隱藏狀態。

T步之後,我們得到了最後一個隱狀態。節點級別的輸出可以被計算為:

g是一個全連線網路,全連線層是輸出層,x_{v}是節點的初始註釋。

2、Graph Search Neural Network 

GGNN在影象任務中最大的問題是計算可擴充套件性。例如,NEIL有2000多個概念,NELL有200多萬的confident beliefs。即使我們的任務剪枝之後,這些圖表仍然是巨大的。N個節點的標準GGNN,正向傳播複雜度是O(N^{2}),逆向傳播是O(N^{t}), 其中t是傳播次數。我們對合成圖上的GGNNs執行簡單的實驗,發現在大約500個節點之後,即使做出大量的引數假設,一個例項的前向和後向傳遞會花費1秒鐘的時間。在2000個節點上,單個影象需要花費超過一分鐘的時間。使用GGNN是不可行的。

我們對這個問題的解決方法是Graph Search Neural Network(GSNN)。顧名思義,我們的想法是,與其同時對圖的所有節點執行我們的週期性更新,不如根據我們的輸入從一些初始節點開始,並且只選擇擴充套件對最終輸出有用的節點。因此,我們只在圖的子集進行更新。那麼,我們如何選擇節點的子集來初始化圖呢?在訓練和測試期間,我們確定圖的初始節點,基於由物件檢測器或分類器確定的概念存在的可能性。我們的實驗使用更快的R-CNN對於80個COCO類別中的每一個。對於一些選定的閾值的分數,我們選擇圖中的相應節點作為初始的活節點集合。

一旦確定了初始節點,我們將鄰接於初始節點的節點新增到活動集。給定初始節點,我們首先將初始節點的beliefs傳播到所有相鄰節點(we want to first propagate the beliefs about our initial nodes to all of the adjacent nodes.)。在第一步之後,我們需要一種方法來決定接下來要擴充套件哪些節點。因此,我們學習了每個節點評分函式,它估計節點是多麼重要。在每個傳播步驟之後,對於我們當前圖中的每個節點,我們預測重要性得分:

其中gi是一個學習網路,即重要性網路。

一旦我們有了i_{v}的值,我們將獲取得分最高且從未被擴充套件的前p個節點,將它們新增到擴充套件集,並將那些節點的所有鄰接節點新增到活動集。圖二說明了這種擴充套件。

T=1時,僅檢測到的節點被擴充套件。T=2時,我們基於重要性值擴充套件選擇節點,並將它們的鄰居新增到圖中。在最後一步T,我們計算the per-node-output, the re-order and the zero-pad,輸出到最終分類網路。

為了訓練重要性網路,我們為給定的影象在圖中的每個節點分配重要性值。對應事實概念的節點重要度為1,這些節點的鄰居被分配一個γ值。隔一個的節點具有值γ^{2}γγ^{2}2(γ的平方)等。 這個想法是最接近最終輸出的節點是最重要的擴充套件。

現在我們有一個端到端網路,它接受一組初始節點和註釋作為輸入,並且輸出圖中每個活動節點的輸出。它由三個網路組成:傳播網路、重要性網路和輸出網路。影象問題的最終損失可以反向傳播,從pipeline的最終輸出,通過輸出網路。重要性損失通過每個重要性輸出反向傳播。Figure3展示了GSNN的架構。

圖的解釋:

x_{init}: the detection confidences 

h_{init}^{(1)}: the hidden states of the initially detected nodes, 初始化為x_{init}

x_{adj1}^{(1)}: 初始化鄰接結點的隱藏狀態

h^{(2)}被用來預測重要性得分i^{(1)},重要性得分用來挑選接下來哪些結點被加入adj2中

初始化h_{adj2}^{(2)}=0, 通過傳播網路更新隱狀態

T步後,我們用所有的累積隱藏狀態H^{(T)}來預測所有活動節點的GSNN輸出。

在反向傳播過程中,二進位制交叉熵(BCE)損失通過輸出層反向反饋,而重要損失通過重要度網路反饋以更新網路引數。

最後一個細節是將“節點偏置”新增到GSNN中。在GGNN中,每個節點的輸出函式g(hv,xv)接受節點v的隱藏狀態和初始註釋來計算其輸出。從某種意義上說,它對節點的意義是不可知的。也就是說,在訓練或測試時,GSNN可能獲得它從未見過的圖表,和每個結點的初始註釋xv(or併為每個節點提供一些初始註釋xv?)。然後,它使用圖的結構通過網路傳播這些註釋,然後計算輸出。圖的節點可以表示從人際關係到計算機程式的任何東西。然而,在我們的圖網路中,特定節點表示“馬”或“貓”的事實可能相關,並且我們還可以將自己約束為影象概念上的靜態圖。因此,我們引入節點偏置項,對於我們的圖中的每個節點,都有一些學習的值。我們的輸出方程現在是G(HV,XV,NV),其中NV是與整個圖中的特定節點V相聯絡的偏置項。這個值被儲存在一個表中,並且它的值通過反向傳播來更新。

3、Image pipeline and baselines 

對於視覺問題,我們面臨的另一個問題是如何將圖形網絡合併到image pipeline中。對於分類,這是相當簡單的。我們獲取圖網路的輸出,對其進行reorder,以便節點總是以相同的順序出現在最終網路中,並且zero pad任何未擴充套件的節點。因此,如果我們有一個具有316個輸出節點的圖,並且每個節點預測一個5維隱藏變數,那麼我們從圖中建立一個1580維的特徵向量。我們還將這個特徵向量和a fine-tuned VGG-16 network的fc7 layer (4096-dim) 和由更快的R-CNN(80-dim)預測的每個COCO類別的最高得分連線起來。這個5676維的特徵向量送到一層的最終分類網路中訓練。

對於baseline,我們比較了:(1) VGG Baseline - feed just fc7 into final classification net; (2) Detection Baseline - feed fc7 and top COCO scores into final classification net. 

Results 

1、Datasets 

我們希望實驗資料集表達了複雜、有噪聲的視覺世界,有許多不同種類的物件,標籤可能模糊或重疊,並且是長尾分佈。本實驗使用Visual Genome dataset v1.0

在我們的實驗中,我們建立了Visual Genome的子集Visual Genome multi-label dataset or VGML,我們選取了200個最常見的物件,100個最常見的屬性,還為316個視覺概念添加了不在這300個物件和屬性中的任何COCO類別。我們的任務是多標籤分類:對於每個影象預測316個總類別中的哪個子集出現在場景中。隨機將圖片分成80-20訓練集/測試集。由於我們使用了來自COCO的預先訓練的檢測器,所以我們確保沒有一個測試影象與我們的檢測器的訓練影象重疊。

我們還在更標準的COCO資料集上評估我們的方法,以表明我們的方法在多個數據集上有用,並且我們的方法不依賴於專門為我們的資料集構建的圖。我們在多標籤集中進行訓練和測試,並對微型集進行評估。

2、Building the Knowledge Graph 

我們也使用Visual Genome作為我們知識圖譜的來源。Using only the train split,(僅用於訓練時的分割?) 我們使用資料集中最常見的物件-屬性和物件-物件關係來構建連線概念的知識圖譜。具體地說,我們計算在訓練集中出現物件/物件關係或物件/屬性對的頻率,並剪掉任何少於200個例項的邊。這給我們留下了關於每個邊緣是共同關係的影象的圖表。我們的想法是,我們會得到非常常見的關係(如草是綠色或人穿衣服),但不是罕見的關係,只出現在單一的影象(如人騎斑馬)。

Visual Genome graphs對我們的問題是有用的,因為它們包含物件之間的場景級關係,例如人穿褲子或消防栓是紅色的,因此可以推斷場景中的內容。然而,它不包含有用的語義關係。例如,如果我們的視覺系統“看到了”一條狗,而我們的標籤是動物,如果能知道狗是動物的一種對分類是有幫助的。為了解決這個問題,我們還建立了一個融合了Visual Genome Graphs與WordNet的圖。使用[1]中的WordNet子集,我們首先收集WordNet中不在輸出標籤中的新節點,包括那些直接連線到輸出標籤並因此可能相關的節點,並將它們新增到組合圖中。然後,我們將這些節點之間的所有WordNet邊緣新增到組合圖形中。

3、Training details 

我們共同訓練pipeline的所有部分(除了detectors)。GSNN使用ADAM,其他所有模型使用SGD。對於fc7之前的VGG網路,我們使用0.05、0.005的初始學習率,每10次減少0.1倍,L2懲罰為1e-6,動量為0.5。。。。

[1] K.Guu,J.Miller,andP.Liang.Traversingknowledgegraphs in vector space. In Empirical Methods in Natural Language Processing (EMNLP), 2015.