attention - 3 - CBAM: Convolutional Block Attention Module - 1 - 論文學習


 

CBAM: Convolutional Block Attention Module

Abstract

我們提出了卷積塊注意模塊(CBAM),一個簡單而有效的用於前饋卷積神經網絡的注意力模塊。給定中間特征圖,我們的模塊依次推導出沿通道和空間兩個獨立維度的注意力map,然后將注意力map乘到輸入特征圖上進行自適應特征細化。因為CBAM是一個輕量級的通用模塊,它可以無縫地集成到任何CNN架構中,開銷可以忽略不計,並且可以與基礎CNN一起進行端到端訓練。我們通過在ImageNet-1K、MS COCO檢測和VOC 2007檢測數據集的廣泛實驗來驗證我們的CBAM。實驗表明,不同模型在分類和檢測性能上都有了一致的改進,證明了CBAM的廣泛適用性。代碼和模型將公開。

 

1 Introduction

卷積神經網絡(Convolutional neural networks, CNNs)憑借其豐富的表征能力,極大地推動了視覺任務的執行[1-3]。為了提高CNNs的性能,最近的研究主要研究了網絡的三個重要因素:深度(depth)、寬度(width)和基數(cardinality, 就是一個block里面,branches或者paths的個數,比如Residual block中,有主干分支和一個恆等分支,因此其cardinality=2)。

從LeNet架構[4]到residual-style樣式的網絡[5-8],到目前為止,網絡已經因為豐富的表征而變得更加深。VGGNet[9]顯示,堆疊相同形狀的塊可以得到良好的結果。遵循同樣的精神,ResNet[5]將殘差塊的相同拓撲與skip connection一起堆疊,以構建一個非常深的體系結構。GoogLeNet[10]表明,寬度是提高模型性能的另一個重要因素。Zagoruyko和Komodakis[6]提出增加基於ResNet架構的網絡寬度。他們已經表明,在CIFAR基准上,一個28層的ResNet增加寬度可以勝過一個非常深的1001層的ResNet。提出了Xception[11]和ResNeXt[7]來增加網絡的基數。它們的經驗表明,基數不僅保存了參數的總數,而且比其他兩個因素(深度和寬度)具有更強的表示能力。

除了這些因素,我們還研究了建築設計的一個不同方面——attention。注意力的意義在之前的文獻中已經被廣泛研究[12-17]。注意力不僅告訴我們應該關注哪里,還能提高感興趣區域的表示能力。我們的目標是通過使用注意力機制來增加表現能力:關注重要的特征,抑制不必要的特征。在本文中,我們提出了一個新的網絡模塊,名為“Convolutional Block Attention Module”。由於卷積操作通過混合跨通道和空間信息來提取信息特征,我們采用我們的模塊來強調兩個主要維度——通道軸和空間軸上的有意義的特征。為了實現這一點,我們依次應用通道和空間注意力模塊(如圖1所示),以便每個分支可以分別在通道和空間軸上學習“what”和“where”。因此,我們的模塊通過學習強調或抑制哪些信息,有效地幫助信息在網絡中流動。

在ImageNet-1K數據集中,通過插入我們的小模塊,我們從各種基線網絡獲得了准確性的提高,顯示了CBAM的有效性。我們使用grado-CAM[18]可視化訓練過的模型,並觀察到CBAM-enhanced網絡比它們的基線網絡更能聚焦於目標對象。考慮到這一點,我們推測性能的提高來自精准的attention和對無關雜波噪音的衰減。最后,我們在MS COCO和VOC 2007數據集上驗證了目標檢測性能的提高,證明了CBAM的廣泛適用性。由於我們精心設計了輕量級模塊,所以在大多數情況下參數和計算的開銷可以忽略不計。

Contribution.  我們的主要貢獻有三方面:

1. 我們提出了一種簡單而有效的注意力模塊(CBAM),可廣泛應用於增強CNN的表示能力。

2. 我們通過廣泛的消融研究驗證了注意力模塊的有效性。

3.我們驗證了在多個基准測試(ImageNet-1K, MS COCO,和VOC 2007)上,通過插入我們的輕量級模塊,各種網絡的性能都得到了極大改善。

 

2 Related work

Network engineering.  “網絡工程”已經成為最重要的視覺研究之一,因為設計良好的網絡保證了在各種應用中顯著的性能改善。自大規模CNN[19]的成功實現以來,已經提出了廣泛的架構。一種直觀而簡單的擴展方法是增加神經網絡[9]的深度。Szegedy等人[10]引入了一個使用多分支架構的深Inception網絡,其中每個分支都是精心定制的。當梯度傳播的困難導致單純的深度增加達到飽和時,ResNet[5]提出了一種簡單的identity skip connection 來緩解深度網絡的優化問題。基於ResNet架構,開發了WideResNet[6]、Inception-ResNet[8]、ResNeXt[7]等多種模型。WideResNet[6]提出了一種帶有大量卷積濾波器且深度降低的殘差網絡。PyramidNet[20]是對WideResNet的嚴格推廣,其中網絡的寬度逐漸增加。ResNeXt[7]建議使用分組(grouped)卷積,並表明增加基數可以提高分類精度。最近,Huang等人[21]提出了一種新的架構——DenseNet。它迭代地將輸入特征與輸出特征連接起來,使每個卷積塊都能從之前的所有塊接收到原始信息。雖然最近大多數網絡工程方法主要針對三個因素:深度[19,9,10,5],寬度[10,22,6,8]和基數[7,11],但我們關注的是另一個方面,“注意力”,其是人類視覺系統的一個有趣的方面。

Attention mechanism.  眾所周知,注意力在人類感知中起着重要的作用[23-25]。人類視覺系統的一個重要特性是,人們不會試圖一次處理整個場景。相反,人類利用一系列的局部glimpses,選擇性地關注突出部分,以便更好地捕捉視覺結構[26]。

最近,有幾次嘗試[27,28]將注意力處理納入到大規模分類任務中,以提高CNN網絡的性能。Wang等人[27]提出了Residual Attention Network,該網絡使用了一種encoder-decoder風格的注意力模塊。通過改進feature map,該網絡不僅表現良好,而且對噪聲輸入具有較強的魯棒性。我們將學習通道注意力和空間注意力的過程分別分解,而不是直接計算三維注意力map。3D feature map的單獨注意力生成過程具有更少的計算和參數開銷,因此可以作為已存在的基礎CNN架構的即插即用模塊。

與我們的工作更加接近,Hu等人[28]引入了一個緊湊的模塊來開發通道間的關系。在他們的Squeeze-and-Excitation模塊中,他們使用全局池化特征來計算信道上的注意力。然而,為了推斷出良好的通道注意力,我們表明這些都是次優特征,我們建議使用最大池化特征。它們還會忽略空間注意力,而空間注意力在決定注意力的“位置”方面起着重要作用,如[29]所示。在我們的CBAM中,我們基於一種有效的架構同時利用了空間注意力和通道注意力,並通過經驗驗證了利用兩者都優於只使用[28]通道注意力。此外,我們的經驗表明,在檢測任務(MS-COCO和VOC)中,我們的模塊是有效的。特別是,我們僅僅通過將我們的模塊放在VOC2007測試集中現有的one-shot檢測器[30]的頂部,就實現了最先進的性能。

 

3 Convolutional Block Attention Module

以中間特征圖F∈RC * H * W為輸入,CBAM依次推導出一維通道注意圖Mc∈RC * 1 * 1,二維空間注意圖Ms∈R1 * H * W,如圖1所示。整體的注意過程可以總結為:

 

其中⊗表示element-wise乘法。在乘法過程中,注意力值被相應地廣播(復制):通道注意力值被沿空間維度廣播,反之亦然。F''是最終的refined輸出。圖2描述了每個注意力map的計算過程。下面介紹每個注意力模塊的細節。

 

Channel attention module.  我們利用特征的通道間關系生成通道注意力map。由於特征圖的每個通道被認為是[31]特征檢測器,對於給定輸入圖像,通道注意力集中在的“what”是有意義的。為了有效地計算通道注意力,我們壓縮了輸入特征圖的空間維數。對於空間信息的聚合,一般采用平均池化法。Zhou et al.[32]建議使用它來有效地學習目標對象的程度,Hu et al.[28]在他們的注意力模塊中使用它來計算空間統計。除了之前的研究,我們認為,最大池化匯集了另一個關於獨特物體特征的重要線索,從而推斷出更精細的注意力通道。因此,我們同時使用了平均池化和最大池化特征。我們通過經驗證實,同時利用這兩種特性可以大大提高網絡的表示能力,而不是單獨使用它們(見第4.1節),這表明了我們設計選擇的有效性。我們將在下面詳細描述操作。

我們首先使用平均池化和最大池化操作聚合特征圖的空間信息,生成兩個不同的空間上下文描述符: FcavgFcmax,分別表示平均池化特征和最大池化特征。然后,兩個描述符被傳播到共享網絡,以產生我們的通道注意力map Mc∈RC×1×1。共享網絡由一個隱含層的多層感知器(MLP)組成。為減少參數開銷,將隱藏激活大小設為RC/r×1×1,其中r為縮減率。將共享網絡應用到每個描述符后,我們使用按元素進行求和的方法合並輸出的特征向量。簡而言之,通道注意力計算為: 

其中,σ是sigmoid函數,W0∈RC/r×C, W1∈RC×C/r。請注意,MLP權重W0W1對於兩個輸入都是共享的,ReLU激活函數后面跟着W0

Spatial attention module.  利用特征內的空間關系生成空間注意力map。與通道注意力不同,空間注意力的重點是“where”,其是一個信息的部分,這是通道注意力的補充。為了計算空間注意力,我們首先在通道軸上應用平均池化和最大池化操作,並將它們連接起來生成一個有效的特征描述符。沿着通道軸應用池化操作可以有效地突出顯示信息區域[33]。在連接的特征描述符上,我們應用卷積層來生成空間注意圖Ms(F)∈RH×W,它編碼在哪里強調或抑制。我們將在下面詳細描述操作。

我們通過兩種pooling操作聚合一個feature map的通道信息,生成兩個2D map: Fsavg∈R1 x H x W, Fsmax∈R1 x H x W。每個都表示通道中平均池化的特征和最大池化的特征。然后將他們串聯,並通過標准的卷積層進行卷積,生成我們的2D空間注意力map。簡而言之,空間注意力的計算方法為:

其中,σ為sigmoid函數,f7×7表示濾波器尺寸為7×7的卷積運算。 

Arrangement of attention modules. 給定一個輸入圖像,兩個通道和空間注意力模塊,計算互補的注意力,分別關注“what”和“where”。考慮到這一點,兩個模塊可以以並行或順序的方式放置。我們發現順序排列比並行排列的結果更好。對於順序排列的安排,實驗結果表明先通道比先空間的效果略好。我們將在第4.1節討論網絡工程的實驗結果。

 

4 Experiments

我們在標准基准上評估CBAM: ImageNet-1K用於圖像分類;MS COCO和VOC 2007用於對象檢測。為了更好地進行apple-to-apple的比較,我們在PyTorch框架[35]中復制了所有評估過的網絡[5 - 7,34,28],並在整個實驗中報告了我們的復制結果。

為了徹底評估我們最后一個模塊的效果,我們首先進行了廣泛的消融實驗。然后,我們驗證了CBAM在沒有花哨功能的情況下優於基線,證明了CBAM在不同架構和不同任務中的普遍適用性。人們可以將CBAM無縫地集成到任何CNN架構中,並共同訓練組合的CBAM-enhanced網絡。圖3展示了在ResNet[5]中與ResBlock集成的CBAM的圖例。

 

4.1 Ablation studies

在本節中,我們以經驗證明我們的設計選擇的有效性。在本次消融研究中,我們使用ImageNet-1K數據集,采用ResNet-50[5]作為基礎架構。ImageNet-1K分類數據集[1]由120萬張用於訓練的圖像和50,000張用於驗證的圖像組成,其中包含1,000個對象類。我們采用與[5,36]相同的數據增強方案進行訓練,在測試時采用single-crop評價,圖像大小為224×224。學習速率從0.1開始,每30個epoch下降一次。訓練 90個 epochs。遵循[5,36,37],我們報告了驗證集上的分類錯誤。

我們的模塊設計過程分為三個部分。首先尋找計算通道注意力的有效方法,然后是計算空間注意力。最后,我們考慮了如何結合通道注意力模塊和空間注意力模塊。我們在下面解釋每個實驗的細節。

Channel attention.  我們通過實驗驗證了同時使用平均池化和最大池化特征能夠更好地進行注意力推斷。我們比較了3種不同的通道注意力:平均池化,最大池化,以及兩個池化的聯合使用。注意,帶有平均池化的通道注意力模塊與SE[28]模塊相同。此外,在使用這兩個池化時,我們使用一個共享的MLP進行注意力推斷來保存參數,因為這兩個聚合的通道特征都位於同一語義嵌入空間。在本實驗中,我們只使用通道注意力模塊,並將縮減比定為16。

各種池化方法的實驗結果如表1所示。比較了從基線提高的准確性,我們觀察到最大池化的特征和平均池化的特征一樣有意義。然而,在SE[28]的工作中,他們只利用了平均池化的特性,而忽略了最大池化特性的重要性。我們認為編碼最顯著部分程度的最大池化特征可以補償編碼全局統計量的平均池化特征。因此,我們建議同時使用這兩個特性,並對這些特性應用共享網絡。然后,共享網絡的輸出通過按元素進行求和進行合並。我們的經驗表明,我們的通道注意力方法是一個有效的方法,以推動性能進一步遠離SE[28],而不需要額外的可學習參數。作為一個簡短的結論,在接下來的實驗中,我們在我們的通道注意力模塊中使用了平均和最大池化特征,縮減比為16。

 

Spatial attention.  在給定通道細化特征的情況下,探索了一種計算空間注意力的有效方法。設計理念與通道注意力分支對稱。為了生成一個二維空間注意力map,我們首先計算一個二維描述符,該描述符編碼所有空間位置上每個像素的通道信息。然后我們對二維描述符應用一個卷積層,得到原始的注意力map。最后的注意力map用sigmoid函數歸一化。

我們比較了生成2D描述符的兩種方法:使用通道軸上的平均和最大池化的通道池化和標准的1×1卷積,將通道維數減少為1。此外,我們研究了以下卷積層中內核大小的影響:內核大小為3和7。在實驗中,我們將空間注意力模塊放置在之前設計的通道注意力模塊之后,因為最終的目的是將兩個模塊一起使用。

實驗結果見表2。我們可以觀察到,通道池化產生了更好的准確性,表明顯式modeled池化能導致比可學習的加權通道池化(實現為1×1卷積) 更好的注意力推斷。在對不同卷積核大小的比較中,我們發現采用更大的核大小在兩種情況下都能產生更好的精度。這意味着需要一個開闊的視野(即大的感受野)來決定重要的空間區域。考慮到這一點,我們采用通道池化方法和核大小較大的卷積層來計算空間注意力。在一個簡短的結論中,我們使用了通道軸上卷積核大小為7的平均和最大池化特征作為我們的空間注意力模塊。

 

Arrangement of the channel and spatial attention.  在本實驗中,我們比較了三種不同的通道和空間注意子模塊的排列方式:通道-空間的順序、空間-通道的順序,以及兩種注意力子模塊的並行使用。由於每個模塊的功能不同,其順序可能會影響整體性能。例如,從空間的角度來看,通道注意力是全局應用的,而空間注意力是局部工作的。此外,我們很自然地會認為,我們可以結合兩種注意力輸出來構建一個3D注意力map。在這種情況下,兩個注意模塊可以並行應用,然后將兩個注意模塊的輸出相加,用sigmoid函數進行歸一化。

表3總結了不同注意力安排方法的實驗結果。從結果中,我們可以發現,按順序生成的注意力map比並行生成的注意力map更好。此外,先通道的性能略優於先空間。請注意,所有的安排方法都優於單獨使用通道注意力,這表明利用兩個注意力是至關重要的,而最佳的安排策略將進一步推動性能。

 

 

Final module design.  在整個消融研究中,我們設計了通道注意力模塊,空間注意力模塊,以及兩個模塊的排列。最后的模塊如圖1和圖2所示:通道注意力模塊和空間注意力模塊都選擇了平均和最大池化;在空間注意力模塊中,我們采用核大小為7的卷積;我們按順序排列通道和空間子模塊。我們最后的模塊(即ResNet50 + CBAM)的top-1 error為22.66%,遠低於SE[28](即。如表4所示。

  

4.2 Image Classification on ImageNet-1K

我們進行ImageNet-1K分類實驗來嚴格評估我們的模塊。我們遵循4.1節中規定的相同協議,在ResNet[5]、WideResNet[6]、ResNext[7]等多種網絡架構中評估我們的模塊。

表4總結了實驗結果。使用CBAM的網絡性能明顯優於所有基線,說明CBAM在大規模數據集中可以很好地推廣到各種模型上。此外,采用CBAM的模型提高了最強大的方法之一——SE[28]的准確性,SE[28]是ILSVRC 2017分類任務的獲勝方法。這表明我們提出的方法是強大的,顯示了新的pooling方法的有效性,它能生成更豐富的描述子和空間注意,有效地補充了通道注意。

圖4是ImageNet-1K訓練時各網絡的誤差曲線。我們可以清楚地看到,我們的方法在兩個誤差圖中顯示了最低的訓練和驗證誤差。這表明,與SE[28]相比,CBAM在提高基線模型泛化能力方面有更大的能力。

我們還發現,CBAM的總體開銷在參數和計算方面都非常小。這促使我們將我們提出的模塊CBAM應用到輕量級網絡,MobileNet[34]。表5總結了我們基於MobileNet架構進行的實驗結果。我們將CBAM分為兩種模式,基本模式和容量減少模式(即調整寬度multiplier(α)為0.7)。我們觀察到類似的現象,如表4所示。CBAM不僅極大地提高了基線的精度,而且很好地改善了SE[28]的性能。這顯示了CBAM對於低端設備上的應用程序的巨大潛力。

  

4.3 Network Visualization with Grad-CAM [18]

對於定性分析,我們使用來自ImageNet驗證集的圖像將grado-CAM[18]應用於不同的網絡。grad-CAM是一種最近提出的可視化方法,它使用梯度來計算卷積層中空間位置的重要性。通過對某一特定類的梯度計算,grado-CAM結果可以清楚地顯示出參與區域。通過觀察網絡認為對預測類很重要的區域,我們試圖看看這個網絡是如何充分利用特征的。我們將CBAM-integrated網絡(ResNet50 + CBAM)與基線(ResNet50)和SE-integrated網絡(ResNet50 + SE)的可視化結果進行比較。圖5顯示了可視化結果。目標類的softmax分數也顯示在圖中。

在圖5中,我們可以清楚地看到CBAM-integrated網絡的CBAM-integrated masks比其他方法更好的覆蓋目標區域。也就是說,CBAM-integrated網絡能夠很好地學習利用目標對象區域中的信息並從中聚合特征。注意,目標類的分數也會相應增加。從觀察結果來看,我們推測CBAM的特征細化過程最終會引導網絡很好地利用給定的特征。

 

4.4 MS COCO Object Detection

我們在Microsoft COCO dataset[3]上進行對象檢測。這個數據集包含80k個訓練圖像(“2014 train”)和40k個驗證圖像(“2014 val”)。用於評估從0.5到0.95的不同IoU閾值的平均mAP。根據[38,39],我們使用所有的訓練圖像和一個驗證圖像子集來訓練我們的模型,拿出5000個示例進行驗證。我們的訓練代碼基於[40],我們對網絡進行了490K的迭代訓練,以快速驗證性能。我們采用Faster-RCNN[41]作為檢測方法,ImageNet預訓練的ResNet50和ResNet101[5]作為基線網絡。這里,我們對通過將CBAM插入基線網絡來提高性能感興趣。由於我們在所有模型中使用了相同的檢測方法,因此所獲得的收益只能歸因於模塊CBAM所賦予的增強的表示能力。如表6所示,我們觀察到與基線相比有顯著的改進,證明了CBAM在其他識別任務上的泛化性能。

 

4.5 VOC 2007 Object Detection

我們進一步在PASCAL VOC 2007測試集上進行了實驗。在本次實驗中,我們將CBAM應用於檢測器,而之前的實驗(表6)將我們的模塊應用於基礎網絡。我們采用的是StairNet[30]框架,它是基於SSD[39]的最強大的multi-scale方法之一。在實驗中,我們在PyTorch平台上復制SSD和StairNet,以准確估計CBAM的性能改進,並實現了77.8%和78.9%的mAP@.5,分別高於原論文報道的原始精度。然后我們將SE[28]和CBAM放在每個分類器的前面,在預測前對由上采樣的全局特征和相應的局部特征組成的最終特征進行精煉,使模型只自適應地選擇有意義的特征。我們將所有模型訓練在VOC 2007 trainval和VOC 2012 trainval的並集(“07+12”)上,並在VOC 2007測試集上進行評估,訓練epoch的總次數為250。我們使用了0.0005的權重衰減和0.9的momentum。在所有的實驗中,為了簡單起見,輸入圖像的大小都被固定在300。

實驗結果如表7所示。我們可以清楚地看到,CBAM提高了兩個主干網絡的所有強基線的准確性。注意,CBAM的精度改進帶來了一個可以忽略的參數開銷,這表明增強不是由於簡單的容量增加,而是由於我們有效地改進了特性。此外,使用輕量級主干網[34]的結果再次表明,CBAM對於低端設備是一種有趣的方法。

  

5 Conclusion

我們提出了卷積bottleneck注意力模塊(CBAM),一種改進CNN網絡表示能力的新方法。我們將基於注意力的特征細化應用於通道和空間兩個不同的模塊,在保持較小的開銷的情況下實現了可觀的性能提升。對於通道注意力,我們建議使用最大池化特征和平均池化特征,從而產生比SE[28]更好的注意力。利用空間注意力進一步推動性能。我們的最后一個模塊(CBAM)學習what和where去有效地強調或抑制,且用於細化中間特性。為了驗證其有效性,我們使用各種先進的模型進行了廣泛的實驗,證實了CBAM在三個不同的基准數據集(ImageNet-1K、MS COCO和VOC 2007)上的性能優於所有基線。此外,對於給定輸入圖像,我們可視化模塊如何准確地推斷。有趣的是,我們觀察到我們的模塊引導網絡正確地聚焦於目標對象。我們希望CBAM成為各種網絡架構的重要組成部分。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM