Xception(Deep Learning with Depth-wise Separable convolutions)——google Inception-V3
Xception 並不是真正意義上的輕量化模型,只是其借鑒 depth-wise convolution,而 depth-wise convolution 又是上述幾個輕量化模型的關鍵點,所以在此一並介紹,其思想非常值得借鑒。
創新點:
- 借鑒depth-wise convolution 改進 Inception V3
Inception的假設是,卷積的時候要將通道的卷積和空間的卷積進行分離,這樣比較好。
Inception V3 ——> Xception
下圖 1 是 Inception module,圖 2 是作者簡化了的 inception module(就是只保留 1*1 的那條「路」,如果帶着 avg pool,后面怎么進一步假設嘛~)
假設出一個簡化版 inception module 之后,再進一步假設,把第一部分的 3 個 11 卷積核統一起來,變成一個 11 的,后面的 3 個 33 的分別「負責」一部分通道,如圖 3 所示; 最后提出「extreme」version of an Inception,module Xception 登場,,先用 11 卷積核對各通道之間(cross-channel)進行卷積,如圖 4 所示,
作者說了,這種卷積方式和 depth-wise convolution 幾乎一樣。
Xception 是借鑒 Rigid-Motion Scatteringfor Image Classification 的 Depth-wise convolution,是因為 Xception 與原版的 Depth-wise convolution 有兩個不同之處
- 第一個:原版 Depth-wise convolution,先逐通道卷積,再 11 卷積; 而 Xception 是反過來,先 11 卷積,再逐通道卷積;
- 第二個:原版 Depth-wise convolution 的兩個卷積之間是不帶激活函數的,而 Xception 在經過 1*1 卷積之后會帶上一個 Relu 的非線性激活函數;
Xception 結構如上圖所示,共計 36 層分為 Entry flow;Middle flow;Exit flow。。
Entry flow 包含 8 個 conv;Middle flow 包含 3*8 =24 個 conv;Exit flow 包含 4 個 conv,所以 Xception 共計 36 層。
Xception 小結:
Xception 是基於 Inception-V3,並結合了 depth-wise convolution,這樣做的好處是提高網絡效率,以及在同等參數量的情況下,在大規模數據集上,效果要優於 Inception-V3。這也提供了另外一種「輕量化」的思路:在硬件資源給定的情況下,盡可能的增加網絡效率和性能,也可以理解為充分利用硬件資源。
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">