歡迎光臨
每天分享高質量文章

CMU & Facebook論文解讀 | 非區域性神經網路(附程式碼實現)

在碎片化閱讀充斥眼球的時代,越來越少的人會去關註每篇論文背後的探索和思考。

在這個欄目裡,你會快速 get 每篇精選論文的亮點和痛點,時刻緊跟 AI 前沿成果。


點選本文底部的「閱讀原文」即刻加入社群,檢視更多最新論文推薦。

這是 PaperDaily 的第 41 篇文章

本期推薦的論文筆記來自 PaperWeekly 社群使用者 @Yadan本文受 NL-Means 在影象去噪應用中的啟發,採用非區域性均值方法來處理區域性特徵與全圖特徵點的關係。這種非區域性神經網路可以很方便地嵌入現有視覺模型中,提高影象及影片分類精度。

如果你對本文工作感興趣,點選底部的閱讀原文即可檢視原論文。

關於作者:羅雅丹,昆士蘭大學博士生,研究方向為計算機視覺。


■ 論文 | Non-local Neural Networks

■ 連結 | https://www.paperweekly.site/papers/1191

■ 原始碼 | https://github.com/AlexHex7/Non-local_pytorch

■ 原始碼 | https://github.com/titu1994/keras-non-local-nets

論文動機


“Non-local”直譯為“非區域性”。個人的理解是指特徵提取時,當前輸入資料的特徵計算要考慮其它輸入資料的資訊。舉例來說,非區域性操作的關註點就是在於如何建立起影象上兩個有一定距離的畫素之間的聯絡,如何建立影片裡兩幀的聯絡,如何建立一段話中不同詞的聯絡。 


一個典型的 CNN 網路是由一系列摺積操作累積起來的。對於使用在影象上的 CNN,每個摺積操作只能捕捉到輸入資料的區域性資訊。整個網路透過區域性操作的逐步累積來獲得範圍較廣的資訊提取。而 RNN 則是透過迴圈的方式處理序列輸入(如影片每一幀影象的時間序列或者圖片上一列畫素的空間序列),從而融合非區域性的資訊。 


這篇文章提出三點 CNN 和 RNN 在融合非區域性資訊上的三個劣勢:1. 計算不高效;2. 最佳化更難;3. 非區域性特徵的資訊傳遞不夠靈活,功能不夠強大。當然,這也是因為 CNN 和 RNN 的初衷並不是專門來融合非區域性資訊的。 


在這篇文章中,作者提出了一種非區域性模組(non-local block,簡稱 NL block)的網路結構,來幫助深度網路更好地融合非區域性的資訊。這對於一些問題是非常重要的。


方法


從使用在影象去噪問題中的 non-local means [1] 方法出發,作者對 NL block 的抽象描述為:

以影象為背景來說的話,i,j 是畫素坐標,x,y 是輸入和輸出資訊。j 的取值範圍是任意的坐標。C(x) 是一個歸一化常數。f(.) 是用來構建 i,j 點處資訊關聯的二輸入函式。g(.) 是計算 j 點資訊對 i 點影響的單輸入函式。 


這樣的非區域性操作其實很常見,從廣義的角度來講可以從多個已有的研究方向來理解這個操作。


首先這是從影象去噪中借鑒來的模型。除此之外,如果 f(.) 函式輸出的是一個機率值,即 0~1 之間的數值,那麼這就是前段時間有所討論的 self-attention [2]。因為 (i,j) 二元坐標對取遍了所有情況,這個定義又很像 dense CRF [3],或者可以認為這也是一種圖模型。 


回到這篇文章中。作者對 f(.) 有很多不同選擇的定義方式。透過實驗選定了名為 Embedded Gaussain+Dot product 的方案。對 g(.) 的定義是一個簡單的線性函式。NL block 的輸出並沒有替代輸入,而是和原輸入相加,形成一個殘差結構(residual),得到 Zi。


其中 W 均為待學習的引數,可以將其視為 1×1 摺積的引數。若,那麼就是二階的 softmax,即 CRF。 

f(.) 中所做的點積不同於 style transfer 中的協方差或者 bilinear 操作。後兩者是把不同通道的特徵圖兩兩內積,空間資訊完全拋棄,得到的結果是通道數 x 通道數大小的協方差矩陣。f(.) 的操作是每個點的特徵向量(通道個數的維度)進行內積,空間資訊保留了下來,輸出還是 HxW 大小。 


整個 NL block 也可以從結構圖來理解:

圖中 T,H,W 代表輸入特徵的維度。其中 T 是對於影片資料的幀數,對於分割或檢測任務,T=1


這裡面作者還提到了一些小 trick 可以進一步壓縮計算量。比如 1×1 的摺積壓縮輸出通道數,形成一個瓶頸結構(bottleneck)。或者在 f(.) 對應的 1×1 摺積之後使用 pooling 來減小 H,W,即取樣一部分的 j ,而不是所有的 j 進行資訊融合。 


可以看到,NL block 可以用作網路設計中的一個補充結構插入到 CNN 中任意的一層之後。因為使用的是 1×1 摺積,因此對輸入特徵沒有尺寸限制。同時整個操作計算量相對較小,額外引數量也很少。

實驗


作者在影片分類、物體檢測、物體實體分割這些很需要非區域性資訊關聯的任務上進行了實驗。

其中在 Kinetics 資料集上進行了 ablation study,來仔細研究 NL block 各個細節的有效性。結果表格不再贅述,得到的結論總結如下: 


NL block 中 f(.) 不同的定義方式各有千秋,但是為了更好化視覺化使用 embedded Gaussian+dot product,即上文提到的公式所示的方法。 


NL block 放入網路主幹的位置:放在淺層好,高層提升作用下降。


NL block 變深的作用:對於主幹網路較淺的網路,加深 NL block 能夠提升效能。對於較大較深的網路,無論是增加 NL block 還是繼續加深主幹網路的深度都很難再提升效能。


對影片任務,NL block 同時作用於時空比單獨作用於時間域或空間域要好。與 C3D 比較:比 C3D 又快又好。


在 COCO 資料庫上的實驗結果如下所示。鑒於 NL block 結構的易用性,在平時設計網路時可以考慮新增這樣的模組。

參考文獻

[1] A. Buades, B. Coll, and J.-M. Morel. A non-local algorithm for image denoising. In Computer Vision and Pattern Recognition (CVPR), 2005. 

[2] A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser, and I. Polosukhin. Attention is all you need. In Neural Information Processing Systems (NIPS), 2017. 

[3] P. Krahenbuhl and V. Koltun. Efficient inference in fully connected crfs with gaussian edge potentials. In Neural Information Processing Systems (NIPS), 2011.


本文由 AI 學術社群 PaperWeekly 精選推薦,社群目前已改寫自然語言處理、計算機視覺、人工智慧、機器學習、資料挖掘和資訊檢索等研究方向,點選「閱讀原文」即刻加入社群!

  我是彩蛋 


解鎖新功能:熱門職位推薦!

PaperWeekly小程式升級啦

今日arXiv√猜你喜歡√熱門職位

找全職找實習都不是問題

 

 解鎖方式 

1. 識別下方二維碼開啟小程式

2. 用PaperWeekly社群賬號進行登陸

3. 登陸後即可解鎖所有功能

 職位釋出 

請新增小助手微信(pwbot01)進行諮詢

 

長按識別二維碼,使用小程式

*點選閱讀原文即可註冊

           

關於PaperWeekly


PaperWeekly 是一個推薦、解讀、討論、報道人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點選「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。


▽ 點選 | 閱讀原文 | 檢視原論文

贊(0)

分享創造快樂