論文鏈接: https://arxiv.org/abs/1711.07971.
程序鏈接: https://github.com/Henuzhaoyli/Non-local_pytorch.
1 摘要
卷積操作和循環操作都是一次處理一個局部的模塊。本文提出了一個非局部操作,來捕獲遠程的依賴關係,非局部操作將某一位置的響應計算爲所有位置特徵的加權和。
對於卷積核循環操作,爲了得到遠距離的信息,需要重複的操作,缺點:
1. 計算效率低
2. 優化困難
利用Non-Local 模塊的優點:
1. 非局部操作通過計算任意兩個位置之間的相互作用,直接捕獲長期依賴關係,而不管它們的位置距離如何
2. 非局部操作是有效的,即使只有幾個層(例如,5),也能獲得最佳結果
3. 最後,我們的非局部操作保持了可變的輸入大小,並且可以很容易地與其他操作(例如,我們將使用的卷積)結合在一起。
Non-Local Neural Networks
上面的公式中,輸入是x,輸出是y,i和j分別代表輸入的某個空間位置,x_i是一個向量,維數跟x的channel數一樣,f是一個計算任意兩點相似關係的函數,g是一個映射函數,將一個點映射成一個向量,可以看成是計算一個點的特徵。也就是說,爲了計算輸出層的一個點,需要將輸入的每個點都考慮一遍,而且考慮的方式很像attention:輸出的某個點在原圖上的attention
2.1 理論研究
以圖像爲例,爲了簡化問題,作者簡單地設置g函數爲一個1*1的卷積。相似性度量函數f的選擇有多種: