SENet
Squeeze-and-Excitation Networks (SENet) 膘壶,CVPR2017 [code]
很多工作被提出來(lái)從空間維度層面來(lái)提升網(wǎng)絡(luò)的性能雕崩,如 Inception 結(jié)構(gòu)中嵌入了多尺度信息嫂丙,聚合多種不同感受野上的特征來(lái)獲得性能增益哑蔫;在 Inside-Outside 網(wǎng)絡(luò)中考慮了空間中的上下文信息;還有將 Attention 機(jī)制引入到空間維度上丁溅。那么很自然想到啦膜,網(wǎng)絡(luò)是否可以從其他層面來(lái)考慮去提升性能,比如考慮特征通道之間的關(guān)系胃榕?SENet就是基于這一點(diǎn)盛险,Squeeze 和 Excitation 是兩個(gè)非常關(guān)鍵的操作。動(dòng)機(jī)是希望顯式地建模特征通道之間的相互依賴關(guān)系勋又。另外苦掘,并沒有引入一個(gè)新的空間維度來(lái)進(jìn)行特征通道間的融合,而是采用了一種全新的「特征重標(biāo)定」策略楔壤。具體來(lái)說(shuō)鹤啡,就是通過(guò)學(xué)習(xí)的方式來(lái)自動(dòng)獲取到每個(gè)特征通道的重要程度,然后依照這個(gè)重要程度去提升有用的特征并抑制對(duì)當(dāng)前任務(wù)用處不大的特征蹲嚣。
SE 模塊的示意圖如下递瑰。給定一個(gè)輸入 x,其特征通道數(shù)為 隙畜,通過(guò)一系列卷積等一般變換后得到一個(gè)特征通道數(shù)為
的特征抖部。與傳統(tǒng)的 CNN 不一樣的是,接下來(lái)我們通過(guò)三個(gè)操作來(lái)重標(biāo)定前面得到的特征议惰。
首先是 Squeeze 操作慎颗,我們順著空間維度來(lái)進(jìn)行特征壓縮,將每個(gè)二維的特征通道變成一個(gè)實(shí)數(shù)言询,這個(gè)實(shí)數(shù)某種程度上具有全局的感受野俯萎,并且輸出的維度和輸入的特征通道數(shù)相匹配。它表征著在特征通道上響應(yīng)的全局分布倍试,而且使得靠近輸入的層也可以獲得全局的感受野讯屈,這一點(diǎn)在很多任務(wù)中都是非常有用的。
其次是 Excitation 操作县习,它是一個(gè)類似于循環(huán)神經(jīng)網(wǎng)絡(luò)中門的機(jī)制涮母。通過(guò)參數(shù) w 來(lái)為每個(gè)特征通道生成權(quán)重谆趾,其中參數(shù) w 被學(xué)習(xí)用來(lái)顯式地建模特征通道間的相關(guān)性。
最后是一個(gè) Reweight 的操作叛本,我們將 Excitation 的輸出的權(quán)重看做是經(jīng)過(guò)特征選擇后的每個(gè)特征通道的重要性沪蓬,然后通過(guò)乘法逐通道加權(quán)到先前的特征上,完成在通道維度上的對(duì)原始特征的重標(biāo)定来候。
左圖是將 SE 模塊嵌入到 Inception 結(jié)構(gòu)的一個(gè)示例跷叉。方框旁邊的維度信息代表該層的輸出。這里我們使用 global average pooling 作為 Squeeze 操作营搅。緊接著兩個(gè) Fully Connected 層組成一個(gè) Bottleneck 結(jié)構(gòu)去建模通道間的相關(guān)性云挟,并輸出和輸入特征同樣數(shù)目的權(quán)重。我們首先將特征維度降低到輸入的 1/16转质,然后經(jīng)過(guò) ReLu 激活后再通過(guò)一個(gè) Fully Connected 層升回到原來(lái)的維度园欣。這樣做比直接用一個(gè) Fully Connected 層的好處在于:
1)具有更多的非線性,可以更好地?cái)M合通道間復(fù)雜的相關(guān)性休蟹;
2)極大地減少了參數(shù)量和計(jì)算量沸枯。然后通過(guò)一個(gè) Sigmoid 的門獲得 0~1 之間歸一化的權(quán)重,最后通過(guò)一個(gè) Scale 的操作來(lái)將歸一化后的權(quán)重加權(quán)到每個(gè)通道的特征上赂弓。
除此之外绑榴,SE 模塊還可以嵌入到含有 skip-connections 的模塊中。右圖是將 SE 嵌入到 ResNet 模塊中的一個(gè)例子盈魁,操作過(guò)程基本和 SE-Inception 一樣翔怎,只不過(guò)是在 Addition 前對(duì)分支上 Residual 的特征進(jìn)行了特征重標(biāo)定。如果對(duì) Addition 后主支上的特征進(jìn)行重標(biāo)定杨耙,由于在主干上存在 0~1 的 scale 操作姓惑,在網(wǎng)絡(luò)較深 BP 優(yōu)化時(shí)就會(huì)在靠近輸入層容易出現(xiàn)梯度消散的情況,導(dǎo)致模型難以優(yōu)化按脚。
目前大多數(shù)的主流網(wǎng)絡(luò)都是基于這兩種類似的單元通過(guò) repeat 方式疊加來(lái)構(gòu)造的于毙。由此可見,SE 模塊可以嵌入到現(xiàn)在幾乎所有的網(wǎng)絡(luò)結(jié)構(gòu)中辅搬。通過(guò)在原始網(wǎng)絡(luò)結(jié)構(gòu)的 building block 單元中嵌入 SE 模塊唯沮,我們可以獲得不同種類的 SENet。如 SE-BN-Inception堪遂、SE-ResNet介蛉、SE-ReNeXt、SE-Inception-ResNet-v2 等等溶褪。
SKNet
Selective Kernel Networks (SKNet) 币旧,CVPR2019 [code]
本文的motivation是發(fā)現(xiàn)過(guò)去的卷積網(wǎng)絡(luò)在每層都share相同的感受野大小,而在神經(jīng)科學(xué)中猿妈,視覺皮層單元中的感受野大小應(yīng)該是受stimulus變化而自適應(yīng)調(diào)整吹菱,故SK unit 就是實(shí)現(xiàn)這個(gè)功能巍虫。對(duì)多個(gè)不同感受野大小的branch進(jìn)行融合,融合中使用的是類SENet結(jié)構(gòu)鳍刷,最后使用類似門機(jī)制的softmax attention來(lái)分配branch的重要性占遥。
- Split 即進(jìn)行不同感受野卷積操作,上面的branch為3x3 kernel, dilate size=1的输瓜,而下面的為5x5 的dilate size=2的卷積(為了進(jìn)一步提高效率瓦胎,將常規(guī)的5x5卷積替換為5x5的空洞卷積)。
- Fuse 即進(jìn)行特征融合尤揣,對(duì)兩個(gè)branch卷積后的特征進(jìn)行疊加搔啊,然后標(biāo)準(zhǔn)SE過(guò)程(Global AVG, FC-BN-ReLU,F(xiàn)C)北戏,這里最后的FC是分別出來(lái)兩個(gè)branch的channel weight vector
- Select 即對(duì)Fuse最后的兩個(gè)branch的channel weight vector進(jìn)行每個(gè)位置各自的Softmax操作坯癣,類似門機(jī)制,可得到兩個(gè)branch中每個(gè)channel各自的權(quán)值最欠,乘回原始特征中,最后進(jìn)行特征疊加惩猫。
通過(guò)在自然圖像中放大目標(biāo)對(duì)象和縮小背景來(lái)模擬刺激芝硬,以保持圖像大小不變。結(jié)果發(fā)現(xiàn)轧房,當(dāng)目標(biāo)物體越來(lái)越大時(shí)拌阴,大多數(shù)神經(jīng)元會(huì)越來(lái)越多地從更大的核路徑中收集信息。這些結(jié)果表明奶镶,所提出的sknet中的神經(jīng)元具有自適應(yīng)的感受野大小迟赃。
Non-Local Net
Non-local neural networks(NLNet), [code]
Local這個(gè)詞主要是針對(duì)感受野(receptive field)來(lái)說(shuō)的。以卷積操作為例厂镇,它的感受野大小就是卷積核大小纤壁,而我們一般都選用33,55之類的卷積核捺信,它們只考慮局部區(qū)域酌媒,因此都是local的運(yùn)算。同理迄靠,池化(Pooling)也是秒咨。相反的,non-local指的就是感受野可以很大掌挚,而不是一個(gè)局部領(lǐng)域雨席。
那我們碰到過(guò)什么non-local的操作嗎?有的吠式,全連接就是non-local的陡厘,而且是global的抽米。但是全連接帶來(lái)了大量的參數(shù),給優(yōu)化帶來(lái)困難雏亚。這也是深度學(xué)習(xí)(主要指卷積神經(jīng)網(wǎng)絡(luò))近年來(lái)流行的原因缨硝,考慮局部區(qū)域,參數(shù)大大減少了罢低,能夠訓(xùn)得動(dòng)了查辩。
我們知道,卷積層的堆疊可以增大感受野网持,但是如果看特定層的卷積核在原圖上的感受野宜岛,它畢竟是有限的。這是local運(yùn)算不能避免的功舀。然而有些任務(wù)萍倡,它們可能需要原圖上更多的信息,比如attention辟汰。如果在某些層能夠引入全局的信息列敲,就能很好地解決local操作無(wú)法看清全局的情況,為后面的層帶去更豐富的信息帖汞。
上面的公式中戴而,輸入是x,輸出是y翩蘸,i和j分別代表輸入的某個(gè)空間位置所意,是一個(gè)向量,維數(shù)跟x的channel數(shù)一樣催首,f是一個(gè)計(jì)算任意兩點(diǎn)相似關(guān)系的函數(shù)扶踊,g是一個(gè)映射函數(shù),將一個(gè)點(diǎn)映射成一個(gè)向量郎任,可以看成是計(jì)算一個(gè)點(diǎn)的特征秧耗。也就是說(shuō),為了計(jì)算輸出層的一個(gè)點(diǎn)舶治,需要將輸入的每個(gè)點(diǎn)都考慮一遍绣版,而且考慮的方式很像attention:輸出的某個(gè)點(diǎn)在原圖上的attention,而mask則是相似性給出歼疮。
以圖像為例杂抽,為了簡(jiǎn)化問題,作者簡(jiǎn)單地設(shè)置g函數(shù)為一個(gè)1*1的卷積韩脏。相似性度量函數(shù)f的選擇有多種:
- Gussian:
- Embedded Gussian:
- Concatenation:
最后一種的歸一化系數(shù)C(x)選擇為x的點(diǎn)數(shù)缩麸,只是為了簡(jiǎn)化計(jì)算,同時(shí)赡矢,還能保證對(duì)任意尺寸的輸入杭朱,不會(huì)產(chǎn)生數(shù)值上的尺度伸縮阅仔。
為了能讓non-local操作作為一個(gè)組件,可以直接插入任意的神經(jīng)網(wǎng)絡(luò)中弧械,作者把non-local設(shè)計(jì)成residual block的形式八酒,讓non-local操作去學(xué)x的residual:
實(shí)際上是一個(gè)卷積操作,它的輸出channel數(shù)跟x一致刃唐。這樣以來(lái)羞迷,non-local操作就可以作為一個(gè)組件,組裝到任意卷積神經(jīng)網(wǎng)絡(luò)中画饥。
GCNet
Non-local Networks Meet Squeeze-Excitation Networks and Beyond (GCNet) , [code]
為了捕獲長(zhǎng)距離依賴關(guān)系衔彻,產(chǎn)生了兩類方法:
- 第一種是采用自注意力機(jī)制來(lái)建模query對(duì)的關(guān)系薇宠。
- 第二種是對(duì)query-independent(可以理解為無(wú)query依賴)的全局上下文建模。
NLNet就是采用自注意力機(jī)制來(lái)建模像素對(duì)關(guān)系艰额。然而NLNet對(duì)于每一個(gè)位置學(xué)習(xí)不受位置依賴的attention map澄港,造成了大量的計(jì)算浪費(fèi)。
SENet用全局上下文對(duì)不同通道進(jìn)行權(quán)值重標(biāo)定悴晰,來(lái)調(diào)整通道依賴。然而逐工,采用權(quán)值重標(biāo)定的特征融合铡溪,不能充分利用全局上下文。
通過(guò)嚴(yán)格的實(shí)驗(yàn)分析泪喊,作者發(fā)現(xiàn)non-local network的全局上下文在不同位置幾乎是相同的棕硫,這表明學(xué)習(xí)到了無(wú)位置依賴的全局上下文√惶洌基于上述觀察哈扮,本文提出了GCNet,即能夠像NLNet一樣有效的對(duì)全局上下文建模蚓再,又能夠像SENet一樣輕量滑肉。
作者通過(guò)計(jì)算一個(gè)全局的attention map來(lái)簡(jiǎn)化non-local block,并且對(duì)所有位置共享這個(gè)全局attention map摘仅。忽略
和
表示為線性轉(zhuǎn)換矩陣靶庙。為了進(jìn)一步減少簡(jiǎn)化版non-local block的計(jì)算量,將
移到attention pooling的外面娃属,表示為:
不同于原始的non-local block六荒,簡(jiǎn)化版non-local block的第二項(xiàng)是不受位置依賴的护姆,所有位置共享這一項(xiàng)。因此掏击,作者直接將全局上下文建模為所有位置特征的加權(quán)平均值卵皂,然后聚集全局上下文特征到每個(gè)位置的特征上。
Global Context Modeling Framework
(a)全局attention pooling:采用1x1卷積 和softmax函數(shù)來(lái)獲取attention權(quán)值砚亭,然后執(zhí)行attention pooling來(lái)獲得全局上下文特征
(b)特征轉(zhuǎn)換:采用1x1卷積
(c)特征聚合:采用相加操作將全局上下文特征聚合到每個(gè)位置的特征上灯变。
GIoRe
Graph-Based Global Reasoning Network(GIoRe) , [code]
此文的目標(biāo)其實(shí)跟Non-local一樣,希望能得到全局的上下文信息钠惩,即reasoning globally柒凉。開頭的圖1比較炫酷.對(duì)特征從坐標(biāo)空間映射到交互空間,使用圖卷積網(wǎng)絡(luò)GCN進(jìn)一步推理來(lái)獲取global context篓跛,最后反映射回坐標(biāo)空間膝捞,可看成是 Non-local Block的優(yōu)化版本
從上圖可以看出文章的主要做的事情,就是希望推理不同區(qū)域間的上下文關(guān)系愧沟;而在Coordinate Space去做比較難處理且低效蔬咬,就映射到Interaction space,然后通過(guò)圖卷積網(wǎng)絡(luò)來(lái)進(jìn)行reasoning沐寺,剛好這也是圖網(wǎng)絡(luò)所擅長(zhǎng)的林艘。
如上圖所示,GloRe Unit主要做了幾件事情:
- 空間映射(中間黃色區(qū)域的 左邊是從坐標(biāo)空間映射到交互空間混坞;而 右邊是從交互空間映射回坐標(biāo)空間):空間映射目的是找到子空間可以 more friendly for global reasoning over disjoint and distant regions狐援,但又不想像 I3D-GCN[7] 一樣用額外的 detector 或者 label 來(lái)框出區(qū)域, 故采取類似 non-local 中的做法究孕,直接來(lái) weighted global pooling:假定輸入 X的維度為[C,H,W]啥酱,則最后子空間上的 node states V 可表示為
這里的 N 是超參,即交互空間中節(jié)點(diǎn)的個(gè)數(shù)(好像后面可視化環(huán)節(jié)設(shè) N=128 )厨诸,而C '為reduced channel number镶殷。
2.圖卷積推理:這里假定Nodes間都有交互,就形成了fully connected graph微酬,然后需要學(xué)習(xí)的是affine matrix Ag和圖網(wǎng)絡(luò)參數(shù)Wg绘趋,上圖中間黃色區(qū)域典型的圖卷積公式如下:
而文中把它巧妙地分解成兩個(gè)步驟,則先進(jìn)行節(jié)點(diǎn)間的message information propagation颗管,然后再更新節(jié)點(diǎn)內(nèi)部的states陷遮,如下圖所示,分別使用兩個(gè)1D卷積來(lái)實(shí)現(xiàn)垦江。
OcNet
未完待續(xù)......
Octave
Octave Convolution [4], 將特征分解成低空間分辨率和原始空間分辨率的branch拷呆,并進(jìn)行intra & inter branch間的信息交互;通過(guò)分解成低空間分辨率,可使卷積操作更加輕量級(jí)茬斧。
文中的初衷和story出發(fā)點(diǎn)是挺好的腰懂,就是借圖像中高頻(細(xì)節(jié),非結(jié)構(gòu)性)和低頻(邊緣形狀项秉,結(jié)構(gòu)性)信息一說(shuō)绣溜,來(lái)構(gòu)造卷積來(lái)分解成低頻和高頻信息,其中低頻用更低的空間分辨率來(lái)表示娄蔼,達(dá)到去除空間冗余的目的怖喻,從而節(jié)省模型參數(shù)及計(jì)算量
上面橙色branch表示High frequency,下面藍(lán)色branch表示Low frequency岁诉;綠色箭頭表示 intra-branch information update锚沸,紅色箭頭表示 inter-branch information exchange霹肝÷雎看到這里愈诚,恐怕有點(diǎn) SKNet 的小感覺了庐扫。
1.Selective Kernel Unit, SKNet [1],對(duì)多個(gè)不同感受野大小的branch進(jìn)行融合扒怖,融合中使用的是類SENet [5]結(jié)構(gòu)甜熔,最后使用類似門機(jī)制的softmax attention來(lái)分配branch的重要性仑撞。
2.Global Context (GC) block, GCNet [2], 將 Non-local Block [6]進(jìn)行簡(jiǎn)化(position間共享context feature只搁,channel間不共享)來(lái)高效提取global context音比,并融合SENet來(lái)進(jìn)行輕量地channel context計(jì)算。
3.Global Reasoning Unit, GloRe [3], 對(duì)特征從坐標(biāo)空間映射到交互空間氢惋,使用圖卷積網(wǎng)絡(luò)GCN進(jìn)一步推理來(lái)獲取global context洞翩,最后反映射回坐標(biāo)空間,可看成是 Non-local Block的優(yōu)化版本焰望。
- Octave Convolution [4], 將特征分解成低空間分辨率和原始空間分辨率的branch骚亿,并進(jìn)行intra & inter branch間的信息交互;通過(guò)分解成低空間分辨率柿估,可使卷積操作更加輕量級(jí)循未。
[參考鏈接]
https://mp.weixin.qq.com/
https://zhuanlan.zhihu.com/p/33345791
https://zhuanlan.zhihu.com/p/64988633
http://tongtianta.site/paper/10696