Squeeze-and-Excitation Networks解讀

①前言

上個月看了一篇比較火的論文<Squeeze-and-Excitation Networks>,今天和大家一起分享一下。爲什麼上個月看的論文這個月才分享呢,因爲我比較喜歡魯迅的散文<朝花夕拾>。

 

②ILSVRC分類任務

這篇文章的中心思想SE網絡奠定了2017年的ILSVRC分類任務的submission。並且將Top5的誤差減小到2.251%,將2016年的冠軍成績提高了將近25%。

 

③SE block

SEblock結構圖如下圖所示:

 

 

SE block主要由三部分構成,Squeeze操作,Excitation操作,Fscale操作。

首先,Ftr把輸入的X映射爲特徵圖U,Ftr可以是一個最常見的卷積操作或者其他操作。

其次,Squeeze操作對U進行一個全局的池化操作,比如最大池化或者平均池化(WxH空間範圍內進行池化),產生一個embedding(1x1xC)。

再次,Excitation操作將上面產生的embedding進行一系列非線性映射(比如FC+RELU+FC),最後跟一個sigmoid得到每個通道的權重。

最後,將上面得到的每個通道的權重作用於U,對每個通道的U進行加權求和。至此,就完成了整個SE block的映射。

核心思想是不同通道的權重應該自適應分配,由網絡自己學習出來的,而不是像Inception net一樣留下過多人工干預的痕跡。

 

④Squeeze Operator

如下圖所示,在Resnet-50上測試了不同的全局池化方法對最終效果的影響。

 

從上圖可以看出,最大池化和平均池化同樣有效,但是平均池化比最大池化的效果稍微好一點點。雖然作者其實是採用最大池化的,本人認爲最大池化有時候會受到一些不良數據的干擾,而平均池化更能夠反映出統計上的規律。但是無論怎麼樣,從上圖可以間接看出SEblock是非常魯棒的,無論選擇哪種池化方法,最終效果應該都不會差距太大。

 

⑤Excitation Operator

如下圖所示,在Resnet-50上測試了不同的非線性對最終效果的影響。

 

 

從上圖可以看出,將非線性映射sigmoid替換成tanh在效果上變得稍微差了一點點,但是還不明顯。但是如果替換成Relu的話,效果就大打折扣,甚至都低於Resnet-50的baseline了。所以說在Excitation部分根據網絡的結構和對項目的理解,慎重選擇一種激勵函數非常重要。

 

⑥Different stages

如下圖所示,在Resnet-50上測試了不同的stages加入SE block對最終效果的影響。

 

 

從上圖可以看出,在不同的stages上加入SE block都能夠帶來效果上收益。並且在不同的stages上的收益還可以形成互補,不衝突和不相互抑制。所以我們可以在不同的stages上加入SE block然後累積得到效果收益。

 

⑦Inregration strategy

如下圖所示,在Resnet-50上我們可以在不同的位置插入SE block。

 

 

目前主流的幾種方法如上圖所示。SE-PRE是在residual unit之前插入,如上圖c所示。SE-POST是在residual summation之後插入,如上圖d所示。SE-Identity是在identity connection這個分支上插入,如上圖e所示。

不同的插入位置造成的效果收益也不盡相同。如下表所示:

 

從表中可以看出,SE-PRE, SE-Identity , SE-Standard都表現得不錯,而SE-POST在效果上表現得有點不盡如人意了。

總結:SE_BLOCK在不同位置插入resnet網絡中具有比較強得魯棒性。但是也不是隨心所欲想在哪裏插入都可以的。比如SE-POST造成效果下降的情況說明必須打入敵軍內部,人家都summation完了,residual unit都結束了你才插入就沒什麼意義了。

下表是SE_BLOCK的另外一種變種的情況:

 

這種變種屬於直搗黃龍,直接把SE_BLOCK和residual unit 融合成爲一部分,直接放在了residual unit 內部,具體是放在了3x3 conv layer的後面。

小結:從上表可以看出,這樣放的話由於3x3 conv layer 有更少的通道數,所以造成了SE_BLOCK參數的減少。我們用更少的參數得到了相對靠譜的分類準確率,這在實際工程中是對準確率和速度的一種很好的trade off。

 

⑧Effect of Squeeze

如下表所示,在Resnet-50上測試了Squeeze和NoSqueeze對最終效果的影響。

 

 

我們首先把pooling層移除。其次用一個1x1的卷積層替換原來的FC層。我們把替換之後的結構叫做NoSqueeze。NoSqueeze保留了原本特徵圖的空間結構。從表中我們可以看出全局信息對於效果提升有着重要影響。相比於Resnet-50,加了SE block的網絡只有少量的計算量增加但是帶來了有效的效果提升,所以這是值得的。

 

⑨Role of Excitation

爲了提供excitation功能的一個清晰認知圖像,作者研究了SE_Resnet50的數據分佈。這個數據分佈主要從3個角度來考察,一是不同的類經過Excitation之後的數據分佈,二是在不同的網絡深度下數據分佈的差異,三是同一個類中不同圖片的數據分佈變化。

首先我們來看看不同的類的數據分佈情況。

如下圖所示,在Resnet-50上測試了不同的class在不同的網絡深度下由於SE block的影響產生的不同數據分佈情況。

 

 

從上圖可以看出,不同的class的數據分佈在淺層網絡中的數據分佈非常相似,比如SE_2_3.這說明了在網絡的淺層部分各個類之間共享了某種特徵通道的重要性,還沒有產生分化。但是在網絡更深處,不同的class之間的數據分佈表現出了class_specific(類別特異性),比如SE_4_6和SE_5-1。

其次,我們再看看在網絡最後的stage中SE block的一些反常表現。

如下圖所示,SE_5-2中各個類別最後的激活值都幾乎接近於同一個value,曲線都幾乎重合了。SE_5-3後面緊接着一個pooling層和一個分類層。

 

在SE_5-2中曲線幾乎重合,在SE_5-3中各個類雖然不重合,但是變化趨勢幾乎一模一樣,唯一的區別無非就是scale尺度縮放上的一些區別罷了。從這個現象我們猜想,在網絡的最後stage中SE block對於網絡的重新校準已經沒有早期stage的SE block那麼重要了。在實際工程中,我們可以移除last stage的SE網絡來減少計算量同時又幾乎不會帶來效果精度上的下降。

最後我們再看看同一個類中不同圖片的數據分佈變化。如下圖所示,作者以2個class爲例子,展示了在一個類中的平均值和標準差隨着不同的channel和不同的網絡depth的變化。

 

 

從上圖中我們可以看出類間和類內中數據分佈都是隨着網絡depth不斷變化的。隨着網絡變深,方差一直變大,也就是類內和類間都產生了分化性,這是網絡鑑別能力提高的一種表現。特別在SE-5-1中方差已經變得可觀。由此我們可以大膽猜想,類內實例差異性的不斷提高滿足了不斷增長的類間差異性的需求。換句話說,類內的分化能力的提高最終也促進了類間分化能力的提高。

這篇論文還講了很多細節,但是本文到此爲止,否則作者的網絡是收斂了,我怕我這篇文章無法收斂了。不說了,我去加班了!失陪了先!

公衆號:facefinetune

發現更多精彩

關注公衆號

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章