通道注意力新突破!從頻域角度出發(fā),浙大提出FcaNet:僅需修改一行代碼,簡(jiǎn)潔又高效

??新智元推薦??
??新智元推薦??
來(lái)源:極市平臺(tái)
作者:Happy
【新智元導(dǎo)讀】本文介紹了一種非常巧妙的通道注意力機(jī)制,從頻域角度分析,采用DCT對(duì)SE進(jìn)行了擴(kuò)展,所提方法簡(jiǎn)單有效僅需更改一行代碼即可實(shí)現(xiàn)比SENet50提升1.8%的性能。

該文是浙江大學(xué)提出一種的新穎的通道注意力機(jī)制,它將通道注意力機(jī)制與DCT進(jìn)行了巧妙的結(jié)合,并在常規(guī)的通道注意力機(jī)制上進(jìn)行了擴(kuò)展得到了本文所提出的多譜通道注意力機(jī)制:FcaLayer。作者在圖像分類、目標(biāo)檢測(cè)以及實(shí)例分割等任務(wù)上驗(yàn)證了所提方案的有效性:在ImageNet分類任務(wù)上,相比SENet50,所提方法可以取得1.8%的性能提升。
從頻域角度進(jìn)行分析
基于頻域分析,作者得出:GAP是頻域特征分解的一種特例。

證實(shí)GAP是DCT的一種特例,基于該分析對(duì)通道注意力機(jī)制在頻域進(jìn)行了擴(kuò)展并提出了帶多譜通道注意力的FcaNet; 通過(guò)探索不同數(shù)量頻域成分的有效性提出了一種“two-step”準(zhǔn)則選擇頻域成分; 通過(guò)實(shí)驗(yàn)證實(shí)了所提方法的有效性,在ImageNet與COCO數(shù)據(jù)集上均取得了優(yōu)于SENet的性能; 所提方法簡(jiǎn)潔有效,僅需在現(xiàn)有通道注意力機(jī)制的基礎(chǔ)上修改一行code即可實(shí)現(xiàn)。
方法介紹
Revisiting Channels Attention and DCT
Discrete Cosine Transform
DCT的定義如下:
其中,表示2D-DCT頻譜。對(duì)應(yīng)的2D-IDCT的定義如下:
Multi-Spectral Channel Attention

為簡(jiǎn)單起見,我們采用B表示2D-DCT的基函數(shù):

? ? ??


實(shí)驗(yàn)
COCO




import mathimport torchimport torch.nn as nndef get_ld_dct(i, freq, L):result = math.cos(math.pi * freq * (i + 0.5) / L)if freq == 0:return resultelse:return result * math.sqrt(2)def get_dct_weights(width, height, channel, fidx_u, fidx_v):dct_weights = torch.zeros(1, channel, width, height)# split channel for multi-spectral attentionc_part = channel // len(fidx_u)for i, (u_x, v_y) in enumerate(zip(fidx_u, fidx_v)):for t_x in range(width):for t_y in range(height):val = get_ld_dct(t_x, u_x, width) * get_ld_dct(t_y, v_y, height)dct_weights[:, i * c_part: (i+1) * c_part, t_x, t_y] = valreturn dct_weightsclass FcaLayer(nn.Module):def __init__(self, channels, reduction=16):super(FcaLayer, self).__init__()self.register_buffer("precomputed_dct_weights", get_dct_weights(...))self.fc = nn.Sequential(nn.Linear(channels, channels//reduction, bias=False),nn.ReLU(inplace=True),nn.Linear(channels//reduction, channels, bias=False),nn.Sigmoid())def forward(self, x):n,c,_,_ = x.size()y = torch.sum(x * self.pre_computed_dct_weights, dim=[2,3])y = self.fc(y).view(n,c,1,1)????????return?x?*?y.expand_as(
論文鏈接:
https://arxiv.org/abs/2012.11879


評(píng)論
圖片
表情
