深度學習 Xception

2021-09-26 20:37:39 字數 3540 閱讀 3383

創新點網路結構

總結**位址

參考部落格

xception是google繼inception後提出的對inception v3的另一種改進,主要是採用depthwise separable convolution來替換原來inception v3中的卷積操作。

inception 最初提出的版本,其核心思想就是使用多尺寸卷積核去觀察輸入資料。

舉個例子,我們看某個景象由於遠近不同,同乙個物體的大小也會有所不同,那麼不同尺度的卷積核觀察的特徵就會有這樣的效果。於是就有了如下的網路結構圖:

於是我們的網路就變胖了,增加了網路的寬度,同時也提高了對於不同尺度的適應程度。

但是我們的網路變胖了的同時,計算量也變大了,所以我們就要想辦法減少參數量來減少計算量,於是在 inception v1 中的最終版本加上了 1x1 卷積核。

使用 1x1 卷積核對輸入的特徵圖進行降維處理,這樣就會極大地減少參數量,從而減少計算。

舉個例子,輸入資料的維度是 256 維,經過 1x1 卷積之後,我們輸出的維度是 64 維,參數量是原來的 14 。

這就是 pointwise convolution,俗稱叫做 1x1 卷積,簡寫為 pw,主要用於資料降維,減少參數量。

也有使用 pw 做公升維的,在 mobilenet v2 中就使用 pw 將 3 個特徵圖變成 6 個特徵圖,豐富輸入資料的特徵。

就算有了 pw ,由於 5x5 和 7x7 卷積核直接計算參數量還是非常大,訓練時間還是比較長,我們還要再優化。

人類的智慧型是無窮的,於是就想出了 使用多個小卷積核替代大卷積核的方法,這就是 inception v3,如圖所示:

使用兩個 3x3 卷積核來代替 5x5 卷積,效果上差不多,但引數量減少很多,達到了優化的目的。不僅參數量少,層數也多了,深度也變深了。

除了規整的的正方形,我們還有分解版本的 3x3 = 3x1 + 1x3,這個效果在深度較深的情況下比規整的卷積核更好。

我們假設輸入 256 維,輸出 512 維,計算一下參數量:

5x5 卷積核:256∗5∗5∗512=3276800

兩個 3x3 卷積核:256∗3∗3∗256+256∗3∗3∗512=589824+1179648=1769472

結果對比:1769472

3276800

\frac

327680

0176

9472

​=0.54。我們可以看到參數量對比,兩個 3x3 的卷積核的參數量是 5x5 一半,可以大大加快訓練速度。

我們發現就算用了上面的結構和方法,我們的參數量還是很大,於是乎我們結合上面的方法創造出了 bottleneck 的結構降低參數量。

bottleneck 三步走是先 pw 對資料進行降維,再進行常規卷積核的卷積,最後 pw 對資料進行公升維。我們舉個例子,方便我們了解:

根據上圖,我們來做個對比計算,假設輸入 feature map 的維度為 256 維,要求輸出維度也是 256 維。有以下兩種操作:

經過兩種方式的對比,我們可以很明顯的看到後者的參數量遠小於前者的。bottleneck 的核心思想還是利用多個小卷積核替代乙個大卷積核,利用 1x1 卷積核替代大的卷積核的一部分工作。

我們發現參數量還是很多,於是人們又想啊想,得出了 depthwise separable conv 。這個注意最早是來自這篇** design of efficient convolutional layers using single intra-channel convolution, topological subdivisioning and spatial 「bottleneck」 structure ,後面被 google 用在 mobilenet 和 xception 中發揚光大。

這個卷積的的大致意思是對每乙個深度圖分別進行卷積再融合,步驟是先 depthwise conv 再 pointwise conv,大大減少了參數量。下圖是 xception 模組的結構:

詳細介紹見【深度學習】mobilenets。

從 inception 到 xception 的發展一路看來,每一次創新都讓人嘖嘖稱讚,精巧的結構設計和理念思想,讓人佩服。

借鑑(非採用)depth-wise convolution 改進 inception v3。簡單理解就是說,卷積的時候要將通道的卷積與空間的卷積進行分離,這樣會比較好。(沒有理論證明,只有實驗證明,就當它是定理,接受就好了,現在大多數神經網路的**都這樣。

xception 與原版的 depth-wise convolution 有兩個不同之處:

xception 結構如上圖所示,共計 36 層分為 entry flow;middle flow;exit flow。。

entry flow 包含 8 個 conv;middle flow 包含 3*8 =24 個 conv;exit flow 包含 4 個 conv,所以 xception 共計 36 層。

幾種網路結構在imagenet上的對比:

xception 是基於 inception-v3,並結合了 depth-wise convolution,這樣做的好處是提高網路效率,以及在同等參數量的情況下,在大規模資料集上,效果要優於 inception-v3。這也提供了另外一種「輕量化」的思路:在硬體資源給定的情況下,盡可能的增加網路效率和效能,也可以理解為充分利用硬體資源。有些人會好奇為什麼引入depthwise separable convolution沒有大大降低網路的複雜度,因為depthwise separable convolution在mobilenet中主要就是為了降低網路的複雜度而設計的。原因是作者加寬了網路,使得引數數量和inception v3差不多,然後在這前提下比較效能。因此xception目的不在於模型壓縮,而是提高效能。

xception: deep learning with depthwise separable convolutions

縱覽輕量化卷積神經網路:squeezenet、mobilenet、shufflenet、xception

dl 入門:關於「inception」和「xception」的那些事

xception演算法詳解

Xception演算法詳解

演算法詳解 xception是google繼inception後提出的對inception v3的另一種改進,主要是採用depthwise separable convolution來替換原來inception v3中的卷積操作。要介紹xception的話,需要先從inception講起,incep...

輕量級網路 Xception

xception是google繼inception後提出的對inception v3的另一種改進,主要是採用depthwise separable convolution來替換原來inception v3中的卷積操作。xception在參數量上同inception v3基本等同,在imagenet上...

深度學習(一)深度學習學習資料

持續更新 一 學習清單 1 收集了各種最新最經典的文獻,神經網路的資源列表 2 計算機視覺學習清單 3 機器學習學習清單 二 訓練資料 人臉資料 1 香港中文大學訓練資料集 此資料庫包含了20w張人臉,每張標註了5個特徵點 以及幾十種屬性 是否微笑 膚色 髮色 性別等屬性 2 68個人臉特徵點 3 ...