https://arxiv.org/abs/1711.07971
https://github.com/AlexHex7/Non-local_pytorch
Non-local Neural Networks
Abstract
卷積操作和循環操作都是一次處理一個局部鄰域的building塊。在本文中,我們將non-local操作作為捕獲long-range依賴關系的一般building塊 family提出。受計算機視覺中經典的non-local means方法[4]的啟發,我們的non-local操作將某一位置的響應計算為所有位置特征的加權和。這個模塊可以插入到許多計算機視覺架構中。在視頻分類的任務上,即使沒有任何花哨的東西,我們的non-local模型也可以在Kinetics和Charades數據集上競爭或超過當前的競賽獲勝者。在靜態圖像識別中,我們的non-local模型改進了目標檢測/分割和姿態估計的COCO suite任務。代碼可見https://github.com/facebookresearch/video-nonlocal-net.
1. Introduction
捕獲long-range依賴關系是深度神經網絡的核心重要性。對於序列數據(如語音、語言),循環操作[38,23]是long-range依賴建模的主要解決方案。對於圖像數據,遠距離依賴是由卷積操作的深度疊加形成的大接受域來建模的[14,30]。
卷積操作和循環操作都處理一個局部鄰域,無論是在空間上還是在時間上;因此,只有在重復應用這些操作、通過數據逐步傳播信號時,才能捕獲long-range依賴關系。重復局部操作有幾個限制。首先,它的計算效率很低。其次,它導致優化困難,需要仔細解決[23,21]。最后,這些挑戰使得multi-hop依賴建模變得困難,例如,當消息需要在遙遠的位置之間來回傳遞時。
在本文中,我們將non-local操作作為一種有效、簡單、通用的組件,用於捕獲深度神經網絡的long-range依賴關系。我們提出的non-local運算是對計算機視覺中經典的non-local mean運算[4]的推廣。直觀地說,non-local操作將某一位置的響應計算為輸入特征圖中所有位置特征的加權和(圖1)。位置集可以是空間、時間或時空,這意味着我們的操作適用於圖像、序列和視頻問題。
使用non-local操作有幾個優點:(a)與循環操作和卷積操作的漸進行為不同,non-local操作通過計算任意兩個位置之間的交互,直接捕獲long-range依賴關系,而不考慮它們的位置距離;(b)正如我們在實驗中所展示的,non-local操作是有效的,即使只有幾個層(例如,5),也能獲得最佳結果;(c)最后,我們的non-local操作保持了可變的輸入大小,並且可以很容易地與其他操作(例如,我們將使用的卷積)結合在一起。
我們展示了non-local操作在視頻分類應用中的有效性。在視頻中,long-range的相互作用發生在空間和時間中遙遠的像素之間。一個單一的non-local塊,即我們的基本單元,可以直接以前饋方式捕獲這些時空相關性。通過少量的non-local塊,我們稱為non-local neural networks的架構在視頻分類方面比2D和3D卷積網絡[48](including the inflated variant[7])更精確。此外,non-local神經網絡比3D卷積神經網絡在計算上更經濟。Kinetics[27]和Charades[44]數據集提供了全面的消融研究。我們只使用RGB,沒有任何花哨的東西(例如光流、multi-scale測試),我們的方法在兩個數據集上都取得了與最近的競賽獲勝者旗鼓相當或更好的結果。
為了證明non-local操作的普遍性,我們進一步在COCO數據集[33]上進行了目標檢測/分割和姿態估計實驗。在strong Mask R-CNN基線[19]的基礎上,我們的non-local塊可以以很小的額外計算成本提高所有三個任務的准確性。與視頻上的證據一起,這些圖像實驗表明,non-local操作通常是有用的,可以成為設計深度神經網絡的基本組成部分。
2. Related Work
Non-local image processing. [4]是一種經典的濾波算法,它計算圖像中所有像素的加權平均值。它允許在一個基於patch外觀相似度的位置上,遠距離的像素對過濾后的響應做出貢獻。這種non-local過濾思想后來發展成為BM3D(塊匹配3D)[10],它對一組相似但non-local的patches執行過濾。與深度神經網絡[5]相比,BM3D是堅實的圖像去噪基線。塊匹配與神經網絡一起用於圖像去噪[6,31]。non-local匹配也是[12]紋理合成、超分辨率[16]和[1]inpainting算法成功的關鍵。
Graphical models. long-range依賴可以通過圖形模型來建模,如條件隨機場(CRF)[29,28]。在深度神經網絡中,CRF可用於[9]網絡的語義分割預測的后處理。將CRF的迭代平均場推理轉化為遞歸網絡並進行訓練[56,42,8,18,34]。相比之下,我們的方法是一個更簡單的計算non-local濾波的前饋塊。與這些用於分割的方法不同,我們的通用組件用於分類和檢測。這些方法和我們的方法也與一個更抽象的模型有關,稱為圖神經網絡[41]。
Feedforward modeling for sequences. 最近出現了一種使用前饋(即非循環)網絡來建模語音和語言序列的趨勢[36,54,15]。在這些方法中,long-term依賴關系被非常深的1-D卷積所貢獻的大接受域所捕獲。這些前饋模型適合並行實現,並且比廣泛使用的循環模型更有效。
Self-attention. 我們的工作與最近的機器翻譯的自注意力[49]方法有關。自注意力模塊計算序列中某個位置(如句子)的響應,方法是關注所有位置並在嵌入空間中取其加權平均值。在接下來,我們將討論self-attention可以被視為一種non-local mean[4]的形式,在這個意義上講我們的工作將機器翻譯的self-attention連接到non-local過濾操作的更一般的類,適用於計算機視覺圖像和視頻問題。
Interaction networks. Interaction Networks (IN) [2,52]最近被提出用於建模物理系統。它們對涉及成對交互的對象的圖形進行操作。Hoshen[24]在multi-agent預測建模的背景下提出了更有效的 Vertex Attention IN (VAIN) 。另一種變體,名為Relation Networks[40],在其輸入的所有位置對上對特征嵌入計算一個函數。我們的方法也處理所有對,后面將會解釋(Eq.(1)中的 f(xi, xj)) 。當我們的non-local網絡連接到這些方法時,我們的實驗表明,模型的非局部性,這是正交於attention/interaction/relation的思想(例如,一個網絡可以關注一個局部區域),是他們的經驗成功的關鍵。non-local建模,一個長期以來圖像處理的關鍵元素(如[12,4]),在最近的計算機視覺神經網絡中被很大程度上忽視了。
Video classification architectures. 視頻分類的一個自然解決方案是將用於圖像的CNNs和用於序列的RNNs的成功結合起來[55,11]。而前饋模型是在時空中通過3D 卷積(C3D)[26,48]實現的,3D filters可以通過“inflating”[13,7]預訓練的2D filters來形成。除了對原始視頻輸入進行端到端建模之外,已經發現光流(optical flow)[45]和軌跡(trajectories)[50,51]也有幫助。流和軌跡都是現成的模塊,可以找到long-range、non-local的依賴關系。在[7]中可以找到對視頻架構的系統比較。
3. Non-local Neural Networks
我們首先給出了non-local操作的一般定義,然后提供了它的幾個具體實例。
3.1. Formulation
根據non-local mean運算[4],我們將深度神經網絡中的一般non-local運算定義為:
這里i是被計算的響應(response)的輸出位置(在空間、時間或時空中)的索引,j是枚舉所有可能位置的索引。x為輸入信號(圖像、序列、視頻;通常是他們的特征)和y是與x大小相同的輸出信號。一個pairwise函數 f 計算一個i和j之間的標量(代表兩者的相關關系)。一元函數g計算位置j輸入信號的表示。響應最后經因子歸一化。
等式(1)具有non-local的行為是由於所有位置(∀j) 都被考慮在了操作中。作為比較,卷積操作對一個局部鄰域的加權輸入求和(e.g.,i−1≤j≤ i+1 in a 1D case with kernel size 3),而第i時刻的遞歸操作往往僅基於當前和最新的時間steps(如j =i or i−1)。
non-local操作也不同於全連接(fc)層。等式(1)根據不同位置之間的關系計算響應,而fc使用可學習的權重。換句話說,與non-local層不同,fc中xj和xi之間的關系不是輸入數據的函數。此外,我們的等式(1)支持可變尺寸的輸入,並在輸出中保持相應的尺寸。相反,fc層需要一個固定大小的輸入/輸出,並丟失位置相關性(例如,在位置i 從xi到yi的相關性)。
non-local操作是一個靈活的構建塊,可以很容易地與卷積/循環層一起使用。它可以添加到深度神經網絡的前期部分,而不像fc層通常在最后使用。這允許我們構建更豐富的層次結構,將non-local信息和local信息結合在一起。
3.2. Instantiations
接下來,我們將描述f和g函數的幾個版本。有趣的是,我們將通過實驗(表2a)表明,我們的non-local模型對這些選擇不敏感,這表明一般的non-local行為是觀察到的改進的主要原因。
為簡單起見,我們只考慮g的線性嵌入形式:g(xj) = Wgxj,其中Wg為可學習的權值矩陣。該實現類似空間上的1×1卷積或時空上的1×1×1卷積。
接下來我們討論pairwise函數 f 的選擇。
Gaussian. 遵循non-local mean[4]和雙側濾波器(bilateral filter)[47],f的一個自然選擇為高斯函數。在本文中,我們考慮:
其中是點積相似度。如[4,47]中使用的歐式距離也是可以使用的,但是點積在當前的深度學習平台中實現更友好。歸一化因子設置為
Embedded Gaussian. 高斯函數的一個簡單擴展是計算嵌入空間中的相似度。在本文中,我們考慮:
其中是兩個嵌入。和上面相同,設置
我們注意到[49]最近提出的用於機器翻譯的自注意力模塊是嵌入式高斯版本中non-local操作的一個特例。 這可以從以下的事實看出,即當給定i時,變成了沿着維度j的softmax函數。所以我們有
這是[49]中的注意力形式。因此,我們的工作提供了新的見解,通過將最近的自我注意模型與經典的計算機視覺non-local means方法[4]相關聯,並將[49]中的順序自注意力網絡擴展到計算機視覺中用於圖像/視頻識別的一般空間/時空non-local網絡。
盡管與[49]有關系,但我們表明,注意力行為(由於softmax)在我們研究的應用中並不是必不可少的。為了說明這一點,我們接下來描述non-local操作的兩個替代版本。
Dot product. f可以定義為一個點積相似度:
這里我們采用嵌入式版本。在這種情況下,我們將歸一化因子設為 = N,其中N是x中的位置數,而不是f的和,因為它簡化了梯度的計算。這樣的歸一化是必要的,因為輸入的大小是可變的。
這里的點積方法(沒有)和上面嵌入式Gaussian版本的方法(有)的主要區別是softmax的存在,它起着激活功能的作用。
Concatenation. 在Relation Networks[40]中,pairwise函數使用concatenation進行可視化推理。我們也評估了f的concatenation形式:
其中[.,.]表示concatenation, wf是一個權重向量,用於將concatenation向量投射為標量。和上面一樣,設置 = N。在這里,我們對f使用ReLU[35]
上面的幾個變體演示了我們通用的non-local操作的靈活性。我們相信替代版本是可用的,可能會改善結果。
3.3. Non-local Block
我們將等式(1)中的non-local操作封裝到一個non-local塊中,這樣該塊就可以合並到許多現有架構中。我們定義一個non-local塊為:
式中,yi在等式(1)中給出,“+xi”表示殘差連接[21]。殘差連接允許我們插入一個新的non-local塊到任何預訓練好的模型中,而不破壞它的初始行為(例如,如果Wz被初始化為零)。圖2展示了一個non-local塊的示例。等式(2)、(3)、(4)的pairwise運算可以通過矩陣乘法簡單地完成,如圖2所示;(5)中的concatena版本很簡單。
在high-level, sub-sampled特征maps中,non-local塊的pairwise計算量較小。例如,圖2中的典型值是T = 4, H = W = 14或7。由矩陣乘法所做的pairwise運算與標准網絡中的典型卷積層相當。我們進一步采用以下實現來提高效率。
Implementation of Non-local Blocks. 我們將由Wg、WΘ和WΦ表示的通道數量設置為輸入x的通道數量的一半。這遵循了[21]的bottleneck設計,將block的計算量減少了大約一半。等式(6)中的權值矩陣Wz計算yi的position-wise嵌入,將通道數與x的通道數匹配,見圖2。
subsampling手段可以用於進一步減少計算量。我們修改等式(1)為,其中
是x的一個再抽樣版本(如使用pooling)。我們在空間域實現它,這可以減少1/4的pairwise計算量。該手段並沒有更改non-local的行為,僅僅是讓計算變得更稀疏了。這可以通過在圖2的Φ和g函數后面增加一個max pooling層實現。
4. Video Classification Models
為了了解非局域網絡的行為,我們對視頻分類任務進行了全面的消融實驗。首先,我們描述了這項任務的基本網絡架構,然后將其擴展到3D ConvNets[48,7]和我們提出的non-local網絡。
2D ConvNet baseline (C2D). 為了隔離我們的non-local網絡 vs. 3D ConvNets的時間(temporal)效應,我們構建了一個簡單的2D基線架構,其中時間維度是微不足道的(i.e., only by pooling)。
表1顯示了在ResNet-50主干下的C2D基線模型。輸入視頻片段有32幀,每幀224×224像素。表1中的所有卷積本質上都是逐幀處理輸入的2D核(實現為1×k×k核)。這個模型可以直接從ImageNet上預訓練的ResNet權重初始化。一個ResNet-101對應的版本也是以同樣的方式構建的。
涉及時態(temporal)域的唯一操作是池化層(pooling)。換句話說,這個基線只是簡單地聚集了時間信息。
Inflated 3D ConvNet (I3D). 正如在[13,7]中所做的那樣,通過“inflating”內核,可以將表1中的C2D模型轉換為3D卷積模型。例如,一個2D k×k核可以膨脹為跨越t幀的3D t×k×k核。這個核可以從二維模型(ImageNet上預訓練過的)進行初始化:t×k×k核中的每個t平面都用預訓練過的k×k權值進行初始化,並乘以1/t重新調整。如果一個視頻由一個重復的靜態幀組成,這個初始化產生的結果與在靜態幀上運行的2D預訓練模型相同。
我們研究了兩種inflat情況:將殘差塊中的3×3核inflat為3×3×3(類似於[7]),或將殘差塊中的first 1×1核inflat為3×1×1(類似於[13])。我們將他們表示為I3D3×3×3和I3D3×1×1。由於三維卷積是計算密集型的,我們只對每2個殘差塊inflat一個核;inflating更多的層次表明收益遞減。我們將conv1 inflat為5×7×7。
[7]的作者已經證明I3D模型比CNN+LSTM模型效果更精確。
Non-localnetwork. 我們將non-loca塊插入到C2D或I3D中,將其轉化為non-local網絡。我們研究增加1、5或10個non-block塊;實現細節將在下一節中描述。
4.1. Implementation Details
Training. 我們的模型是在ImageNet[39]上預訓練的。除非指定,我們使用32幀的輸入clip來調整我們的模型。這些clip是由從原始的全長視頻中隨機裁剪出64個連續的幀,然后每隔一幀刪除而成。遵循[46],空間大小為224×224像素,從較短邊在[256,320]像素范圍的縮放后的視頻中隨機裁剪得到。我們在一台8-GPU機器上訓練,每個GPU的一個mini-batch中有8個clip(所以一個mini-batch總共有64個clip)。我們模型總共訓練了400k次迭代,學習率從0.01開始,每150k次迭代將學習率降低10倍(參見圖4)。我們使用0.9的momentum和0.0001的權重衰減。我們在全局池化層之后采用dropout [22], dropout ratio為0.5。我們在應用BatchNorm (BN)[25]時使用它來微調我們的模型。這與微調ResNets的常規做法[21]相反,這里的BN層是被凍結的(frozen)。我們發現在應用程序中啟用BN可以減少過擬合。
我們采用[20]中的方法對non-local塊引入的權重層進行初始化。我們在最后一個代表Wz的1×1×1層之后添加了一個BN層;我們不向non-local塊中的其他層添加BN。遵循[17], 這個BN層的scale參數被初始化為0。這就保證了整個non-local塊的初始狀態是一個恆等映射,所以它可以插入到任何預訓練過的網絡中,同時保持它的初始行為。
Inference. 遵循[46],我們對短邊被調整為256的視頻進行空間全卷積推理。對於時域,在我們的實踐中,我們均勻地從一個全長視頻中抽取10個片段,並分別計算它們的softmax分數。最后的預測是所有片段的平均softmax分數。
5. Experiments on Video Classification
我們對具有挑戰性的Kinetics數據集[27]進行了全面的研究。我們還報告了Charades數據集[44]上的結果,以顯示我們模型的一般性。
5.1. Experiments on Kinetics
Kinetics[27]包含約246k的訓練視頻和20k的驗證視頻。它是一個分類任務,涉及400個人類行為類別。我們在訓練集上訓練所有的模型,在驗證集上進行測試。
圖4顯示了ResNet-50 C2D基線與具有5個塊的non-local C2D的訓練過程曲線(更多細節見下文)。在整個訓練過程中,我們的non-local C2D模型在訓練和驗證誤差方面始終優於C2D基線。
圖1和圖3可視化了由我們的模型計算的non-local塊的行為的幾個例子。我們的網絡可以學會尋找有意義的關系線索,而不管空間和時間的距離。
Instantiations. 表2a比較了添加到C2D基線中的單個non-local塊的不同類型(就在res4的最后一個殘差塊之前)。即使是添加一個non-local塊,也會導致相對於基線的約1%的改進。
有趣的是,嵌入的Gaussian, dot-product和concatenation版本的執行情況類似,只是有一些隨機變化(72.7到72.9)。如3.2節所述,高斯核的non-local操作與自注意模塊[49]類似。然而,我們的實驗表明,這個模塊的注意力(softmax)行為不是改進我們的應用程序的關鍵;相反,更可能的情況是,non-local行為很重要,而且它對實例化不敏感。
在本文的其余部分,我們使用默認的嵌入Gaussian版本。這個版本更容易可視化,因為它的softmax分數在[0,1]的范圍內。
Which stage to add non-local blocks? 表2b比較了添加到ResNet不同階段的單個non-local塊。該塊被添加到一個stage最后一個殘差塊的之前。在res2、res3或res4上對non-local塊的改進是類似的,而在res5上則稍微小一些。一種可能的解釋是res5空間尺寸較小(7×7),不足以提供精確的空間信息。更多non-local塊利用空間信息的證據將在表2d中進行研究。
Going deeper with non-local blocks. 表2c顯示了更多non-local塊的結果。在ResNet-50中添加1個塊(在res4中)、5個塊(在res4中添加3個塊,在res3中添加2個塊,在其他所有殘差塊中添加)和添加10個塊(在res3和res4中的所有殘差塊中添加);在ResNet-101中,我們將它們添加到相應的殘差塊中。表2c顯示,一般來說,non-local塊越多,結果越好。我們認為,多個non-local塊可以實現遠程多跳(long-range multi-hop)通信。信息可以在時空中遙遠的位置之間來回傳遞,而這很難通過局部模型來實現。
值得注意的是,non-local塊的改善不僅僅是因為它們增加了基線模型的深度。為了說明這一點,我們注意到表2c中non-local的5塊ResNet-50模型有73.8的精度,高於更深層次的ResNet-101基線的73.1。但是,對比ResNet-101基線,5塊的ResNet-50只有約70%的參數和約80%的FLOPs,而且也更淺。這一對比表明,non-local塊的改進與規范的增加深度的方法是互補的。
我們還嘗試在基線模型中添加標准殘差塊,而不是non-local塊。准確性沒有提高。這再次表明non-local塊的改善不僅僅是因為它們增加了深度。
Non-local in spacetime. 我們的方法可以自然地處理時空信號。這是一個很好的特性:視頻中的相關對象可以出現在遙遠的空間和長期的時間間隔,它們的依賴性可以被我們的模型捕獲。
在表2d中,我們研究了沿空間、時間或時空應用的non-local塊的影響。例如,在只使用空間的版本中,non-local依賴只發生在同一個幀內:即在等式(1)中,它只對索引i的同一個幀內的索引j求和。表2d顯示,只使用空間和只使用時間的版本都優於C2D基線,但遜於時空版本。
Non-localnetvs.3DConvNet. 表2e比較了我們的non-local C2D版本和inflated 3D ConvNets。non-local操作和三維卷積可以看作是將C2D擴展到時間維度的兩種方法。
表2e還比較了與基線相比的參數和FLOPs數量。我們的non-local C2D模型比I3D模型更准確(例如,75.1 vs. 74.4),同時FLOPs數量也更少(1.2倍vs. 1.5倍)。這一比較表明,我們的方法比單獨使用的三維卷積更有效。
Non-local 3D ConvNet. 盡管有上述比較,但non-local操作和3D卷積可以對問題的不同方面建模:3D卷積可以捕獲局部依賴關系。表2f為I3D3×1×1模型中插入5個non-local塊的結果。這些non-local I3D (NL I3D)模型改善了其對應的I3D模型(+1.6點精度),這表明non-local操作和3D卷積是互補的。
Longer sequences. 最后,我們研究了我們的模型在較長的輸入視頻上的通用性。我們使用由128個連續幀組成的輸入clip,沒有使用子采樣(subsampling)。因此,網絡中所有層的序列比32幀的序列長4倍。為了適合這個模型到內存中,我們將每個GPU的mini-batch大小減少到2。由於使用了小批量,我們在這種情況下凍結了所有BN層。我們使用以32幀輸入訓練的相應的模型來初始化這個模型。我們使用與32幀相同的迭代次數對128幀輸入進行微調(盡管mini-batch的大小現在更小了),初始學習率為0.0025。其他實現細節與前面相同。
表2g顯示了128幀clip的結果。與表2f中的32幀模型相比,所有模型在更長的輸入上都有更好的結果。我們還發現,我們的NL I3D可以保持其相對I3D的增益,這表明我們的模型在較長的序列上工作得很好。
Comparisons with state-of-the-art results. 表3顯示了I3D作者[7]和2017Kinetics競賽冠軍[3]的結果。我們注意到,這些是對系統的比較,系統可以在許多方面不同。然而,我們的方法在很大程度上超過了所有現有的RGB或RGB +流方法。我們的方法沒有使用光流,也沒有任何花哨的東西,與2017年大賽冠軍的經過精心設計的結果是一樣的。
5.2. Experiments on Charades
Charades[44]是一個視頻數據集,具有約8k訓練、約1.8k驗證和約2k測試視頻。它是一個具有157個動作類別的多標簽分類任務。我們使用每個類別的sigmoid輸出來處理多標簽屬性。
我們使用對Kinetics預訓練的模型進行初始化(128幀)。mini-batch大小設置為每個GPU 1個clip。訓練200k個迭代,從0.00125的學習率開始,並每75k迭代減少10倍。我們使用一種類似於Kinetics中的抖動策略來確定224×224裁剪窗口的位置,但是我們重新縮放視頻,使這個裁剪窗口輸出為288×288像素,並在此基礎上微調我們的網絡。我們在320像素的單一尺度上進行測試。
表4顯示了與之前Charades結果的比較。[7]的結果是2017年Charades比賽的冠軍,這也是根據Kinetics預先訓練的模型進行微調的。我們的I3D基線高於之前的結果。作為對照比較,我們的non-local網絡在測試集上比I3D基線提高了2.3%。
6. Extension: Experiments on COCO
我們也在靜態圖像識別中研究了我們的模型。我們在Mask R-CNN基線[19]上進行了COCO[33]目標檢測/分割和人體姿態估計(關鍵點檢測)的實驗。模型在COCO train2017(即2014年的trainval35k)上進行訓練,並在val2017(即2014年的minival)上進行測試。
Object detection and instance segmentation. 我們通過添加一個non-local塊(就在res4的最后一個殘差塊之前)來修改Mask R-CNN主干。所有的模型都從預訓練ImageNet網絡進行微調。我們評估了ResNet-50/101的標准基線和ResNeXt-152 (X152)[53]的high基線。與原始論文[19]采用的關於RPN的階段式訓練不同,我們使用了一種改進的實現,類似於[37]的端到端聯合培訓,這導致了比[19]更高的基線。
表5顯示了COCO上的box和mask AP。我們看到,一個單一的non-local塊改善了所有R50/101和X152基線,包括所有涉及檢測和分割的指標。APbox在所有情況下都會增加約1個點(比如在R101中增加約1.3個點)。我們的non-local塊是對增加模型容量操作的補充,即使模型從R50/101升級到X152。這一比較表明,盡管現有模型的深度/容量有所增加,但它們並沒有充分地捕捉到non-local依賴性。
此外,上述增益的代價非常小。單個non-local塊只給基線模型增加<5%的計算量。我們也曾嘗試使用更多的non-local塊作為骨干,但發現回報遞減。
Keypoint detection. 接下來我們在Mask R-CNN中評估用於關鍵點檢測的non-local塊。在[19]中,Mask R-CNN像1-hot masks一樣,使用8個卷積層的stack來預測關鍵點。這些層是局部操作,可能忽略了跨長距離關鍵點之間的依賴關系。基於此,我們在關鍵點頭中插入4個non-local塊(在每2個卷積層之后)。
表6顯示了對COCO的結果。在R101這個strong基線上,將4個non-local塊添加到關鍵點頭導致約1個點的keypoint AP的增加。如果我們像目標檢測一樣,添加一個額外的non-local塊到backbone,我們觀察相對於基線到1.4個點的keypoint AP的增加。特別地是,我們看到AP75這個嚴格標准提高了2.4個點,這意味着更強的定位性能。
7. Conclusion
我們提出了一類新的神經網絡,它通過non-local操作來捕獲long-range依賴關系。我們的non-local塊可以與任何現有的架構相結合。我們展示了non-local建模對於視頻分類、目標檢測和分割以及姿態估計等任務的重要性。在所有任務中,簡單地添加non-local塊就可以提供比基線更可靠的改進。我們希望non-local層將成為未來網絡架構的重要組成部分。