李飛飛等提出新的迭代視覺推理框架,在ADE上實現8.4 %的絕對提升

https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/79787737


這篇文章中,我們提出了一個可以同時用於空間和語義推理的生成框架。與現在只依賴於卷積的方法不同,我們的框架可以從以知識庫爲形式的結構化信息中學習,進行視覺識別。我們的核心算法包含兩個模塊:局部模塊,基於空間記憶,用 ConvNets 做像素級推理。通過並行記憶更新,我們的執行效率得到很大提高。

此外,我們引入了全局模塊進行局域外的推理。在全局模塊中,推理是基於圖模型展開的。它有三個組成部分:a)一個知識圖譜,我們把類當做結點,建立邊來對它們之間不同類型的語義關係進行編碼;b)一個當前圖像的區域圖,圖中的區域是結點,區域間的空間關係是邊;c)一個工作分配圖,將區域分配給類別。利用這種結構的優勢,我們開發了一個推理模型,專門用於在圖中傳遞信息。局部模塊和全局模塊迭代工作,交叉互遞預測結果來調整預期。

需要注意的是,局部模塊和全局模塊不是分離的,對圖像的深刻理解通常是先驗的背景知識和對圖像的具體觀察間的折中。因此,我們用注意力機制聯合兩個模塊,使模型在做最終預測時使用相關性最大的特徵。

我們的框架比普通的 ConvNets 表現更好。例如,框架在 ADE 測試得到的各類平均精度有 8.4% 的絕對提升,而加深網絡卻只能提高 1%。



圖2:推理框架概覽。除做預測的普通ConvNets外,框架有兩個模塊進行推理:一個局部模塊(Sec. 3.1),用空間記憶Si,並用另一個ConvNet C推理;一個全局模塊(Sec. 3.2),將區域和類作爲圖中的結點,通過傳遞結點間信息進行推理。兩個模塊接收高層和中層的整合信息,交叉互遞認知來迭代地工作。最後的預測通過注意力機制整合所有預測結果來生成。

Reasoning Framework(推理框架)

在這部分,我們建立推理框架。除 ConvNet 的普通預測 p0 外,它由兩個模塊通過推理做預測。第一個是局部模塊,用空間記憶存儲先前並行更新的認知,仍屬於以卷積爲基礎的推理(Sec. 3.1)。除卷積之外,我們的關鍵部分是作爲圖中結點直接在區域和類別間推理的全局模塊(Sec. 3.2)。兩個模塊都通過迭代展開估計(Sec. 3.3),認知在模塊間交叉互遞。最後我們取兩模塊之長,用注意力機制從所有迭代中整合預測結果(Sec. 3.4),用聚焦於硬示例(圖2)的樣本重新加權來訓練模型(Sec. 3.5)。

3.1 Reasoning with Convolutions(用卷積進行推理)

我們第一個建立的區塊——局部模塊,由文章啓發。在較高層面來看,這一想法是用空間記憶S來存儲檢測到的目標物,存儲地點就在目標物被檢測到時所在的位置。S是三維張量,高度H和寬度W爲圖像縮減後的尺寸(1/16),深度D(=512)將記憶的每個單元c作爲向量,存儲當前位置可能有用的信息。

S通過高層和中層特徵來更新,高層存儲有關估計的類別標籤信息。但是,只知道類別並不理想,更多關於形狀、姿態等的細節信息在其他物體檢測時大有用處。例如,預先知道一個“人”打網球的姿勢,會對識別“網球拍”大有幫助。本文中,我們在softmax激活前用logits f,結合底部卷積層h的特徵圖來補給記憶。

給定一個待更新的圖像區域r,我們要先從底層提取相應特徵,用雙線性插值將其調整爲預定大小(7*7)的方陣h。因爲高層特徵f是覆蓋整個區域的向量,所以我們將其附加在所有位置(49個)。用兩個1*1的卷積核來提取特徵併爲r生成輸入特徵fr。記憶S中的相同區域也提取出來,調整爲7*7,標註爲sr。這一步後,我們用卷積門遞歸單元(GRU)來寫出記憶:

其中,s′r 是 r 更新後的記憶,u 是更新後的門,z 是重置門,Wf,Ws 和 b 分別是卷積的權重和偏置,○ 是 entry-wise 矩陣內積,σ(⋅) 爲激活函數。更新後,s′r 通過再提取和尺寸調整放回到S。

前期的研究工作將序列更新到記憶。但是,序列推斷低效且 GPU 密集,這限制其每張圖像只能有 10 個輸出。本文提出用並行更新區域作爲近似。在交疊情況下,一個單元可以由不同區域覆蓋多次。將區域放回至S時,我們也計算權值矩陣 Γ ,矩陣中,對於每一個入口 yr,c∈[0,1] 記錄了區域 r 對記憶單元 c 的貢獻率:1 表示單元被區域完全覆蓋,0 表示沒有覆蓋。更新後的單元的終值是所以區域的加權平均。

實際的推理模塊爲一個ConvNet C,由三個 3*3 的卷積核和兩個 4096D 的全連接層組成,以 S 爲輸入,在接受域的局地窗間建立連接關係來進行預測。因爲圖像的二維結構和位置信息保存在 S 中,所以,這樣的結構對於空間推理關係非常有用。

圖3:用多種邊在圖中直接傳遞信息的圖解。這裏,四個結點連接兩個類型的邊,每個結點表示一個輸入特徵向量mi(集合爲M)。權值矩陣Wj學習爲邊類型j來轉換輸入量。之後連接矩陣Aj用來向關聯結點傳遞信息。最後,通過累計所有的邊類型並使用激活函數生成輸出G。

3.2 Beyond Convolutions(卷積之外)

我們的第二個模塊採用的是對全局推理進行卷積操作而不是針對局部區域進行的。這裏的“global”全局有兩個含義。首先從空間角度來講,我們希望讓更遠的區域也可以彼此直接進行信息交流,而不受推理模塊C的接受域的限制。其次從語義層面來說,我們希望可以充分的利用視覺知識庫,它可以提供跨圖像的全局真實的類間關係( 比如常識類信息 )。爲了實現以上兩個層面的推理,我們構造了一個圖G = ( N,E ),其中N和E分別爲節點集和邊集。在N中定義了兩種類型的節點: R區域的區域節點N,和C類的類節點Nc。

對於E,在節點之間定義三組邊。首先,對於Nr來說,我們使用空間圖來編碼區域( Er→r )之間的空間關係。設計多種類型的邊來表徵相對位置。我們從諸如“左/右”、“上/下”之類的基本關係開始,並且通過測量兩者之間的像素級距離來定義邊緣權重。需要說明的是,我們並不是直接使用原始距離x,而是使用核κ( x ) = exp ( - x /δ)(其中δ= 50代表帶寬)將其歸一化爲[ 0,1 ],這樣可以使得越接近的區域相關程度越高。然後直接在圖的鄰接矩陣中使用邊緣權重。此外,爲了能夠有效的解決區域重疊時的分類問題,我們也把用於編碼覆蓋模式的邊( 例如IoU intersection over union, )包含在了其中。

第二組邊是位於區域和類之間的集合,即決定一個區域是否屬於某一類。這些邊緣的作用是,將信息從一個區域傳播到另一個類別( er→c )或從一個類別反向傳播到另一個區域( EC→r )。我們採用soft-max值p來定義連接到所有類別的邊緣權重,而不是僅僅計算連接到可能性最高的那一類。這樣做是希望它能提供更多的信息,並且提高對錯誤分類的魯棒性。

第三組邊是使用知識庫中的語義關係構造類間( Ec→c )關係的集合。同樣,這裏可以包括多種類型的邊。經典的例子有“is-kind-of”( 例如 “蛋糕”和“食物”)、“is-part-of”(例如“車輪”和“汽車”)、“相似性”( 例如“豹”和“獵豹”),其中許多都是普遍正確的,因此可以被認爲是常識。這種常識可以是人工列出的或自動收集的。有趣的是,即使是這些以外的關係(例如“行爲”,“介詞”)也可以幫助識別。以“人騎自行車”爲例,這顯然是一種更加具體形象的關係。然而,由於對“人”和“自行車”這兩類的識別準確度不夠高,那麼從兩者之間的“騎行”的關係以及他們的空間位置出發,則可以幫助我們對這一區域進行更好的推理。爲了研究這兩種情況,我們在本文中嘗試了兩種知識圖譜:一種是內部創建的,大部分是常識邊,另一種則是大規模積累的更多類型的關係。有關我們實驗中所使用的圖,請參閱4.1,那裏會對這一部分工作進行更詳情的介紹。

接下來,我們來看一下基於圖的推理模塊r。作爲圖的輸入,我們使用Mr∈RR×D來表示來自所有區域節點Nr組合的特徵,其中D ( = 512 )是特徵信道的數目。爲了方便表示,對於每個類節點NC,我們選擇現成的字向量作爲表示,記爲Mc∈RC×d。然後我們對文獻[ 42,35 ]的工作進行了擴展,並直接在G上傳遞消息(見圖3 )。需要注意的是,因爲我們的最終目標是爲了能夠更好地識別區域,所以所有的類節點都只是中間表示,爲的是能夠更好地表示區域。基於此,我們設計了兩種推理路徑來學習輸出特徵Gr :僅包含區域節點的空間路徑:

其中Ae∈Rr×r是邊緣類型e的鄰接矩陣,We∈rd×d是權重(爲了簡單起見,忽略了偏置)。第二個推理路徑是通過類節點的語義路徑:

在這裏,我們首先通過Aer→c和Wer→c將區域映射到類,將中間特徵與類特徵Mc相結合,然後在類之間聚集來自多種類型邊緣的特徵。最後,通過合併這兩條路徑來計算區域Gr的輸出:

其首先將語義信息傳播回區域,然後使用非線性激活(參見圖4 )。

與卷積濾波器一樣,上述路徑也可以堆疊,其中可以經過另一組圖形操作輸出Gr,從而允許框架執行具有更深特徵的聯合空間語義推理。在輸出被反饋用以進行預測之前,我們在R中使用了具有殘差連接的三個操作棧。

圖4 :在我們的全局推理模塊r中使用的兩個推理路徑。以區域和類輸入Mr和Mc爲例,空間路徑直接傳遞具有區域到區域邊緣 Er→r 的區域圖中的信息,而語義路徑首先將區域分配給具有 Er→c 的類,然後將信息傳遞給具有類到類邊緣Ec→c 的其他類,然後傳播回來。組合最終輸出以生成輸出區域特徵 Gr

3.3 Iterative Reasoning(迭代推理)

推理的一個關鍵要素是迭代地建立估計。但是信息是如何從一個迭代傳遞到另一個迭代的呢?我們的答案是顯式內存,它存儲之前迭代的所有歷史記錄。本地模塊使用空間存儲器S,全局模塊使用另一無空間結構的存儲器M。對於第i次迭代,Si之後是卷積推理模塊C,以生成每個區域的新預測fli。類似地,全局模塊還給出來自R的新預測fgi。這些作爲高級特徵的新的預測可以用於對存儲器Si + 1和Mi + 1進行更新。新的記憶將帶來fi + 1輪更新,以此類推。

雖然可以單獨進行局部和全局推理,但這兩個模塊協同工作時的效果是最好。因此,我們希望在生成預測時加入兩個模塊的結果。爲此,我們引入了cross-feed 連接。在完成推理後,將局部特徵和全局特徵連接在一起,利用GRU更新Si + 1和Mi + 1兩個存儲單元,這樣,可是使空間存儲單元能夠從空間和語義關係的全局知識中受益,並且圖能夠更好地理解局部區域的佈局。

3.4 Attention(注意力機制)

受到文獻attention模型的啓發,我們對模型輸出進行了一次修改。具體來說,模型必須產生“attention”值來表示,當前預測與來自其它迭代或模塊的預測的相對置信度,而不是僅僅是產生分數f。從而融合輸出是使用“attention”的所有預測的加權版本。在數學上,如果模型展開I次,並且輸出N = 2I + 1 (包括I個局部、I個全局和1個普通的ConvNet網絡)預測fn,使用注意(attention)an,則最終輸出f計算爲:

需要注意的是,這裏fn是soft-max之前的logits,被激活以後產生pn。

“attention”的引入使模型能夠智能地從不同的模塊和迭代中選擇最可行的預測。

3.5 Training(訓練)

最後,對整個框架進行端到端的訓練,總損失函數包括: 

a )普通ConvNet損失L0;

b )本地模塊損耗Lli;

c )全局模塊損耗Lgi;

d ) 包含注意(attention)的最終預測損失Lf。

由於我們希望推理模塊更多地關注較難的示例,因此我們建議根據以前迭代的預測,簡單地對損失中的示例進行重新加權。具體的,對於迭代I≥1時的區域r,兩個模塊的交叉熵損失計算爲:

其中pi ( r )是ground-truth類的soft-max輸出,β∈[ 0,1 ]控制權重分佈的熵:當β= 1時,它是均勻分佈;當β= 0時,熵最小。在我們的實驗中,β設定爲0.5。P1 ( r )用作沒有反向傳播的特徵。對於本地和全局來講,P0 ( r )是來自普通卷積神經網絡(ConvNet)的輸出。

總結

我們提出了一種新的迭代視覺推理框架。 除了卷積之外,它還使用圖來編碼區域和類之間的空間和語義關係,並在圖上傳遞消息。與普通ConvNets相比,我們的性能表現更加優越,在ADE上實現了8.4 %的絕對提升,在COCO上實現了3.7 %的絕對提升。分析還表明,我們的推理框架對當前區域分割方法造成的區域缺失具有很強的適應性。

論文鏈接:https://arxiv.org/abs/1803.11189



發佈了21 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章