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

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

640?

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

在這個欄目裡,你會快速 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)的網路結構,來幫助深度網路更好地融合非區域性的資訊。這對於一些問題是非常重要的。

640

方法

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

640

以影象為背景來說的話,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。

640

640

640

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

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

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

640

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

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

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

實驗

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

640

640

其中在 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 結構的易用性,在平時設計網路時可以考慮新增這樣的模組。

640

參考文獻

[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)進行諮詢

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

*點選閱讀原文即可註冊

640?



關於PaperWeekly

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

640?

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

相關推薦

獨家 | 手把手教你用Python建立簡單的神經網路程式碼

作者:Michael J.Garbade 翻譯:陳之炎 校對:丁楠雅 本文共2000字,建議閱讀9分鐘。本文將為你演示如何建立一個神經網路,帶你深入瞭解神經網路的工作方式。 瞭解神經網路工作方式的最佳途徑莫過於親自建立一個神經網路,本文將演示如何做到這一點。

教你用TensorFlow實現神經網路程式碼

來源:雲棲社群 作者:Pavel Surmenok 本文長度為2600字,建議閱讀5分鐘 本文幫助你理解神經網路的應用,並使用TensorFlow解決現實生活中的問題。 如果你一直關注資料科學

機器學習:神經網路-多層前饋神經網路淺析程式碼實現

M-P神經元模型神經網路中最基本的組成成分:神經元模型。如下圖是一個典型的“M-P神經元模型”:上圖中,神經元接收到n個其他神經元傳遞過來的輸入訊號,這些訊號通過權重的連線進行傳遞,神經元接收到的總輸入值與神經元的閾值進行比較,並通過“啟用函式”處理產生神經元輸出。常用S函式

區域性神經網路,打造未來神經網路基本元件

將非區域性計算作為獲取長時記憶的通用模組,提高神經網路效能在深度神經網路中,獲取長時記憶(long-range dependency)至關重要。對於序列資料(例如語音、語言),遞迴運算(recurrent operation)是長時記憶建模的主要解決方案。對於影象資料,長時記憶建模則依靠大型感受野,後者是多層

DeepLearning.ai作業:(4-1)-- 卷積神經網路Foundations of CNN

title: ‘DeepLearning.ai作業:(4-1)-- 卷積神經網路(Foundations of CNN)’ id: dl-ai-4-1h tags: dl.ai homework categories: AI Deep Learning d

DeepLearning.ai筆記:(4-1)-- 卷積神經網路Foundations of CNN

title: ‘DeepLearning.ai筆記:(4-1)-- 卷積神經網路(Foundations of CNN)’ id: dl-ai-4-1 tags: dl.ai categories: AI Deep Learning date: 2018-09-

DeepLearning.ai作業:(5-1)-- 迴圈神經網路Recurrent Neural Networks1

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(1)’ id: dl-ai-5-1h1 tags: dl.ai homework categories: AI Deep

DeepLearning.ai筆記:(5-1)-- 迴圈神經網路Recurrent Neural Networks

title: ‘DeepLearning.ai筆記:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)’ id: dl-ai-5-1 tags: dl.ai categories: AI Deep Learning date: 2

DeepLearning.ai作業:(5-1)-- 迴圈神經網路Recurrent Neural Networks2

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(2)’ id: dl-ai-5-1h2 tags: dl.ai homework categories: AI Deep

DeepLearning.ai作業:(5-1)-- 迴圈神經網路Recurrent Neural Networks3

title: ‘DeepLearning.ai作業:(5-1)-- 迴圈神經網路(Recurrent Neural Networks)(3)’ id: dl-ai-5-1h3 tags: dl.ai homework categories: AI Deep

深度學習之神經網路CNN/RNN/GAN演算法原理+實戰目前最新

第1章 課程介紹 深度學習的導學課程,主要介紹了深度學習的應用範疇、人才需求情況和主要演算法。對課程章節、課程安排、適用人群、前提條件以及學習完成後達到的程度進行了介紹,讓同學們對本課程有基本的認識。 1-1 課程導學 第2章 神經網路入門 本次實戰課程的入門課程。對機器學習和深度學習做了引入

TensorFlow實戰:Chapter-4CNN-2-經典卷積神經網路AlexNet、VGGNet

引言 AlexNet AlexNet 簡介 AlexNet的特點 AlexNet論文分析 引言

DeepLearning.ai筆記:(1-4)-- 深層神經網路Deep neural networks

這一週主要講了深層的神經網路搭建。 深層神經網路的符號表示 在深層的神經網路中, LL表示神經網路的層數 L=4L=4 n[l]n[l]表示第ll層的神經網路個數 W[l]:(n[l],nl−1)W[l]:(n[l],nl−1) dW[l

DeepLearning.ai作業:(1-4)-- 深層神經網路Deep neural networks

不要抄作業! 我只是把思路整理了,供個人學習。 不要抄作業! 本週的作業分了兩個部分,第一部分先構建神經網路的基本函式,第二部分才是構建出模型並預測。 Part1 構建的函式有: Initialize the parameters t

【機器學習筆記19】神經網路單層感知機

【參考資料】 【1】《人工神經網路教程》 【2】《matlab 2015b 神經網路技術》 基本概念 單層感知器可以看成一個線性累加器和一個二值化閾值元器件,通常會在累加一個偏移量。由公式表達為:oj=sgn(∑i=1nwijxi+b)o_j= sgn(\s

機器學習之神經網路機器學習技法

神經網路的動機感知器的線性融合前面我們知道了將簡單的模型進行融合之後會得到一個非常強大的模型。我們試著將感知器(簡單的二元分類模型)做線性融合之後得到下圖:其中每一個節點都是一個感知器,其第一層的感知器都是由前一層X向量與W權重的線性組合,而第二層的感知器又是由前一層的得到的

TensorFlow學習筆記5--實現卷積神經網路MNIST資料集

這裡使用TensorFlow實現一個簡單的卷積神經網路,使用的是MNIST資料集。網路結構為:資料輸入層–卷積層1–池化層1–卷積層2–池化層2–全連線層1–全連線層2(輸出層),這是一個簡單但非常有代表性的卷積神經網路。 import tensorflow

深度學習之神經網路CNN/RNN/GAN (演算法原理+實戰) 完整版下載

第1章 課程介紹 深度學習的導學課程,主要介紹了深度學習的應用範疇、人才需求情況和主要演算法。對課程章節、課程安排、適用人群、前提條件以及學習完成後達到的程度進行了介紹,讓同學們對本課程有基本的認識。 第2章 神經網路入門 本次實戰課程的入門課程。對機器學習和深

TensorFlow實戰:經典卷積神經網路AlexNet、VGGNet

下面表格是兩個網路的簡單比較: 特點 AlexNet VGGNet 論文貢獻 介紹完整CNN架構模型(近些年的許多CNN模型都是依據此模型變種來的)和多種訓練技巧 CNN模型復興的開山之作 使用GPU加速