原論文地址:arxiv.org/pdf/1602.0736

本文結構

  1. SqueezeNet的動機
  2. SqueezeNet的設計理念
  3. SqueezeNet的結構設計
  4. SqueezeNet的結構優化

一、SqueezeNet的動機

近年來,深度神經網路的規模越來龐大,從VGG的16層到ResNet的152層,雖然效果越來越好,但模型的參數動輒上百MB,是在有礙於其實際應用,而本文提出的SqueezeNet的發心就是幾十上百倍地縮小模型的同時,保持較高的精度,便於訓練、下載和在小型智能設備上應用。SqueezeNet與AlexNet的比較如下,簡而言之:吊打。但說實話,和AlexNet比較還是有點取巧的意思,雖然AlexNet的歷史地位無人能及,但畢竟開疆元老,模型臃腫不堪,後輩通過精心設計吊打也是應該的。

二、SqueezeNet的設計理念

SqueezeNet的設計理念主要有三:

  1. 儘可能用 1	imes 1 卷積替代 3	imes 3 卷積。
  2. 輸入給 3	imes 3 卷積層先進行降維,縮小輸入的通道數量,類似ResNet裏的BottleNeck設計理念。
  3. 延遲feature maps的下採樣,使得網路前面的層具有較大尺寸的feature maps,有利於提高精度。

三、SqueezeNet的結構設計

模型的結構可分別宏觀的和微觀的,宏觀的結構指模型的大體框架,不同類型層之間的連接順序和連接方式;微觀結構比如ResidualBlock、DenseBlock、Inception、ShuffleNet Unit等,指含有卷積層模塊的設計。

1、SqueezeNet的宏觀結構

SqueezeNet的宏觀結構和AlexNet步調一致,差別在於:

  1. 借鑒NIN的思想,取消全連接層,使用全局池化代替。
  2. 使用自行設計的fire模塊。

上圖最左的是原生SqueezeNet的結構,而中間和右邊都使用了ResNet裏的跳層連接,二者不同之處在於右邊的模型在跳層連接的兩個feature maps尺寸不同時,使用 1	imes 1 的卷積層使之相同。不過有意思的是,中間的模型效果比右邊的要好:

2、SqueezeNet的微觀結構fire模塊

fire模塊結構如下圖,即以下模塊的順序連接:

  • 1	imes 1 卷積層,filters數量為 s_{1	imes 1}
  • ReLU
  • 1	imes 1 卷積和 3	imes 3 卷積組成的卷積層,二者filters數量分別為 e_{1	imes 1}e_{3	imes 3} ,其中 3	imes 3 卷積的比例為 P_{3	imes 3}=e_{3	imes 3}/(e_{1	imes 1}+e_{3	imes 3}) in(0,1.0)
  • ReLU

一些細節:

(1)在Fire模塊中,expand層採用了混合卷積核1x1和3x3,其stride均為1,對於1x1卷積核,其輸出feature map與原始一樣大小,但是由於它要和3x3得到的feature map做concat,所以3x3卷積進行了padding=1的操作,實現的話就設置padding=」same」;

(2)Fire模塊中所有卷積層的激活函數採用ReLU;(3)Fire9層後採用了dropout,其中keep_prob=0.5;(4)SqueezeNet沒有全連接層,而是採用了全局的avgpool層,即pool size與輸入feature map大小一致;(5)訓練採用線性遞減的學習速率,初始學習速率為0.04。參考鏈接:小小將:CNN模型之SqueezeNet

三、SqueezeNet的結構優化

SqueezeNet宏觀結構優化在上文已介紹(加入跳層連接),宏觀結構定下來後,有以下超參數可以調整:

  • fire模塊內的:
    • s_{1	imes 1}e_{1	imes 1}e_{3	imes 3}
    • 3	imes 3 卷積的比例為 P_{3	imes 3} in(0,1.0)
    • Squeeze Ratio,即 SR=s_{1	imes 1}/(e_{1	imes 1}+e_{3	imes 3})
  • fire模塊之間的:
    • expand 層 feature maps 增長速率 incr
    • expand 層 feature maps 的增長頻率 freq ,即每隔 freq 個fire模塊後feature maps增加 incr。即:for Fire module i, the number of expand filters is: e_i = base_e + (incr_e ? floor(frac{i}{freq} ))
  • 各初始值為:
    • 第一個 expand 層 filters 數為 base_e = 128
    • 增長速度  incr_e = 128
    • expand 層中 3	imes 3 卷積層含量 P_{3	imes3} = 0.5
    • 增長頻率 freq = 2
    • Squeeze Ratio SR = 0.125

調整 Squeeze Ratio, SRin{0.125,0.25.0.5,0.75,1} 的結果如下圖左邊,其中 base_e = 128, incr_e = 128, P_{3	imes 3} = 0.5SR_{best}=0.75

調整 P_{3	imes 3}in{1,12.5,25,37.5,50,62.5,75,87.5,99} 的結果如上圖右邊,其中 base_e = incre = 128, freq = 2, SR =0.500P_{3	imes 3 best}=0.5

最後附上原生SqueezeNet的詳細參數:

PS:廣告時間啦~理工生如何提高人文素養軟實力?快關注微信公眾號:
歡迎掃碼關注~

推薦閱讀:

相關文章