即插即用 | 5行代碼實(shí)現(xiàn)NAM注意力機(jī)制讓ResNet、MobileNet輕松漲點(diǎn)...


識(shí)別不顯著特征是模型壓縮的關(guān)鍵。然而,這一點(diǎn)在注意力機(jī)制中卻沒有得到研究。在這項(xiàng)工作中提出了一種新的基于規(guī)范化的注意力模塊(NAM),它抑制了較少顯著性的權(quán)值。它對(duì)注意力模塊應(yīng)用一個(gè)權(quán)重稀疏懲罰,因此,在保持類似性能的同時(shí),使它們更有效地計(jì)算。通過與ResNet和MobileNet上其他三種注意力機(jī)制的比較,表明本文的方法具有更高的準(zhǔn)確性。
論文地址:https://arxiv.org/abs/2111.12419
Github:https://github.com/Christian-lyc/NAM
1簡(jiǎn)介
注意力機(jī)制是近年來研究的熱點(diǎn)之一。之前的許多研究都關(guān)注于通過注意力操作捕捉顯著特征。這些方法成功地利用了特征不同維度上的相互信息。然而,它們?nèi)狈?duì)權(quán)重的影響因素的考慮,進(jìn)而進(jìn)一步抑制不顯著的通道或像素。
而本文的目標(biāo)是利用權(quán)重的貢獻(xiàn)因子來改善注意力機(jī)制。使用批歸一化的比例因子,它使用標(biāo)準(zhǔn)差來表示權(quán)重的重要性。這可以避免添加SE、BAM和CBAM中使用的全連接層和卷積層。因此,本文提出了一種有效的基于規(guī)范化的注意力機(jī)制。
2相關(guān)工作
許多先前的工作試圖通過抑制無關(guān)緊要的權(quán)值來改善神經(jīng)網(wǎng)絡(luò)的性能。
Squeeze-and-Excitation Networks(SENet) 將空間信息整合到通道特征響應(yīng)中,并使用兩個(gè)多層感知器(MLP)層計(jì)算相應(yīng)的注意。
Bottleneck Attention Module(BAM)并行構(gòu)建分離的空間子模塊和通道子模塊,它們可以嵌入到每個(gè)Bottleneck ?Block中。
Convolutional Block Attention Module(CBAM)提供了一種順序嵌入通道和空間注意力子模塊的解決方案。
為了避免忽視跨維度的相互作用,Triplet Attention Module (TAM) 通過旋轉(zhuǎn)特征圖考慮維度相關(guān)性。然而,這些工作忽略了來自訓(xùn)練中調(diào)整權(quán)重的信息。
因此,本文的目標(biāo)是通過利用訓(xùn)練模型權(quán)重的方差度量來突出顯著特征。
3本文方法
本文提出NAM作為一種高效、輕量級(jí)的注意力機(jī)制。NAM采用CBAM的模塊整合,重新設(shè)計(jì)了通道和空間注意力子模塊。然后,在每個(gè)網(wǎng)絡(luò)塊的末端嵌入一個(gè)NAM模塊。對(duì)于殘差網(wǎng)絡(luò),它嵌入在殘差結(jié)構(gòu)的末端。對(duì)于通道注意子模塊,使用批歸一化(BN)中的比例因子,如下式所示。
比例因子測(cè)量通道的方差并指出它們的重要性。

其中為均值,為標(biāo)準(zhǔn)差;和是可訓(xùn)練的仿射變換參數(shù)(尺度和位移)。
圖1 通道注意力通道注意力子模塊如圖1和式(2)所示,其中表示輸出特征。是每個(gè)通道的比例因子,權(quán)值為。這里還將BN的比例因子應(yīng)用于空間維度,來衡量像素的重要性。稱之為像素歸一化。
圖2 空間注意力對(duì)應(yīng)的空間注意力子模塊如圖2和式(3)所示,其中輸出記為,為比例因子,權(quán)值為。

PyTorch實(shí)現(xiàn)如下:
對(duì)于殘差網(wǎng)絡(luò),它嵌入在殘差結(jié)構(gòu)的末端。對(duì)于通道注意子模塊,使用批歸一化(BN)中的比例因子.
import?torch.nn?as?nn
import?torch
from?torch.nn?import?functional?as?F
#?具體流程可以參考圖1,通道注意力機(jī)制
class?Channel_Att(nn.Module):
????def?__init__(self,?channels,?t=16):
????????super(Channel_Att,?self).__init__()
????????self.channels?=?channels
????????self.bn2?=?nn.BatchNorm2d(self.channels,?affine=True)
????def?forward(self,?x):
????????residual?=?x
????????x?=?self.bn2(x)
????????#?式2的計(jì)算,即Mc的計(jì)算
????????weight_bn?=?self.bn2.weight.data.abs()?/?torch.sum(self.bn2.weight.data.abs())
????????x?=?x.permute(0,?2,?3,?1).contiguous()
????????x?=?torch.mul(weight_bn,?x)
????????x?=?x.permute(0,?3,?1,?2).contiguous()
????????x?=?torch.sigmoid(x)?*?residual?#
????????
????????return?x
class?Att(nn.Module):Yichao?Liu,?2?months?ago:???Add?files?via?upload
????def?__init__(self,?channels,shape,?out_channels=None,?no_spatial=True):
????????super(Att,?self).__init__()
????????self.Channel_Att?=?Channel_Att(channels)
??
????def?forward(self,?x):
????????x_out1=self.Channel_Att(x)
?
????????return?x_out1??
4實(shí)驗(yàn)
4.1 Cifar-100

4.2 ImageNet
5參考
[1]. ?NAM: Normalization-based Attention Module
6推薦閱讀

卷爆了 | 看SPViT把Transformer結(jié)構(gòu)剪成ResNet結(jié)構(gòu)!??!

重新思考空洞卷積 | RegSeg超越DeepLab、BiSeNetv2讓語(yǔ)義分割實(shí)時(shí)+高精度

全新數(shù)據(jù)增強(qiáng) | TransMix 超越Mix-up、Cut-mix方法讓模型更加魯棒、精度更高
長(zhǎng)按掃描下方二維碼添加小助手并加入交流群,群里博士大佬云集,每日討論話題有目標(biāo)檢測(cè)、語(yǔ)義分割、超分辨率、模型部署、數(shù)學(xué)基礎(chǔ)知識(shí)、算法面試題分享的等等內(nèi)容,當(dāng)然也少不了搬磚人的扯犢子
長(zhǎng)按掃描下方二維碼添加小助手。
可以一起討論遇到的問題
聲明:轉(zhuǎn)載請(qǐng)說明出處
掃描下方二維碼關(guān)注【集智書童】公眾號(hào),獲取更多實(shí)踐項(xiàng)目源碼和論文解讀,非常期待你我的相遇,讓我們以夢(mèng)為馬,砥礪前行!

