論文閱讀 CVPR 2018 — Non-local Neural Networks
受到經典的影像濾波方法所啟發,提出 Non-local block 的做法,可對不同維度的資訊捕捉其 Long-range dependencies。此做法能與多種模型架構進行整合,並在不同視覺任務上改善其成果。
論文連結:
《 Non-local Neural Networks 》
作者:
Introduction
對於深度神經網路來說,捕捉 Long-range dependencies 的能力,是相當重要的。面對時序型資料時,通常以遞迴操作來作到這件事情;而若是處理影像資料,則透過卷積操作的堆疊來處理。
前述的遞迴、卷積等操作,主要是用於處理 Local 資訊 。因此,若要捕捉 Long-range dependencies ,就需要重複地執行這些操作,使遠處的資訊能逐步地傳遞至目前所關注的區域 。
Limitation
而這種重複性操作會有以下 2 點限制:
- 運算效率不足
- 優化難度提昇
這些限制會使資訊難以在距離較遠的位置之間來回傳遞,神經網路也就因此難對 Long-range dependencies 進行建模。
為了緩解上述的限制,該論文將經典的影像去雜訊技巧 ( NL-means ) 泛化到神經網路領域,並提出一種用於 DNN 的 Non-local 作法,簡單、有效地捕捉 Long-range dependencies 。
這個 Non-local 作法在概念上是要在影像的每個位置計算它對其他特徵的一種響應值:
相較於過去逐步傳遞的方法而言, Non-local 作法有下列 3 點優勢:
- 可以更直接地捕捉 Long-range dependencies
- 可透過更少層數取得最佳成果
- 對輸入資訊的尺寸較不敏感,且可輕易地與其他種操作進行整合
Related Work
Non-local image processing
Non-local means 是一種經典的影像濾波演算法,它在對影像中的每個位置進行濾波時,會計算所有像素的加權平均,使遙遠像素也能對濾波後的響應值 有所貢獻。
這想法隨後被發展為 BM3D ( Block-matching 3D ),在影像去雜訊的任務上有不錯的成效。這種 Non-local matching 的想法也為後續 Texture synthesis 、Super-resolution 、Inpainting 等演算法奠定了基礎。
Self-attention
另一個與該論文作法相關的技術是 Self-attention,以 NLP 領域著名的 Transformer 來說,Self-attention 模組會去計算一序列資料在每個位置上與其他位置的加權平均,藉此找出資料之間的關聯性。後續章節會再說明, Self-attention 可以被看作是特定形式的 Non-local means 。
Interaction networks
Interaction Networks ( IN ) 是近年被提出用來分析物理系統的技術,主要是透過 Graph 分析物體之間的互動關係。
而該論文提出的 Non-local 作法,其實和那種物體之間的互動關係有種正交的關聯性,只是在近年發展視覺相關的神經網路進程中,被嚴重地忽略了。
Video classification architectures
最後一種相關的技術是用於影片分類的神經網路架構,其中一種作法是將 CNN 與 RNN 整合應用,分別對空間、時間等不同維度進行分析。另一種作法則是直接對時空資訊做 3D Convolutions ( C3D )。
此外,後續研究也發現,額外對光流 ( Optic flow )、軌跡 ( Trajectories ) 等資訊進行分析,可以發現更多 Long-range ( Non-local ) dependencies。
Non-local Neural Networks
Formulation
參照 Non-local means 的作法,該論文提出的 Non-local 作法可被表述成:
計算 Pairwise 關聯性的是 f(·), g(·) 負責重現該位置 ( j ) 的資訊,最終透過 C(·) 做 Normalize。
如果把這公式用在空間的維度上,並將 i、j 定義成 i − 1 ≤ j ≤ i + 1,就等價於 Kernel size 設定為 3 且不做 Normalization 的卷積 ( Convolution ) 操作。
若將維度切換至時間軸,並將 i、j 定義成 j = i or i − 1,就近似於遞迴 ( Recurrent ) 操作。
Instantiations
該論文有嘗試不同形式的 f(·), g(·) ,像是 Gaussian 、Embedded Gaussian 、Dot product 、Concatenation 等作法,但實驗結果說明這種 Non-local 作法對這些差別並不敏感,具備某種程度的彈性。
Non-local Block
該論文將前一道公式定義為一個 Non-local block,以利於和其他現有的神經網路架構進行整合:
對應的公式則是:
上圖中的藍底部分是該論文刻意設計的 Bottleneck ,目的是要壓縮 Channel 維度。另外,為了更進一步降低整體運算量,實作上有在 φ 和 g 後面接上 Pooling,使這個 Block 在計算 Pairwise 關聯性的運算量再降低至 1 / 4 。
Video Classification Models
為驗證這個 Non-local block,該論文以影片分類任務進行實驗,參照的模型架構是 3D ConvNets ( C3D )。為了將時間軸的處理方法從架構中分離出來,有將它簡化為 2D ConvNet ( C2D ),並作為 Baseline:
上表的架構主要是參考 ResNet-50,另外還有個 101 的版本也是參考 ResNet,而此架構上唯一與時間軸相關的操作是 Pooling 。
至於有關 3D Convolution 的操作,則是以上方架構加入 Inflating kernels,所以 Kernel size 會從原本的 k × k 變成 t × k × k ,這個 t 指的是時間軸上的 Frame 數。這種 Inflation 的做法,在該論文中有分 2 種:
- Kernel size 是 3 × 3 × 3
- Kernel size 是 3 × 1 × 1
後續會以 I3D 表示,並以下標註記 Kernel size 。
考量到計算量的問題,在整體架構上每 2 個 Residual blocks 才進行替換,而在 conv1 的部分會有例外,Kernel size 是 5 × 7 × 7 。
Experiments on Video Classification
主要實驗是做在 Kinetics dataset,並在 Charades dataset 驗證其泛化能力 。
Experiments on Kinetics
首先是有關不同形式的 f(·), g(·) 的實驗:
就如同前面所說的,該方法並不太受到這些差異的影響。
接著是實驗說只插入單 1 個 Non-local block 的話,不同置入位置的差異:
這部分其實在 2 ~ 4 的 Stage 都有很接近的成果,至於 5 比較差的原因大概是因為特徵圖的尺寸已經被縮小到 7 × 7,不足以提供精準的空間資訊。
除了置入單 1 個的作法外,該論文還嘗試了 5 、10 個 Non-local blocks 的實驗,並放在更深的架構上驗證:
基本上是越多 Non-local block 的成果會越好,作者們認為會有一種 Multi-hop 的效果 ( 個人認為很像目前常見的 Multi-head self-attention ,但看得更遠 )。
另外有一點值得注意的是,50 層的架構加上 5 個 Non-local blocks 的成果,比 101 層的 Baseline 還要好,這證明 Non-local blocks 與過往加深架構的做法互補,可是模型以更淺的架構達到近似的成果。
接著是要驗證 Non-local blocks 處理時空資訊的能力:
各別對時間、空間維度應用 Non-local blocks 都會帶來改善,而混用則可獲得最好的成果。
確認過這方法有效後,就是與 3D Convolution 的 Baseline 做比較:
比較項目除了準確度外,還有參數量 ( params ) 與運算量 ( FLOPs )。
NL C2D 就是以 Baseline 置入 Non-local blocks 的模型,不論從哪個方面來看,成果都比 3D Convolution 好,可以用更少的參數量做到更準。
另外,該論文也試著將 Non-local blocks 與 3D Convolution 混用,也就是下表的 NL I3D:
成果表示這兩種技術也是互補的。
以上實驗的輸入資訊都是 32 Frames,該論文還驗證了 4 倍長的輸入資訊:
整體來看都是更準的情況,但仔細比較有無使用 NL 的 I3D 就會發現,有使用 Non-local blocks 的版本較能維持其表現上的成長。
再來就是用表現最好的版本與其他 SOTA 比較:
這部分除了單純分析 RGB 影片外,甚至比了一些有同時用光流、音訊資訊的作法,但該論文的 NL I3D 仍是表現最好的。
Experiments on Charades
Charades 資料集在標註上與 Kinetics 資料集不同,Charades 是 Multi-label 的,而對應作法就是用 Per-category sigmoid output 來處理。
這部分希望驗證的是泛用能力,所以作法是先在 Kinetics 資料集上 Pre-train,並在 Charades 資料集 Fine-tune。相關比較結果如下:
除了比原版的 I3D 好之外,還比一些有同時用光流資訊的方法準。
Extension: Experiments on COCO
除了前述的影片分類任務外,該論文也嘗試用 Non-local block 來分析靜態的影像。
針對物件偵測、語意分割等任務的作法是在 Mask R-CNN 上加入 1 個 Non-local block ,相關成果如下:
除了在這兩個任務有改善外,針對關節點偵測也有不錯的成果:
算是證實了 Non-local block 對定位的任務確實有幫助,且更進一步地展現其泛用性。
Conclusion
受到經典的 Non-local means 方法啟發,該論文提出了一種可捕捉 Long-range dependencies 的神經網路架構。
其中的 Non-local block 可與現有的模型架構做結合,在多種視覺任務上都取得了不錯的成果。