翻譯:ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

  • 論文鏈接:https://arxiv.org/abs/1910.03151

  • 代碼地址:https://github.com/BangguWu/ECANet

摘要

近年來,通道注意機制被證明在改善深卷積神經網絡(CNN)的性能方面有着巨大的潛力,但現有的方法大多致力於開發更復雜的注意模塊以獲得更好的性能,必然會增加模型複雜性。到爲了克服性能和複雜性的矛盾,本文提出了一種高效的信道注意(ECA)模塊,該模塊只涉及少量的參數,同時帶來了明顯的性能增益。通過對SENet中的通道注意模塊的剖析,我們從經驗上證明了避免降維對學習通道注意的重要性,適當的跨通道交互可以在保持性能的同時顯著降低模型的複雜度。因此,我們提出了一種無需降維的局部跨信道交互策略,該策略可以通過1D卷積有效地實現。此外,我們還提出了一種自適應地選擇維卷積核大小的方法,以確定本地跨信道交互的覆蓋率。所提出的ECA模塊是高效而有效的,例如,我們的模塊對ResNet50主幹網的參數和計算分別爲80 vs 24.37M和4.7e-4gflops和3.86gflops,在Top-1精度方面性能提升超過2%。我們以ResNets和mobilenet2爲骨幹,對我們的ECA模塊在圖像分類、目標檢測和實例分割等方面進行了廣泛的評估,實驗結果表明,我們的ECA模塊在性能上優於同類模塊。

1. Introduction

深卷積神經網絡(CNNs)在計算機視覺領域得到了廣泛的應用,在圖像分類,目標檢測和語義分割等廣泛的任務中取得了很大的進步。 從開創性的AlexNet始,不斷進行許多研究以進一步改善深層CNN的性能。最近,將通道注意力整合到卷積塊中吸引了人們的注意。 興趣濃厚,表現出巨大的性能提升潛力。代表性的方法之一是擠壓激勵(squeeze-and-excitation)網絡(SENet),它學會了每個卷積塊的通道注意,爲各種深度的CNN架構帶來明顯的性能提升。

圖一 不同注意模塊的比較(即SENet、CBAM、A2網絡和ECA網絡)作爲主幹模型,根據分類準確度、網絡參數和FLOP,用圓形半徑表示。請注意,我們的ECA網絡獲得了更高的準確性,同時具有較少的模型複雜性。

繼在SENet 中設置了壓縮(即特徵聚合)和激勵(即特徵重新校準)之後,一些研究通過捕獲更復雜的通道相關性來改善SE塊或結合其他空間注意力。這些方法雖然取得了較高的精度,但往往帶來更高的模型複雜度和更大的計算負擔。與上述方法不同的是,以較高的模型複雜度爲代價獲得更好的性能,本文將重點放在問題:一個可以嗎以更有效的方式學習有效的通道注意力?

爲了回答這個問題,我們首先重新訪問SENet中的通道上的注意力模塊。具體地說,給定輸入特性,SE塊首先獨立地對每個通道使用全局平均池,然後使用兩個具有非線性的全連接(FC)層,然後使用Sigmoid函數生成信道權重。兩個FC層的設計是爲了捕捉非線性的跨信道交互,其中包括降維以控制模型複雜度。雖然這種策略被廣泛應用於非連續的信道注意模塊,但我們的實證研究表明,維數降維對信道注意預測帶來了副作用,而且沒有效率,而且沒有必要捕捉所有的依賴關係渠道。

因此, 本文提出了一種適用於深度cnn的有效信道保持(ECA)模塊,它避免了維數的降低,有效地捕獲了跨信道的交互作用。如圖2所示,在沒有降維的信道全局平均池之後,我們的ECA通過考慮每個信道及其k個鄰居來捕獲本地跨信道交互。這種方法被證明既能保證效率又能保證有效性。注意我們的ECA可以通過k大小的快速1D卷積有效地實現,其中內核大小k代表本地跨通道交互的覆蓋率,即多少人蔘與一個人的注意力預測頻道。避免通過交叉驗證手動調整k,我們開發了一種自適應確定方法,其中交互覆蓋率(即內核大小)與通道維數成正比。如圖1和表3所示,與主幹模型相反,帶有ECA模塊(稱爲ECA網)的深層CNN引入的額外參數很少,計算量也可以忽略不計,同時不會帶來表性能增益。例如,對於參數爲24.37M、GFLOPs爲3.86的ResNet-50,ECA-Net50的附加參數和計算量分別爲80和4.7e-4gflops;同時,ECA-Net50輸出器的最高精度爲2.28%。

表1總結了現有的注意力模塊,包括通道維數減少(DR),跨通道互動和輕量模型,從中我們可以看到,我們的ECA模塊通過避免渠道維數降低同時捕獲跨渠道互動而極大地學習了有效的渠道注意力。 輕便的方式。 爲了評估我們的方法,我們在ImageNet-1K和MS COCO 上使用不同的深度CNN架構在各種任務中進行了實驗。本文的貢獻概括如下。 (1)我們剖析SE塊,並從經驗上證明避免降維和適當的跨渠道互動對於分別學習有效和高效的渠道注意力非常重要。 (2)在以上分析的基礎上,我們嘗試通過提出一種有效的信道注意(ECA)來開發用於深度CNN的極輕量級的信道注意模塊,該模塊在增加明顯改進的同時,增加了很少的模型複雜性。 (3)在ImageNet-1K和MS COCO上的實驗結果表明,該方法的模型複雜度低於最新技術,同時具有非常好的競爭性能。

2. Related Work

事實證明,注意力機制是增強深層CNN的潛在手段。 SE-Net首次提出了一種有效的機制來學習頻道注意力並獲得有希望的表現。 隨後,注意力模塊的發展可以大致分爲兩個方向:(1)增強特徵聚合; (2)通道與空間注意的結合。具體來說,CBAM同時使用平均池和最大池來聚合特性。GSoP引入了二階池以實現更有效的特性聚合。GE使用深度卷積對aggregate特徵進行空間擴展。CBAM和scSE利用核大小爲k×k的一個2d內積計算空間注意力,然後將其與通道注意力相結合。GC-Net與非局部(NL)神經網絡具有相似的道理,它開發了一個簡化的NL網絡並與SE塊集成,從而形成了一個輕量級的模塊來建模遠程依賴。雙注意網絡(A2-Nets)爲圖像或視頻識別中的nlblock引入了一種新的關係函數。雙注意網絡(DAN)同時考慮基於NL的通道和空間注意進行語義分割。然而,以上基於NL的注意模塊由於模型複雜度高,只能在單個或幾個卷積塊中使用。顯然,以上所有的方法都集中在開發複雜的注意力模塊以獲得更好的表現。與之不同的是,我們的ECA旨在以較低的模型複雜度學習有效的通道注意力。

我們的工作還涉及高效卷積,它是爲輕量化cnn設計的。兩種廣泛使用的有效卷積是grop卷積和深度方向可分離卷積。如表2所示,儘管這些有效卷積涉及的參數較少,但它們在注意力模塊中的有效性很低。我們的ECA模塊旨在捕獲局部交叉信道交互,這與信道本地卷積[36]和信道方向卷積[8]有一些相似之處;與之不同,我們的方法研究了一個自適應核大小的數據捲來代替信道注意模塊中的FC層。與羣卷積和深度可分卷積相比,該方法以較低的模型複雜度獲得了更好的性能。

3. Proposed Method

在本節中,我們首先回顧SENet中的通道注意模塊(即SE block)。然後,通過分析降維和跨通道相互作用的影響,對SE傳導阻滯進行了經驗診斷。這促使我們提出ECA模塊。此外,本文還提出了一種自適應確定我們ECA參數的方法,並給出了在DCNN中如何採用該方法.

3.1重新審視SE中的通道注意力

設一個卷積塊的輸出爲X ,分別代表寬、高、通道維度(卷積核的數量)。因此,SE塊中信道的權重可以計算爲

其中是channel-wise全局平局池化(GAP) ,σ是Sigmoid函數。令y=g(x),f{W1,W2}寫作形式:

其中ReLU表示校正後的線性單元,爲了避免高模型複雜度,將W1和W2的大小分別重置爲,我們可以看到f{W1,W2}包含了信道注意塊的所有參數。式(2)中的降維可以降低模型的複雜度,但它破壞了信道及其權重之間的直接對應關係。例如,一個FClayer使用所有信道的線性組合來預測每個信道的權重。但公式(2)首先將通道特徵投影到一個低維空間,然後將其映射回去,使得通道和其權重之間的對應關係是間接的。

3.2. Efficient Channel Attention (ECA) 模塊

在回顧SE區塊之後,我們進行了實證比較,分析了通道維度還原和跨通道互動對通道注意力學習的影響。根據這些分析,我們提出了我們的 Efficient Channel Attention(ECA)模塊

3.2.1避免降維

如上所述,式(2)中的降維使得信道和其權重之間的對應是直接的。爲了驗證其效果,我們將原始SEblock與它的三個變體(即SE-Var1、SE-Var2和SE-Var3)進行比較,這三個變體都沒有進行維度縮減。如表2所示,沒有參數的SE-Var1仍然優於原始網絡,說明信道注意有能力提高DCNNs的性能。同時,SE-Var2獨立地學習每個通道的權值,略優於SE塊,而SE塊參數較少。這可能表明,信道及其權重需要直接對應,而避免降維比考慮非線性通道相關性更爲重要。 此外,採用SE層的SE-Var3在SE塊中具有比二維FC層更好的降維效果。以上所有結果清楚地表明,避免降低維數有助於學習有效的注意力。 因此,我們開發了不降低通道尺寸的ECA模塊。

3.2.2局部跨通道相互作用

給定聚合特徵y在沒有降維的情況下,可以學習通道注意力

其中W是CxC參數矩陣。特別是對於SE-Var2和SE-Var3,我們有

其中,SE-Var2的wvar2是一個包含c參數的對角矩陣;對於SE-Var3,wvar3是一個包含c×c參數的完整矩陣。如等式(4)所示,關鍵區別在於SE-Var3考慮了跨通道交互,而SE-Var2沒有,因此SE-Var3實現了更好的性能。這一結果表明,跨渠道互動有利於學習通道注意力。然而,SE-Var3需要大量的參數,這導致模型複雜度很高,特別是對於較大通道數的情況。

SE-Var2和SE-VAR3之間的一個可能的折衷方案是將Var2擴展到塊對角矩陣,即

式中,式(5)將頻道分爲G組,每個組都包含C/G通道,並獨立地學習每個組中的通道注意,以局部方式捕捉跨通道交互。因此,它涉及到C2/G參數。從卷積的角度來看,SE-Var2、SE-Var3和式(5)可以分別看作深度方向的可分離卷積、FC層卷積和羣卷積。這裏,帶有羣卷積的SE塊(SE-GC)用(σGCG(y))=σ(WGy))表示。

然而,如[24]所示,過多的羣卷積會增加內存訪問成本,從而降低計算效率。如表2所示與SE-Var2相比,具有不同基團的SE-GC沒有帶來任何增益,這表明它不是一種有效的捕獲局部交叉信道相互作用的方案。這可能是因爲SE-GC完全拋棄了不同物種之間的依賴關係組。在本文探討了另一種捕獲本地跨信道交互的方法,旨在保證有效性和有效性。具體來說,我們使用波段矩陣Wk來學習頻道注意力,而Wk有

(6)

顯然,式(6)中Wk涉及k×c參數,通常小於式(5),此外,式(6)避免了等式(5)中不同羣體之間的完全獨立性。如表2所示,式(6)中的方法(即ECA-NS)優於式(5)中的SE-GC。對於式(6),只考慮yi與其k鄰域的相互作用來計算yi的權重,即

其中表示yi的相鄰通道的集合。

更有效的方法是使所有通道共享相同的學習參數,即

注意,這種策略可以很容易地通過核大小爲k的快速1D卷積來實現,即

其中C1D表示1D卷積。這裏,式(9)中的方法被有效信道注意(ECA)模塊調用,該模塊只涉及k個參數。如表2所示,我們的ECA模塊(k=3)與SE-var3實現了類似的結果,同時具有更低的模型複雜度,這通過適當捕捉局部跨信道交互來保證效率和有效性

3.2.3本地跨通道互動覆蓋率

由於我們的ECA模塊(9)旨在恰當地捕獲本地跨信道交互,因此需要確定交互的覆蓋範圍(即1D卷積的核大小k)。在不同的CNN結構中,對於不同信道數的卷積塊,可以手動調整交互覆蓋的優化範圍。然而,通過交叉驗證進行手動調優將耗費大量的計算資源。組卷積已成功地用於改善CNN架構[37、34、16],在給定固定組數的情況下,高維(低維)通道涉及長距離(短距離)卷積。 共享相似的原理,交互作用的覆蓋範圍(即一維卷積的內核大小k)與通道維C成正比是合理的。換句話說,k和C之間可能存在映射φ:

最簡單的映射是一個線性函數,即φ(k)=γ*k−b。但是,以線性函數爲特徵的關係過於有限。另一方面,衆所周知,信道維數C(即濾波器的數目)通常被設置爲2的冪次。因此,我們通過將線性函數φ(k)=γ*k−b擴展到一個非線性函數來引入一個可能的解,即:

然後,在給定通道維度C的情況下,內核大小k可以自適應地確定爲

其中| t | odd表示最近的t奇數。在本文中,我們在所有實驗中分別將γ和b設爲2和1。顯然,通過映射ψ,高維信道具有更長的距離相互作用,而低維信道通過非線性映射進行短程相互作用。

3.3深度CNN的ECA模塊

圖2展示了ECA模塊的概述。在使用GAP進行卷積特徵聚合後,ECA模塊首先自適應地確定核大小爲k,然後根據Sigmoid函數進行卷積,學習信道注意。爲了將我們的ECA應用到深層CNN中,我們按照[14]中相同的配置用ECA模塊替換SE塊,由此產生的網絡以ECA網絡命名。圖3給出了ECA的Pythorch代碼。

class eca_layer(nn.Module):
    """Constructs a ECA module.

    Args:
        channel: Number of channels of the input feature map
        k_size: Adaptive selection of kernel size
    """
    def __init__(self, channel, k_size=3):
        super(eca_layer, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.conv = nn.Conv1d(1, 1, kernel_size=k_size, padding=(k_size - 1) // 2, bias=False) 
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        # x: input features with shape [b, c, h, w]
        b, c, h, w = x.size()#[1, 3, 224, 224]

        # feature descriptor on the global spatial information
        y = self.avg_pool(x)#[1, 3, 1, 1]     1 3 1     1 1 3    1 1 3   1 3 1   1 3 1 1

        # Two different branches of ECA module
        y = self.conv(y.squeeze(-1).transpose(-1, -2)).transpose(-1, -2).unsqueeze(-1)

        # Multi-scale information fusion
        y = self.sigmoid(y)

        return x * y.expand_as(x)

4.實驗

在本節中,我們分別使用ImageNet 和MSCOCO 對所提出的大規模圖像分類,目標檢測和實例分割方法進行評估。 具體來說,我們首先評估內核大小對ECA模塊的影響,然後與ImageNet上的最新技術進行比較。 然後,我們使用Fast R-CNN ,Mask R-CNN 和RetinaNet驗證了ECA-Net在MS COCO上的有效性。

圖像分類實驗

目標檢測

實例分割

5 總結

本文主要研究低複雜度DCNNs的有效信道注意學習問題。爲此,我們提出了一種高效的通道注意(ECA)模塊,該模塊通過快速1D卷積產生信道注意,其核大小可由通道的非線性映射自適應地確定尺寸。實驗性的結果表明,我們的ECA是一個非常輕的即插即用模塊,可以改善各種深層CNN架構的性能,包括廣泛使用的resnet和輕量級MobileNetV2。此外,我們的ECA網絡在目標檢測和實例分割方面表現出良好的泛化能力。未來,我們將把ECA模塊應用到更多的CNN架構中(例如ResNeXt和Inception),並進一步研究ECA與空間注意模塊的結合.

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