牆裂推薦:那些Network能work的本質到底是啥?html
2017年的文章,和後面的幾篇文章一對比思路顯得比較老套:大量的1*1的卷積和少許的3*3卷積搭配(小卷積核),同時儘可能的減小通道數目,達到控制參數量的目的。SqueezeNet的核心在於Fire module,Fire module 由兩層構成,分別是squeeze層+expand層,以下圖所示,squeeze層是一個1*1卷積核的卷積層,expand層是1*1 和3*3卷積核的卷積層,expand層中,把1*1 和3*3 獲得的feature map 進行concat。整個網絡就是將多個Fire module 堆疊而成。其論文中對比實驗目標是AlexNet,可見這個工做的確是老了……
具體操做狀況以下圖所示(略有誤,Expand應該有一通路是3*3核心的):架構
Fire module 輸入的 feature map 爲 H*W*M 的,輸出的 feature map 爲 H*M*(e1+e3),能夠看到 feature map 的分辨率是不變的,變的僅是維數,也就是通道數,這一點和 VGG 的思想一致。函數
『高性能模型』Roofline Model與深度學習模型的性能分析post
Xception 基於Inception_v3,X表示Extreme,表示Xception 作了一個增強的假設:卷積能夠解耦爲空間映射和通道映射。學習
下圖表示標準的v3子模塊:spa
下圖表示簡化結果:.net
假設出一個簡化版 inception module 以後,再進一步3 個 1*1 卷積核統一塊兒來,變成一個 1*1 的,後面的3個3*3的分別負責一部分通道
htm
和標準的深度可分離卷積略有不一樣的是:
原版Depthwise Conv,先逐通道卷積,再1*1卷積; 而Xception是反過來,先1*1卷積,再逐通道卷積
原版Depthwise Conv的兩個卷積之間是不帶激活函數的,而Xception在通過1*1卷積以後會帶上一個Relu的非線性激活函數
2017年的成果,思想來源於同屬Google的Xception,引入了深度可分離卷積下降計算量,本網絡比較傳統,就是一層dw一層pw的疊加(3x3 Depthwise Conv+BN+ReLU 和 1x1 Pointwise Conv+BN+ReLU),結構以下:
2017年的文章,和MobileNet同樣使用了pw+dw,可是這裏把dw視爲極限的羣卷積:組數等度輸入特徵數目,此時的計算瓶頸在於pw,做者提出:一樣使用羣卷積替代pw,爲了解決特徵間通訊,做者提出channels shuffle的思路,即在羣卷積版pw前將特徵從新排列組合。另外ShufflwNet也是對ResNet進行修改的產物。
2018年的文章,針對架構直白的MobileNet_v1,這一版本着重討論了relu在feature 數目少時的數據坍縮,並提出使用ResNet來解決的方案,做者實際對ResBlock的改造也不復雜:
2018年的文章,做者提出了一個新的衡量效率的量:內存訪問消耗時間(memory access cost),並根據這個量提出了4點發現,修改v1版本網絡,因爲連接博客已經給了很詳細的說明,這裏再也不贅述。