Xception: Deep Learning with Depthwise Separable Convolutions


核心貢獻:從Inception的思想:剝離時序卷積和空域卷積 得到啟發,提出了Xception(Extreme Inception),希望能徹底解耦二者。

其他貢獻:

  1. 本文提供了關於Inception的一種解釋。

  2. 討論了與現有深度可分離卷積的區別,並指出其最大影響因素是兩層卷積之間的非線性化。

  3. 在兩個圖像分類數據庫上的效果都超越了Inception V3,但參數量是一樣的。

故事

Inception結構和思想

Inception結構的演進:In-Network[11] => 2014年GooLeNet(V1)[20] => Inception V2[7] => Inception V3[21] => Inception-ResNet[19]。

首先我們應該知道:一般的卷積實際上是在同時完成 通道互相關 和 空域 互相關。

這是基礎。如果這一點不清楚,后面就沒法看啦。

Inception的核心思想,就是解耦這兩個操作:先做多個1×11×1卷積,得到多個通道互相關結果;然后再對這些結果進行空域互相關操作。

Inception

看圖應該就明白了。最好能提前熟悉1×11×1卷積的原理和應用。

補充:V3有一些變種的思想是類似的,但不一樣:它是希望解耦height-wise和width-wise的卷積,方法是級聯7×17×1和1×71×7的卷積。

更進一步,以及現有的深度可分離卷積

上圖可以等價為下圖3所示的兩步:

  1. 用一個1×1卷積,得到很多通道;

  2. 將這些通道分成幾份(幾百個通道分成3、4份),然后對每一份做正常的卷積(既包含空域,也有一定的通道互相關,但是少很多)。

既然如此,我們為什么不更進一步呢?我們讓空域卷積只在單個通道上操作,即完全不含任何通道互相關信息。如圖4:


改進

得一提的是,TensorFlow和Keras里已經內置了類似的結構,稱為深度可分離卷積。有兩點不同:

  1. 通道互相關卷積 和 空域卷積 的順序。現存結構中,空域卷積在前。

  2. 兩層卷積之間是否有ReLU非線性。現存結構中,兩層卷積中間沒有ReLU激活。注意,Inception內每一層卷積后一般都有。

作者將展示:第一點無關緊要,然而第二點非常重要。

Xception結構

Xception

  1. 36層卷積。Entry flow進行一次(8層卷積),Middle flow重復8次(24層卷積),最后是Exit flow(4層卷積)。由於是分類任務,最后跟了FC層和邏輯回歸。

  2. 一共有14個module包裹這36個卷積層。每個module都有頭尾短連接。

實驗

實驗和V3比較,並且保證參數數量基本一致。優化方法都沿襲V3的方法。

實驗結果:Xception更快、更好。

更好

更快

各模塊的短連接有必要:

短連接

在 depthwise 和 pointwise 卷積之間的非線性激活是不好的。取消非線性激活,可以讓收斂速度更快,效果更好:

不要非線性激活

這一點和Inception的報告是相反的。可能的原因是:Inception是將幾百個通道分成3-4份,每一份都很多。因此非線性對於這種深度學習是有幫助的。但是,Xception的空域卷積只對單通道操作,深度不足,非線性反而會讓信息丟失。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM