空間域和通道域注意力機制

計算機視覺中的注意力機制

簡介

計算機視覺(computer vision)中的注意力機制(attention)的主要是想讓系統學會把注意力放在感興趣的地方。具備注意力機制的神經網絡一方面能夠自主學習注意力機制,另一方面則是注意力機制能夠反過來幫助我們去理解神經網絡看到的世界。

近幾年來,深度學習與視覺注意力機制結合的研究工作,大多數是集中於使用掩碼(mask)來形成注意力機制。掩碼的原理在於通過另一層新的權重,將圖片數據中關鍵的特徵標識出來,通過學習訓練,讓深度神經網絡學到每一張新圖片中需要關注的區域,也就形成了注意力。

注意力有兩種,一種是軟注意力(soft attention),另一種則是強注意力(hard attention)。

軟注意力更關注區域或者通道,而且軟注意力是確定性的注意力,學習完成後直接可以通過網絡生成,最關鍵的地方是軟注意力是可微的,這是一個非常重要的地方。可以微分的注意力就可以通過神經網絡算出梯度並且前向傳播和後向反饋來學習得到注意力的權重。

強注意力與軟注意力不同點在於,首先強注意力是更加關注點,也就是圖像中的每個點都有可能延伸出注意力,同時強注意力是一個隨機的預測過程,更強調動態變化。當然,最關鍵是強注意力是一個不可微的注意力,訓練過程往往是通過增強學習(reinforcement learning)來完成的。

爲了更清楚地介紹計算機視覺中的注意力機制,這篇文章將從注意力域(attention domain)的角度來分析幾種注意力的實現方法。其中主要是三種注意力域,空間域(spatial domain),通道域(channel domain),混合域(mixed domain)。

軟注意力的注意力域

空間域(Spatial Domain)

設計思路:

空間域將原始圖片中的空間信息變換到另一個空間中並保留了關鍵信息。
普通的卷積神經網絡中的池化層(pooling layer)直接用一些max pooling 或者average pooling 的方法,將圖片信息壓縮,減少運算量提升準確率。

發明者認爲之前pooling的方法太過於暴力,直接將信息合併會導致關鍵信息無法識別出來,所以提出了一個叫空間轉換器(spatial transformer)的模塊,將圖片中的的空間域信息做對應的空間變換,從而能將關鍵的信息提取出來。

實驗圖

比如這個直觀的實驗圖:

(a)列是原始的圖片信息,其中第一個手寫數字7沒有做任何變換,第二個手寫數字5,做了一定的旋轉變化,而第三個手寫數字6,加上了一些噪聲信號;

(b)列中的彩色邊框是學習到的spatial transformer的框盒(bounding
box),每一個框盒其實就是對應圖片學習出來的一個spatial transformer;

c列中是通過spatial
transformer轉換之後的特徵圖,可以看出7的關鍵區域被選擇出來,5被旋轉成爲了正向的圖片,6的噪聲信息沒有被識別進入。

spatial transformer其實就是注意力機制的實現,因爲訓練出的spatial transformer能夠找出圖片信息中需要被關注的區域,同時這個transformer又能夠具有旋轉、縮放變換的功能,這樣圖片局部的重要信息能夠通過變換而被框盒提取出來。
模型結構
模型結構
這是空間變換網絡(spatialtransformer network)中最重要的空間變換模塊,這個模塊可以作爲新的層直接加入到原有的網絡結構,比如ResNet中。來仔細研究這個模型的輸入:
URH×W×CU \in \mathbb{R}^{H \times W \times C}
神經網絡訓練中使用的數據類型都是張量(tensor),H是上一層tensor的高度(height),W是上一層tensor的寬度(width),而C代表tensor的通道(channel),比如圖片基本的三通道(RGB),或者是經過卷積層(convolutional layer)之後,不同卷積核(kernel)都會產生不同的通道信息。之後這個輸入進入兩條路線,一條路線是信息進入定位網絡(localisation net),另一條路線是原始信號直接進入採樣層(sampler)。

其中定位網絡會學習到一組參數θ,而這組參數就能夠作爲網格生成器(grid generator)的參數,生成一個採樣信號,這個採樣信號其實是一個變換矩陣,與原始圖片相乘之後,可以得到變換之後的矩陣V。
VRH×W×CV \in \mathbb{R}^{H' \times W' \times C}
V就是變換之後的圖片特徵了,變換之後的矩陣大小是可以通過調節變換矩陣來形成縮放的。
空間域變換
這個模塊加進去最大的好處就是能夠對上一層信號的關鍵信息進行識別(attention),並且該信息矩陣是一個可以微分的矩陣,因爲每一個目標點的信息其實是所有源點信息的一個組合,這個組合可以是一個線性組合,複雜的變換信息也可以用核函數(kernel)來表示:
理論上來說,這樣的模塊是可以加在任意層的,因爲模塊可以同時對通道信息和矩陣信息同時處理。

這種模塊其實更適用於原始圖片輸入層之後的變化,因爲卷積層之後,每一個卷積核(filter)產生的通道信息,所含有的信息量以及重要程度其實是不一樣的,都用同樣的transformer其實可解釋性並不強。

通道域(Channel Domain)

設計思路:

通道域的注意力機制原理很簡單,學過信號處理就會很容易理解,信號系統分析裏面,任何一個信號其實都可以寫成正弦波的線性組合,經過時頻變換<注4>之後,時域上連續的正弦波信號就可以用一個頻率信號數值代替了。
注4:一般是使用傅里葉變換,也是卷積變化
信號時頻分解圖
在卷積神經網絡中,每一張圖片初始會由(R,G,B)三通道表示出來,之後經過不同的卷積核之後,每一個通道又會生成新的信號,比如圖片特徵的每個通道使用64核卷積,就會產生64個新通道的矩陣(H,W,64),H,W分別表示圖片特徵的高度和寬度
每個通道的特徵其實就表示該圖片在不同卷積核上的分量,類似於時頻變換,而這裏面用卷積核的卷積類似於信號做了傅里葉變換,從而能夠將這個特徵一個通道的信息給分解成64個卷積核上的信號分量。
不同卷積核
既然每個信號都可以被分解成核函數上的分量,產生的新的64個通道對於關鍵信息的貢獻肯定有多有少,**如果我們給每個通道上的信號都增加一個權重,**來代表該通道與關鍵信息的相關度的話,這個權重越大,則表示相關度越高,也就是我們越需要去注意的通道了。

模型結構
模型結構
首先最左邊是原始輸入圖片特徵X,然後經過變換,比如卷積變換,產生了新的特徵信號U。U有C個通道,我們希望通過注意力模塊來學習出每個通道的權重,從而產生通道域的注意力。

中間的模塊就是SENet的創新部分,也就是注意力機制模塊。這個注意力機制分成三個部分:擠壓(squeeze),激勵(excitation),以及注意(attention)。
擠壓函數:

在這裏插入圖片描述
很明顯這個函數做了一個全局平均值,把每個通道內所有的特徵值相加再平均,也是全局平均池化(global average pooling)的數學表達式。

激勵函數:
在這裏插入圖片描述
δ函數是ReLU,而σ是一個sigmoid激活函數。W1和W2的維度分別是,。通過訓練學習這兩個權重,得到一個一維的激勵權重來激活每一層通道。

尺度函數:
在這裏插入圖片描述
本質是放縮過程,不同通道的值乘上不同的權重,從而可以增強對關鍵通道域的注意力。

還有混合域和時間域還需要消化,消化了再寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章