【論文解讀】FcaNet:頻率通道注意力網(wǎng)絡(luò)論文解讀
導(dǎo)讀
改一行代碼就能漲點,這么好的事情,還不趕緊來看看,用不同的頻率分量來做注意力,確實有效果!
論文:https://arxiv.org/abs/2012.11879

1、介紹
注意力機制有很多種方法,空間注意力,通道注意力,自注意力等,這里我們討論的是通道注意力。通道注意力非常簡單,直接學(xué)習(xí)出對應(yīng)的每個通道的權(quán)值就可以,所以非常的好用。一般來說,在計算通道注意力的時候,每個通道的會需要有個標量值來計算后面的注意力權(quán)重,這個標量的計算函數(shù)一般都是使用Global Average Pooling。但是,GAP并不是那么的完美,簡單的去均值的方法會丟棄很多的信息,無法充分的獲取每個通道的多樣性的信息。那么,除了使用全局的平均值來計算通道注意力之外,還有其他的方法嗎?后面會詳細說明。
文章的主要貢獻如下:
我們證明了GAP是一種特殊形式的DCT(離散余弦變換),基于這個證明,我們將通道注意力泛化到頻域,并提出了FcaNet,使用多個頻率的通道注意力網(wǎng)絡(luò)。 我們提出了一個2階段的損失函數(shù),用來選擇不同的頻率分量,不同的頻率數(shù)量,以及不同的頻率組合。 我們在COCO和ImageNet上都到了SOTA,并超越之前的通道注意力的方法。 我們的方法非常的簡單,只需要改一行代碼就可以替換之前的通道注意力方法。
2、方法
在這部分,我們來看下,GAP是如何和DCT聯(lián)系到一起的,以及FcaNet是如何設(shè)計的。
2.1 通道注意力和離散余弦變換
通道注意力
假設(shè)X是輸入的特征圖,通道注意力機制可以寫成:

這里,att是注意力向量,得到了這個注意力向量之后,每個通道就可以通過這個注意力向量的對應(yīng)元素進行縮放,得到通道注意力機制的輸出:

離散余弦變換
DCT定義為:

這里,f是DCT的頻譜,x是輸入,L是x的長度,2維的DCT可以寫成:

2D的DCT的反變換可以寫成:

在式子(4)和(5)中,為了簡單起見,所以去掉了一些歸一化的常量。
通過通道注意力和DCT的定義,我們可以總結(jié)出兩點:1、現(xiàn)有的方法在做通道注意力的時候,使用GAP作為預(yù)處理。2、DCT可以看成是輸入的加權(quán)和,權(quán)值就是(3)和(4)的余弦部分。
GAP是一個取均值的操作,可以看成是輸入的最簡單的頻譜,也就是頻率為0的分量。但是,在通道注意力中只使用單獨的GAP信息并不是很好,既然單獨的頻譜不好,那么可以考慮多用幾個頻率分量,這就引入了多頻譜的通道注意力機制。
2.2 多頻譜通道注意力
通道注意力的理論分析
上面我們分析過了,DCT可以看成是輸入的加權(quán)和,我們會進一步提出,GAP實際上就是DCT的一種特殊形式。
定理1 GAP是2D DCT的一種特殊形式,它和2D DCT中的最低的頻率分量是成比例的。
證明:假設(shè)在(4)式中,h和w為0,我們有:

在(6)式中,表示2D DCT中的最低的頻率分量,和GAP就差了一個比例常數(shù)。因此,定理1證明完畢。
既然我們已經(jīng)證明了GAP是DCT的一種特殊形式,我們當然也可以引入其他的頻率分量到通道注意力中,我們可以討論一下我們這樣做的原因。
簡單起見,我們用B來表示2D DCT的基礎(chǔ)形式:

我們可以把式(5)重寫一下:

可以看到,這個特征圖X可以表示為不同的頻率分量的組合,其實就是信號處理中的頻率分解,根據(jù)(1)式:

通道注意力僅僅是基于GAP,但是,輸入的特征圖X并不僅僅只有GAP一個頻率分量,還有很多其他的頻率分量:

所以說,在用GAP做通道注意力的時候,很多的信息其實被丟掉了。
多頻譜注意力模塊
為了利用到輸入特征圖X的更多的信息,我們可以使用多個頻率分量,包括GAP。首先,我們把輸入特征圖X,按照通道分為多個組,,原來的通道數(shù)為C,分完之后,每個組的通道數(shù)為C',其中,而且,C應(yīng)該是n的倍數(shù),對于每個組,分配一個特定的2D DCT的頻率分量,這個特定的頻率分量需要事先選擇好。于是,可以將2D DCT作為通道注意力的預(yù)處理,這里,我們有:

這里的[u,v]是頻率分量的2D索引,是C‘維的向量。整體的預(yù)處理向量就是把所有的拼接起來:

這里Freq就是得到的多頻譜向量,然后這個多頻譜的通道注意力可以寫成:

可以看到,對于不同的組,可能使用不同的[u,v]組合,也就是說,每個組使用不同的頻率分量。這樣,就將GAP的單個頻譜擴展到了多個頻譜。
下圖是和SENet的對比:

選擇頻率分量的規(guī)則
現(xiàn)在有個問題是如何去選擇頻率分量,也就是每個中的[u,v]如何選取。對于每個通道,空間分辨率為HW,在做2DDCT之后,可以得到HW個頻率分量,這樣的話,C個通道的頻率分量的組合數(shù)量有CHW個。比如,對于ResNet50,C為2048,測試所有的組合不現(xiàn)實的,計算量非常大,因此,我們提出了一個2步走的啟發(fā)式的方案來選擇頻率分量。
主要的思想是先確定每個頻率分量的重要性,然后確定一起使用不同數(shù)量的頻率分量的有效性。首先,我們檢查單個頻率分量在通道注意力中的有效性,然后,我們選擇topk個效果最好的頻率分量,這樣,得到多頻譜的頻率分量。
2.3 討論
多頻譜框架如何嵌入更多的信息
從上面的式子可以看到,GAP實際上是丟掉了很多其他的頻率分量的信息,只留下了最低頻率的信息。多頻譜很顯然可以使用更多的頻率信息。
我們知道,卷積神經(jīng)網(wǎng)絡(luò)的通道是有冗余的,也就是說,不同的通道的信息可能是相似的。那么,使用GAP的時候,得到的信息也是相似的,而使用多頻譜的話,可以對于不同的通道提取不同的頻譜特征。使得可以得到更加豐富的信息。
復(fù)雜性分析
從參數(shù)數(shù)量上來說,我們的方法并沒有引入任何的參數(shù)。從計算量上來說,我們的額外的計算開銷是非常小的,計算量幾乎是和SENet一樣。
只需要改一行代碼
實現(xiàn)時候,只需要在原始的SENet的代碼上修改一行代碼:

3. 實驗
單獨頻率分量的效果,在ImageNet上的準確率:

使用不同數(shù)量的頻率分量的效果:

和其他的方法的比較:

將FcaNet作為物體檢測的主干的時候,在MS COCO上的結(jié)果:

在MS COCO的實例分割時的效果:

在附錄的地方,還做了關(guān)于頻率組合策略的一些實驗,除了文中提到了選擇topk個效果最好的頻率之外,還嘗試了效果最差的k個,還有頻率最低的k個。Low-k表示頻率最低的k個,Bot-k表示效果最差的k個。

總結(jié)
模型效果很好,改動也很簡單,漲點很明顯。只是不清楚這個最佳的頻率分量的組合的泛化性能怎么樣,能不能用到其他的數(shù)據(jù)集上。不過,從作者給出的結(jié)果看,選出來的其實主要還是低頻的分量,而且從low-k的效果來看,也是挺好的,那么,其實只要按照low-k的方法選取分量,應(yīng)該也都是有效果的,期待有人在更多數(shù)據(jù)集上做下類似的實驗。

論文鏈接:https://arxiv.org/abs/2012.11879
往期精彩回顧
本站知識星球“黃博的機器學(xué)習(xí)圈子”(92416895)
本站qq群704220115。
加入微信群請掃碼:
