1. 程式人生 > >計算機視覺技術self-attention最新進展

計算機視覺技術self-attention最新進展

Attention注意力,起源於Human visual system(HVS),個人定義的話,應該類似於 外界給一個刺激Stimuli,然後HVS會第一時間產生對應的 saliency map,注意力對應的應該就是這個顯著性區域。

這其中就涉及很多 bottom-up 及 top-down 的 physiological 原理~總的來說,就是 區域權值學習 問題:

1、Hard-attention,就是0/1問題,哪些區域是被 attentioned,哪些區域不關注

2. Soft-attention,[0,1]間連續分佈問題,每個區域被關注的程度高低,用0~1的score表示

Self-attention

自注意力,就是 feature map 間的自主學習,分配權重(可以是 spatial,可以是 temporal,也可以是 channel間)

[1] Non-local NN, CVPR2018

FAIR的傑作,主要 inspired by 傳統方法用non-local similarity來做影象 denoise

主要思想也很簡單,CNN中的 convolution單元每次只關注鄰域 kernel size 的區域,就算後期感受野越來越大,終究還是區域性區域的運算,這樣就忽略了全域性其他片區(比如很遠的畫素)對當前區域的貢獻。

所以 non-local blocks 要做的是,捕獲這種 long-range 關係:對於2D影象,就是影象中任何畫素對當前畫素的關係權值;對於3D視訊,就是所有幀中的所有畫素,對當前幀的畫素的關係權值。

網路框架圖也是簡單粗暴:

Non-local block[1]

文中有談及多種實現方式,在這裡簡單說說在DL框架中最好實現的 Matmul 方式:

  1. 首先對輸入的 feature map X 進行線性對映(說白了就是 1*1*1 卷積,來壓縮通道數),然後得到  特徵
  2. 通過reshape操作,強行合併上述的三個特徵除通道數外的維度,然後對 進行矩陣點乘操作,得到類似協方差矩陣的東西(這個過程很重要,計算出特徵中的自相關性,即得到每幀中每個畫素對其他所有幀所有畫素的關係)
  3. 然後對自相關特徵 以列or以行(具體看矩陣 g 的形式而定) 進行 Softmax 操作,得到0~1的weights,這裡就是我們需要的 Self-attention 係數
  4. 最後將 attention係數,對應乘回特徵矩陣 g 中,然後再上擴 channel 數,與原輸入 feature map X 殘差一下,完整的 bottleneck

嵌入在 action recognition 框架中的attention map 視覺化效果:

注意力視覺化[1]

圖中的箭頭表示,previous 若干幀中的某些畫素 對最後圖(當前幀)的腳關節畫素的貢獻關係。由於是soft-attention,其實每幀每個畫素對對其有貢獻關係,圖中黃色箭頭是把響應最大的關係描述出來。

總結

Pros:non-local blocks很通用的,容易嵌入在任何現有的 2D 和 3D 卷積網路裡,來改善或者視覺化理解相關的CV任務。比如前不久已有文章把 non-local 用在 Video ReID [2] 的任務裡。

Cons:文中的結果建議把non-local 儘量放在靠前的層裡,但是實際上做 3D 任務,靠前的層由於 temporal T 相對較大,構造及點乘操作那步,超多的引數,需要耗費很大的GPU Memory~ 可後續改善

[2] Interaction-aware Attention, ECCV2018

美圖聯合中科院的文章

這文章扯了很多 Multi-scale 特徵融合,講了一堆 story,然並卵;直接說重點貢獻,就是在 non-local block 的協方差矩陣基礎上,設計了基於 PCA 的新loss,更好地進行特徵互動。作者認為,這個過程,特徵會在channel維度進行更好的 non-local interact,故稱為 Interaction-aware attention

那麼問題來了,怎麼實現 通過PCA來獲得 Attention weights呢?

文中不直接使用 協方差矩陣的特徵值分解 來實現,而是使用下述等價形式:

根據上面公式約束,設計了Interaction-aware loss 來增強channel間的non-local互動:

其中 A 為需要學習的 attention weights,X 為輸入的 feature map

整體的Attention Block框架圖和 non-local 基本一致:

~ 有點小區別是,在 X 和 Watten 點乘後,還加了個 b 項,文中說這裡可看作 data central processing (subtracting mean) of PCA

spatial pyramid interactive attention layer[3]

動作識別的主網路就與non-local中直接使用 I3D 不同,這裡是使用類似 TSN 的取樣Segment形式輸入,然後使用2D網路提特徵,再統一在Attention block進行時空聚合

動作識別網路框架[3]

[4] CBAM: Convolutional Block Attention Module, ECCV2018

這貨就是基於 SE-Net [5]中的 Squeeze-and-Excitation module 來進行進一步拓展,

具體來說,文中把 channel-wise attention 看成是教網路 Look 'what’;而spatial attention 看成是教網路 Look 'where',所以它比 SE Module 的主要優勢就多了後者

我們先看看 SE-module:

SE-module[5]

流程:

  1. 將輸入特徵進行 Global AVE pooling,得到 1*1* Channel
  2. 然後bottleneck特徵互動一下,先壓縮 channel數,再重構回channel數
  3. 最後接個 sigmoid,生成channel 間0~1的 attention weights,最後 scale 乘回原輸入特徵

再看看 CBAM :

CBAM[4]

Channel Attention Module,基本和 SE-module 是一致的,就額外加入了 Maxpool 的 branch。在 Sigmoid 前,兩個 branch 進行 element-wise summation 融合。

Spatial Attention Module, 對輸入特徵進行 channel 間的 AVE 和 Max pooling,然後 concatenation,再來個7*7大卷積,最後 Sigmoid

[4] CDANet, 2018

最近才在arXiv掛出來的,把Self-attention的思想用在影象分割,可通過long-range上下文關係更好地做到精準分割。

主要思想也是上述文章 CBAM 和 non-local 的融合變形:

把deep feature map進行spatial-wise self-attention,同時也進行channel-wise self-attetnion,最後將兩個結果進行 element-wise sum 融合。

Dual Attention Network[6]

這樣做的好處是:

在 CBAM 分別進行空間和通道 self-attention的思想上,直接使用了 non-local 的自相關矩陣 Matmul 的形式進行運算,避免了 CBAM 手工設計 pooling,多層感知器 等複雜操作。

總的來說,上述幾個Attention module很容易嵌入到現有的網路框架中,而 CBAM 特別輕量級,也方便在端部署,也可再cascade一下temporal attention,放進 video 任務裡用~~

估計後續學術界會有很多基於它們的變形和應用,哈哈~

Reference:

[1] Xiaolong Wang, Ross Girshick, Abhinav Gupta, Kaiming He, Non-local Neural Networks, CVPR2018

[2]Xingyu Liao, Lingxiao He, Zhouwang Yang, Video-based Person Re-identification via 3D Convolutional Networks and Non-local Attention,2018

[3]Yang Du, Chunfeng Yuan, Bing Li, Lili Zhao, Yangxi Li, Weiming Hu,Interaction-aware Spatio-temporal Pyramid Attention Networks for Action Classification, ECCV2018

[4] CSanghyun Woo, Jongchan Park, Joon-Young Lee, In So Kweon, BAM: Convolutional Block Attention Module, ECCV2018

[5]Jie Hu, Li Shen, Gang Sun,Squeeze-and-Excitation Networks, ILSVRC 2017 image classification winner; CVPR 2018 Oral

[6]Jun Fu et al., Dual Attention Network for Scene Segmentation, 2018