帶你讀論文系列之計算機視覺–SENet
閑談
總有那麼瞬間思念遠方的故人。八月十五中秋節,讓我們放下繁忙工作,回家與老人團圓舉杯共餐。這是我第一次沒有在家過中秋,感覺也還行。現在節日沒有什麼節日氣氛,最重要的家人團聚。各位小可愛們,中秋佳節,願你快快樂樂,開開心心;健健康康,輕輕松松;團團圓圓,恩恩愛愛;和和美美,紅紅火火!❤️
前言
論文:Squeeze-and-Excitation Networks
代碼
一個可嫁接/整合的Block 😇
Momenta在ImageNet2017挑戰賽中奪冠的網絡架構SENet。本文作者為Momenta進階研發工程師胡傑。
Momenta成立于2016年,是自動駕駛公司。其核心技術是基于深度學習的環境感覺、高精度地圖、駕駛決策算法。産品包括不同級别的自動駕駛方案,以及衍生出的大資料服務。Momenta專注于“打造自動駕駛大腦”,擁有世界專業的深度學習專家,如圖像識别領域架構Faster R-CNN和ResNet的作者, ImageNet 2015、ImageNet 2017、MS COCO Challenge 2015等多項比賽。團隊成員主要來源于清華大學、麻省理工學院、微軟亞洲研究院等高校及研究機構,以及百度、阿裡、騰訊、華為、商湯等知名高科技公司,擁有深厚的技術積累、極強的技術原創力和豐富的行業經驗。
SENet獲得了ImageNet2017大賽分類任務的冠軍,這也是最後一屆ImageNet比賽,論文同時獲得了CVPR2018的oral。而且,SENet思路簡單,實作友善,計算量小,子產品化涉及,可以無縫嵌入主流的網絡結構中,實踐不斷證明其可以使得網絡獲得更好的任務效果。
卷積核作為卷積神經網絡的核心,通常被看做是在局部感受野上,将空間上(spatial)的資訊和特征次元上(channel-wise)的資訊進行聚合的資訊聚合體。卷積神經網絡由一系列卷積層、非線性層和下采樣層構成,這樣它們能夠從全局感受野上去捕獲圖像的特征來進行圖像的描述。
摘要
- 卷積操作是CNN核心其可融合空間和通道的特征;
- 已經有人研究增強空間特征的提取;
- 本文針對通道特征提出SEblock,其可自适應的校正通道特征;
- SEblock可堆疊成SENet,并在多個資料集上獲得較好的效果;
- SENet僅增加少量參數,就大幅提升精度;
- 獲得ILSVRC冠軍;
對ImageNet資料集進行了廣泛評估。SENets不局限于某個特定的資料集或任務。通過利用SENets,我們在ILSVRC2017分類競賽中排名第一。我們的最佳模型集合在測試集上實作了2.251%的最高5級錯誤1。與前一年的冠軍作品相比,這代表了大約25%的相對改進(前五名的誤差為2.991%)。
從通道次元入手,設計SEBlock。提出一種機制可對特征進行校正,校正後的特征可保留有價值的特征,剔除沒價值的特征,即注意力機制。
SE建構塊的結構如上圖所示。特征首先通過Squeeze操作,它通過在其空間次元(H×W)上聚合特征圖來産生通道描述符。該描述符的功能是生成通道特征響應的全局分布的嵌入,允許來自網絡的全局感受野的資訊被其所有層使用。聚合之後是激勵操作,它采用簡單的self-gating mechanism的形式,将嵌入作為輸入并産生每通道調制權重的集合。這些權重應用于特征映射U以生成SE塊的輸出,該輸出可以直接饋入網絡的後續層。可以通過簡單地堆疊SE塊的集合來建構SE網絡(SENet)。此外,這些SE塊還可以用作網絡架構中一定深度範圍内原始塊。
論文詳情
思路:讓我們的神經網絡使用全局資訊來增強有用的資訊,同時抑制無用的資訊。
假設:
其中,
令K = [K1,K2,…KC],其中每個元素Ki為filter kernel
于是:
其中*代表了conv運算(忽略bias)
Squeeze階段:
Excitation階段:
VGGNets和Inception模型表明,增加網絡的深度可以顯着提高其能夠學習的表示品質。通過調節每層輸入的分布,批量歸一化(BN)為深度網絡中的學習過程增加了穩定性,并産生了更平滑的優化表面。在這些工作的基礎上,ResNets證明了用shortcut connection來學習更深入、更強大的網絡是可能的。Highway Networks引入了一種self-gating machine來調節資訊流捷徑連接配接。在這些工作之後,網絡層之間的連接配接有了進一步的重構,其中顯示了對深度網絡的學習和表示特性的有希望的改進。
- 分組卷積:ResNeXt
- 多分支網絡GoogLeNet系列
- 1*1卷積的應用:Xception 等
以往的研究通道之間關系時,采用的是局部資訊。本論文提出的方法采用全局方法。
設計和開發新的CNN 架構是一項困難的工程任務,通常需要選擇許多新的超參數和層配置。相比之下,SE塊的結構很簡單,可以直接用于現有的最先進的架構中,通過用SE對應的元件替換,可以有效提高性能。SE子產品在計算上也是輕量級的,隻在模型複雜性和計算負擔上有輕微增加。
SENet優勢:
- SE block設計簡單,即插即用;
- SE block參數少
Google團隊提出MnasNet(MnasNet:Platform-AwareNeuralArchitectureSearchforMobile
)使用強化學習的思路,提出一種資源限制的終端CNN模型的自動神經結構搜尋方法。MnasNet中用了SEblock。
- 注意力機制可了解為将最有意義的部分給予更多“關注”;
- 注意力機制已在序列學習圖像了解、定位、圖像描述、唇語識别任務中廣泛應用;
- 本論文的block 則是針對通道次元進行注意力機制。
首先是 Squeeze 操作,我們順着空間次元來進行特征壓縮,将每個二維的特征通道變成一個實數,這個實數某種程度上具有全局的感受野,并且輸出的次元和輸入的特征通道數相比對。它表征着在特征通道上響應的全局分布,而且使得靠近輸入的層也可以獲得全局的感受野,這一點在很多任務中都是非常有用的。
其次是 Excitation 操作,它是一個類似于循環神經網絡中門的機制。通過參數 w 來為每個特征通道生成權重,其中參數 w 被學習用來顯式地模組化特征通道間的相關性。
最後是一個 Reweight 的操作,我們将 Excitation 的輸出的權重看做是經過特征選擇後的每個特征通道的重要性,然後通過乘法逐通道權重到先前的特征上,完成在通道次元上的對原始特征的重标定。
SE網絡可以通過簡單地堆疊SE構件塊的集合來生成。SE塊也可以用作體系結構中任何深度的原始塊的直接替換。但是,雖然構模組化塊的模闆是通用的,它在不同深度處的角色适應網絡的需求。在早期層中,它學會以類不可知的方式激發資訊特性,支援共享的底層表示的品質。在後面的層次中,SE塊變得越來越專業化,并以 highly class-specific的方式響應不同的輸入。是以,SE塊進行特征重新校準的好處可以通過整個網絡進行累加。SE塊的設計很簡單,可以直接與現有最先進的體系結構一起使用,這些體系結構的子產品可以通過直接替換SE子產品來加強。
用公式描述conv2d過程,并且将卷積核按通道次元來了解。
conv2d操作将空間資訊與通道資訊混合到了一起。本文目的是提高通道次元上資訊的敏感度,具體操作為Squeeze和excitation。
提出問題:U沒有很好的利用局部感受野之外的上下文資訊。
解決問題:利用全局池化,将空間資訊壓縮為通道描述符,即資料變為通道次元的形式。該操作可看為圖像的局部描述算子,這樣的操作在特征工程常見。
- 為了擷取通道之間的資訊,加入Excitation;
-
為實作該目标,需要遵循兩個準則:
(1)該操作要能學習通道之間的非線性關系;
(2)確定多個通道能夠被“強調”;
- 采用sigmoid 機制來實作;
上圖為激活函數挑選的實驗。結論:sigmoid最好。
與其他架構進行整合。論文中把ResNet和Inception進行整合。如下兩張圖所示。
原始Inception子產品(左)和SE-Inception子產品(右)的架構。
原始Residual子產品(左)和SE-ResNet子產品(右)的模式。
作為這種輕微的額外計算負擔的交換,SE-ResNet-50的準确性超過了ResNet-50的準确性,并且實際上接近了需要~7.58GFLOPs的更深的ResNet-101網絡的準确性。
FC層的權重參數引入的總數由下式給出:
其中r表示縮減率,S表示階段數(階段是指在公共空間次元的特征圖上操作的塊的集合),Cs表示輸出通道的次元,Ns表示階段重複塊的數量(當偏置項用于FC層時,引入的參數和計算成本通常可以忽略不計)。SE-ResNet-50引入了超過250萬個額外參數。
- 一個block是2C^2/r ;
- 一個stage有N個block ;
- 一個模型有S個stage 是以得到以上公式;
SEblock插入CNN中是很靈活的,是以有多個方式。
三種變體:(1)SE-PRE塊,其中SEblock在殘差單元之前移動;(2)SE-POST塊,其中SE單元在與恒等分支求和後移動(在ReLU之後)和(3)SE-Identity 塊,其中SE單元放置在與殘差單元平行的恒等連接配接上。這些變體如圖5 所示,每個變體的性能在表14中報告。我們觀察到SE-PRE、SE-Identity和提議的SE塊的性能相似。
SE-ResNet完整架構✊
(左)ResNet-50。(中)SE-ResNet-50。(右)帶有32×4d模闆的SE-ResNeXt-50。括号内列出了殘差積木的特定參數設定的形狀和操作,而在外面顯示了一個階段中堆疊的積木數量。Byfcin後面的内括号表示一個SE子產品中兩個全連接配接層的輸出次元。
實驗
讨論點
- 橫向對比 數值越小越好。
- 調整Reduction比率
Reduction比率空值這Dense layer 1 的neuron的數量
論文推薦r = 16
- GAP v.s. GMP 結果顯示用Avg Pooling更好
- Excitation 階段中不同的Activation函數對比
- SE Block的不同位置 結果顯示結果都差不多。
- SE Block在ResNet的不同位置
把SE Block都安插進去效果最好!在深層安插比淺層效果好一點。
- Squeeze的有無帶來的影響
肯定是有Squeeze效果好了。
- 對Excitation的探索
早期的Layer更加general,後期的Layer更Specific,5-2是一個拐點。
移除後期的layer可以減少param,同時模型不會受太大的影響。
總結
SENet對卷積層通道數進行權值評分,可以很好與其他網絡(VGG, ResNet)結合。
相比于增加模型寬度(WRN中的width, ResNeXt中的cardinality),深度(depth),SE Block權重通道值,增加的參數少,增加的計算量小,增強效果好
最後說一句,中秋快樂!