FcaNet解读
簡介
注意力機(jī)制,特別是通道注意力機(jī)制在計(jì)算機(jī)視覺中取得了巨大的成功,很多工作著重于設(shè)計(jì)更加高效的通道注意力結(jié)構(gòu),卻忽略了一個重要的問題,那就是為了得到每個通道全局表示所使用的全局平均池化(Global Average Pooling,GAP)真的合適嗎?FcaNet這篇文章,作者從頻域角度重新思考GAP,為了彌補(bǔ)了現(xiàn)有通道注意力方法中特征信息不足的缺點(diǎn),將GAP推廣到一種更為一般的2維的離散余弦變換(DCT)形式,通過引入更多的頻率分量來充分的利用信息。設(shè)計(jì)的高效Fca模塊甚至在現(xiàn)有的通道注意力方法基礎(chǔ)上,只需要修改一行代碼即可實(shí)現(xiàn)。
-
論文標(biāo)題
FcaNet: Frequency Channel Attention Networks
-
論文地址
http://arxiv.org/abs/2012.11879
-
論文源碼
https://github.com/cfzd/FcaNet
介紹
注意力機(jī)制在計(jì)算機(jī)視覺中受到了廣泛的關(guān)注,它讓網(wǎng)絡(luò)更加關(guān)注于部分重要的信息,按照作用維度的不同,我們將注意力分為空間注意力、通道注意力和自注意力,其中,由于簡單高效,下圖所示的通道注意力直接對不同的通道加權(quán),成為一種主流的注意力范式。
SENet和ECANet致力于設(shè)計(jì)不同的通道加權(quán)函數(shù),如全連接或者一維卷積,然后這些函數(shù)的輸入都是每個通道一個標(biāo)量,這個標(biāo)量默認(rèn)都是來自于GAP,這是因?yàn)镚AP相當(dāng)?shù)暮啙嵏咝?#xff0c;但是GAP也有不可忽略的問題,那就是GAP沒辦法捕獲豐富的輸入表示,這就導(dǎo)致了經(jīng)過GAP得到的特征缺乏多樣性,這主要是因?yàn)镚AP對一個通道所有空間元素取其均值,而這個均值其實(shí)不足以表達(dá)不同通道的信息。
作者對全局平均池化即GAP進(jìn)行了理論上的分析,最終得出如下結(jié)論:首先,不同的通道有極大概率出現(xiàn)相同的均值,然而它們的語義信息是不同的,換句話說,GAP抑制的通道之間的多樣性;其次,從頻域角度來看,作者證明了GAP其實(shí)是離散余弦變換(DCT)的最低頻分量,這其實(shí)忽略了很多其他有用的分量;最后,CBAM的成功也佐證了只使用GAP得到的信息是不足夠的。
在這些結(jié)論的基礎(chǔ)上,作者設(shè)計(jì)了一種新的高效多譜通道注意力框架。該框架在GAP是DCT的一種特殊形式的基礎(chǔ)上,在頻域上推廣了GAP通道注意力機(jī)制,提出使用有限制的多個頻率分量代替只有最低頻的GAP。通過集成更多頻率分量,不同的信息被提取從而形成一個多譜描述。此外,為了更好進(jìn)行分量選擇,作者設(shè)計(jì)了一種二階段特征選擇準(zhǔn)則,在該準(zhǔn)則的幫助下,提出的多譜通道注意力框架達(dá)到了SOTA效果。
方法論
通道注意力
通道注意力的權(quán)重學(xué)習(xí)如下式所示,它表示輸入經(jīng)過GAP處理后由全連接層學(xué)習(xí)并經(jīng)過Sigmoid激活得到加權(quán)的mask。
att=sigmoid?(fc(gap?(X)))a t t=\operatorname{sigmoid}(f c(\operatorname{gap}(X))) att=sigmoid(fc(gap(X)))
然后,mask與原始輸入經(jīng)過下式逐通道相乘得到注意力操作后的輸出。
X~:,i,:,:=attiX:,i,:,:,s.t.?i∈{0,1,?,C?1}\tilde{X}_{:, i,:,:}=a t t_{i} X_{:, i,:, :}, \text { s.t. } i \in\{0,1, \cdots, C-1\} X~:,i,:,:?=atti?X:,i,:,:?,?s.t.?i∈{0,1,?,C?1}
離散余弦變化
DCT是和傅里葉變換很相似,它的基本形式如下,f∈RLf \in \mathbb{R}^{L}f∈RL為DCT的頻譜,x∈RLx \in \mathbb{R}^{L}x∈RL為輸入,LLL為輸入的長度。
fk=∑i=0L?1xicos?(πkL(i+12)),s.t.?k∈{0,1,?,L?1}f_{k}=\sum_{i=0}^{L-1} x_{i} \cos \left(\frac{\pi k}{L}\left(i+\frac{1}{2}\right)\right), \text { s.t. } k \in\{0,1, \cdots, L-1\} fk?=i=0∑L?1?xi?cos(Lπk?(i+21?)),?s.t.?k∈{0,1,?,L?1}
進(jìn)而,我們推廣得到二維DCT如下,f2d∈RH×Wf^{2 d} \in \mathbb{R}^{H \times W}f2d∈RH×W是二維DCT的頻譜,x2d∈RH×Wx^{2 d} \in \mathbb{R}^{H \times W}x2d∈RH×W是輸入,HHH和WWW是輸入的高和寬。
fh,w2d=∑i=0H?1∑j=0W?1xi,j2dcos?(πhH(i+12))cos?(πwW(j+12))?DCT?weights?s.t.?h∈{0,1,?,H?1},w∈{0,1,?,W?1}\begin{array}{l} f_{h, w}^{2 d}=\sum_{i=0}^{H-1} \sum_{j=0}^{W-1} x_{i, j}^{2 d} \underbrace{\cos \left(\frac{\pi h}{H}\left(i+\frac{1}{2}\right)\right) \cos \left(\frac{\pi w}{W}\left(j+\frac{1}{2}\right)\right)}_{\text {DCT weights }} \quad \text { s.t. } h \in\{0,1, \cdots, H-1\}, w \in\{0,1, \cdots, W-1\} \end{array} fh,w2d?=∑i=0H?1?∑j=0W?1?xi,j2d?DCT?weights?cos(Hπh?(i+21?))cos(Wπw?(j+21?))???s.t.?h∈{0,1,?,H?1},w∈{0,1,?,W?1}?
同樣,逆DCT變換的公式就如下了。
xi,j2d=∑h=0H?1∑w=0W?1fh,w2dcos?(πhH(i+12))cos?(πwW(j+12))?DCT?weights?s.t.?i∈{0,1,?,H?1},j∈{0,1,?,W?1}\begin{array}{l} x_{i, j}^{2 d}=\sum_{h=0}^{H-1} \sum_{w=0}^{W-1} f_{h, w}^{2 d} \underbrace{\cos \left(\frac{\pi h}{H}\left(i+\frac{1}{2}\right)\right) \cos \left(\frac{\pi w}{W}\left(j+\frac{1}{2}\right)\right)}_{\text {DCT weights }} \quad \text { s.t. } i \in\{0,1, \cdots, H-1\}, j \in\{0,1, \cdots, W-1\} \end{array} xi,j2d?=∑h=0H?1?∑w=0W?1?fh,w2d?DCT?weights?cos(Hπh?(i+21?))cos(Wπw?(j+21?))???s.t.?i∈{0,1,?,H?1},j∈{0,1,?,W?1}?
上面兩個式子中,為了簡單起見,移除了一些常數(shù)標(biāo)準(zhǔn)化約束因子。DCT變換屬于信號處理領(lǐng)域的知識,是JPEG圖像壓縮的核心算法,相當(dāng)于是對重要信息的聚集。其實(shí)從這里可以看出來,DCT變換其實(shí)也是一種對輸入的加權(quán)求和,式子中的余弦部分就是權(quán)重。因此,GAP這種均值運(yùn)算可以認(rèn)為是輸入的最簡單頻譜,這顯然是信息不足的,因此作者引出了下面的多譜通道注意力。
多譜通道注意力
這里作者首先按證明了GAP其實(shí)是二維DCT的特例,其結(jié)果和二維DCT的最低分量成比例。這個證明作者是令hhh和www都為0得到的,其中f0,02df_{0,0}^{2 d}f0,02d?表示二維DCT最低頻分量,顯然,結(jié)果來看它與GAP成正比。
f0,02d=∑i=0H?1∑j=0W?1xi,j2dcos?(0H(i+12))cos?(θW(j+12))=∑i=0H?1∑j=0W?1xi,j2d=gap(x2d)HW\begin{aligned} f_{0,0}^{2 d} &=\sum_{i=0}^{H-1} \sum_{j=0}^{W-1} x_{i, j}^{2 d} \cos \left(\frac{0}{H}\left(i+\frac{1}{2}\right)\right) \cos \left(\frac{\theta}{W}\left(j+\frac{1}{2}\right)\right) \\ &=\sum_{i=0}^{H-1} \sum_{j=0}^{W-1} x_{i, j}^{2 d} \\ &=g a p\left(x^{2 d}\right) H W \end{aligned} f0,02d??=i=0∑H?1?j=0∑W?1?xi,j2d?cos(H0?(i+21?))cos(Wθ?(j+21?))=i=0∑H?1?j=0∑W?1?xi,j2d?=gap(x2d)HW?
通過上面的結(jié)論,自然會想到將其他分量引入通道注意力中,首先,為了敘述方便,將二維DCT的基本函數(shù)記為Bh,wi,j=cos?(πhH(i+12))cos?(πwW(j+12))B_{h, w}^{i, j}=\cos \left(\frac{\pi h}{H}\left(i+\frac{1}{2}\right)\right) \cos \left(\frac{\pi w}{W}\left(j+\frac{1}{2}\right)\right)Bh,wi,j?=cos(Hπh?(i+21?))cos(Wπw?(j+21?)),繼而將逆二維DCT變換改寫如下,
xi,j2d=∑h=0H?1∑w=0W?1fh,w2dcos?(πhH(i+12))cos?(πwW(j+12))=簡寫為Bf0,02dB0,0i,j+f0,12dB0,1i,j+?+fH?1,W?12dBH?1,W?1i,j=GAP特殊形式結(jié)論gap(x2d)HWB0,0i,j+f0,12dB0,1i,j+?+fH?1,W?12dBH?1,W?1i,js.t.?i∈{0,1,?,H?1},j∈{0,1,?,W?1}\begin{array}{l} x_{i, j}^{2 d}=\sum_{h=0}^{H-1} \sum_{w=0}^{W-1} f_{h, w}^{2 d} \cos \left(\frac{\pi h}{H}\left(i+\frac{1}{2}\right)\right) \cos \left(\frac{\pi w}{W}\left(j+\frac{1}{2}\right)\right) \\ \stackrel{簡寫為B}{=} f_{0,0}^{2 d} B_{0,0}^{i, j}+f_{0,1}^{2 d} B_{0,1}^{i, j}+\cdots+f_{H-1, W-1}^{2 d} B_{H-1, W-1}^{i, j} \\ \stackrel{GAP特殊形式結(jié)論}{=} g a p\left(x^{2 d}\right) H W B_{0,0}^{i, j}+f_{0,1}^{2 d} B_{0,1}^{i, j}+\cdots+f_{H-1, W-1}^{2 d} B_{H-1, W-1}^{i, j} \\ \text { s.t. } i \in\{0,1, \cdots, H-1\}, j \in\{0,1, \cdots, W-1\} \end{array} xi,j2d?=∑h=0H?1?∑w=0W?1?fh,w2d?cos(Hπh?(i+21?))cos(Wπw?(j+21?))=簡寫為Bf0,02d?B0,0i,j?+f0,12d?B0,1i,j?+?+fH?1,W?12d?BH?1,W?1i,j?=GAP特殊形式結(jié)論gap(x2d)HWB0,0i,j?+f0,12d?B0,1i,j?+?+fH?1,W?12d?BH?1,W?1i,j??s.t.?i∈{0,1,?,H?1},j∈{0,1,?,W?1}?
由這個式子其實(shí)不難發(fā)現(xiàn),此前的通道注意力只應(yīng)用了第一項(xiàng)的最低頻分量部分,而沒有使用下式表示的后面其他部分,這些信息都被忽略了。
X=gap(X)HWB0,0i,j?utilized?+f0,12dB0,1i,j+?+fH?1,W?12dBH?1,W?1i,j?discarded?X=\underbrace{g a p(X) H W B_{0,0}^{i, j}}_{\text {utilized }}+\underbrace{f_{0,1}^{2 d} B_{0,1}^{i, j}+\cdots+f_{H-1, W-1}^{2 d} B_{H-1, W-1}^{i, j}}_{\text {discarded }} X=utilized?gap(X)HWB0,0i,j???+discarded?f0,12d?B0,1i,j?+?+fH?1,W?12d?BH?1,W?1i,j???
基于此,作者設(shè)計(jì)了多譜注意力模塊(Multi-Spectral Attention Module,),該模塊通過推廣GAP采用更多頻率分量從而引入更多的信息。
首先,輸入XXX被沿著通道劃分為多塊,記為[X0,X1,?,Xn?1]\left[X^{0}, X^{1}, \cdots, X^{n-1}\right][X0,X1,?,Xn?1],其中每個Xi∈RC′×H×W,i∈{0,1,?,n?1},C′=CnX^{i} \in \mathbb{R}^{C^{\prime} \times H \times W}, i \in\{0,1, \cdots, n-1\}, C^{\prime}=\frac{C}{n}Xi∈RC′×H×W,i∈{0,1,?,n?1},C′=nC?,每個塊分配一個二維DCT分量,那么每一塊的輸出結(jié)果如下式。
Freqi=2DDCTu,v(Xi)=∑h=0H?1∑w=0W?1X:,h,wiBh,wu,vs.t.?i∈{0,1,?,n?1}\begin{aligned} F r e q^{i} &=2 \mathrm{DDCT}^{u, v}\left(X^{i}\right) \\ &=\sum_{h=0}^{H-1} \sum_{w=0}^{W-1} X_{:, h, w}^{i} B_{h, w}^{u, v} \\ & \text { s.t. } i \in\{0,1, \cdots, n-1\} \end{aligned} Freqi?=2DDCTu,v(Xi)=h=0∑H?1?w=0∑W?1?X:,h,wi?Bh,wu,v??s.t.?i∈{0,1,?,n?1}?
上式中的[u,v][u, v][u,v]表示2DDCT的分量下標(biāo),這就對每一塊采用不同的頻率分量了,因此下式得到最終的輸出Freq∈RCFreq \in \mathbb{R}^{C}Freq∈RC就是得到的多譜向量,然后再將這個向量送入通道注意力常用的全連接層中進(jìn)行學(xué)習(xí)得到注意力圖。
Freq?=cat?([Fre?q0,Fre?q1,?,Freq?n?1])\text { Freq }=\operatorname{cat}\left(\left[\text { Fre } q^{0}, \text { Fre } q^{1}, \cdots, \text { Freq }^{n-1}\right]\right) ?Freq?=cat([?Fre?q0,?Fre?q1,?,?Freq?n?1])
ms?att=sigmoid?(fc(Freq?))m s_{-} a t t=\operatorname{sigmoid}(f c(\text { Freq })) ms??att=sigmoid(fc(?Freq?))
這就是全部的多譜注意力模塊的設(shè)計(jì)了,現(xiàn)在,下圖這個FcaNet整體框架中間的一部分就看得明白了,唯一留下的問題就是對分割得到的每個特征圖塊,如何選擇[u,v][u,v][u,v]呢?事實(shí)上,對空間尺寸為H×WH\times WH×W的特征圖,會有HWHWHW個頻率分量,由此頻率分量的組合共有CHWCHWCHW種,遍歷顯然是非常費(fèi)時的,因此,文中設(shè)計(jì)了一種啟發(fā)式的兩步準(zhǔn)則來選擇多譜注意力模塊的頻率分量,其主要思想是先得到每個頻率分量的重要性再確定不同數(shù)目頻率分量的效果。具體而言,先分別計(jì)算通道注意力中采用各個頻率分量的結(jié)果,然后,根據(jù)結(jié)果少選出topk個性能最好的分量。
到這里,整個FcaNet的方法論就說明完了,下面作者還進(jìn)行了一些討論,包括計(jì)算復(fù)雜度和修改難度。復(fù)雜度方面,相比于SENet沒有引入額外參數(shù),因?yàn)?DDCT權(quán)重是預(yù)先計(jì)算好的,相比于SENet增加的計(jì)算量幾乎可以忽略不記。此外,2DDCT可以認(rèn)為是對輸入的加權(quán)求和,因此它可以通過逐元素乘加實(shí)現(xiàn),在原本通道注意力代碼基礎(chǔ)上前向計(jì)算只需要修改一行,其PyTorch實(shí)現(xiàn)如下圖。
實(shí)驗(yàn)
作者首先經(jīng)過實(shí)驗(yàn)對比了單個頻率分量的有效性,具體的實(shí)驗(yàn)配置可以查看原論文,不過,實(shí)驗(yàn)最終驗(yàn)證當(dāng)[u,v][u,v][u,v]為[0,0]時效果是最好的,這就是GAP操作,下圖同時也驗(yàn)證了深度模型對低頻分量更關(guān)注的事實(shí)。但是,雖然其他分量效果不及GAP,但也是含有大量有效信息的,因此加進(jìn)去是合理的。
接著,在知道了哪些分量更好的前提下,作者對分量的數(shù)目進(jìn)行了實(shí)驗(yàn),結(jié)果如下表,Number=1的GAP效果弱于其他各種Number選擇的多譜注意力,Number=16時效果最好。
最后,作者也將本文設(shè)計(jì)的FcaNet和其他注意力網(wǎng)絡(luò)進(jìn)行對比,在分類、檢測和分割等benchmark上和其他方法對比,在分類和檢測上都有比較明顯的提高,下圖所示為ImageNet上分類任務(wù)結(jié)果,其他的我這里就不展示了,可以查看原文。
總結(jié)
本文是依據(jù)可靠數(shù)學(xué)進(jìn)行的理論創(chuàng)新,一改此前通道注意力的結(jié)構(gòu)設(shè)計(jì)思路,將關(guān)注重心放在了GAP是DCT的特例這一推導(dǎo)下,從而設(shè)計(jì)了多譜通道注意力,取得了相當(dāng)不錯的成果。將思路轉(zhuǎn)到頻域還是非常新穎的,雖然一行代碼的說法略顯牽強(qiáng),最終的性能也是坐等開源再說,總體來看,FcaNet還是值得了解的注意力文章。
總結(jié)
- 上一篇: PyTorch-混合精度训练
- 下一篇: MLT解读