SqueezeNet/SqueezeNext簡述 | 輕量級網絡


SqueezeNet系列是比較早期且經典的輕量級網絡,SqueezeNet使用Fire模塊進行參數壓縮,而SqueezeNext則在此基礎上加入分離卷積進行改進。雖然SqueezeNet系列不如MobieNet使用廣泛,但其架構思想和實驗結論還是可以值得借鑒的。

來源:曉飛的算法工程筆記 公眾號

SqueezeNet


論文: SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size

Introduction

  在深度學習嶄露頭角時候,很多研究都關注如何提高網絡的准確率,而SqueezeNet則是早期開始關注輕量化網絡的研究之一。論文的初衷是通過優化網絡的結構,在與當前流行網絡的准確率相差不大的情況下,大幅減少模型的參數。

SqueezeNet: Preserving Accuracy with Few Parameters

  • Architectural Design Strategies

  論文的輕量級網絡設計主要包含以下策略:

  1. 替換$3\times 3$卷積為$1\times 1$卷積,由於$1\times 1$卷積比$3\times 3$卷積有9倍的參數減少。
  2. 減少$3\times 3$卷積的輸入維度,$3\times 3$卷積的總參數量為(number of input channels)(number of filters)(3*3),使用squeeze layers降低輸入維度,能夠降低整體的計算量。
  3. 下采樣操作盡量安排在網絡較后的階段,這樣卷積層能夠有較大的特征圖,保存更多的信息,從而提高准確率。

  策略1和策略2主要為了減少網絡的參數但保持准確率,策略3則是為了在有限的參數下最大化准確率。

  • The Fire Module

  SqueezeNet的核心模塊為Fire模塊,結構如圖1所示,輸入層先通過squeeze卷積層($1\times 1$卷積)進行維度壓縮,然后通過expand卷積層($1\times 1$卷積和$3\times 3$卷積混合)進行維度擴展。Fire模塊包含3個參數,分別為squeeze層的$1\times 1$卷積核數$s_{1x1}$、expand層的$1\times 1$卷積核數$e_{1x1}$和expand層的$3\times 3$卷積核數$e_{3x3}$,一般$s_{1x1}<(e_{1x1}+e_{3x3})$

  • The SqueezeNet Architecture

  SqueezeNet的結構如表1所示,在conv1、fire4、fire8和conv10后添加池化層進行池化操作,網絡中逐步提高輸出維度。每個squeeze層和expand層的輸出都通過ReLU激活,而fire9模塊后面會接50%的Dropout。

Evaluation of SqueezeNet

  與AlexNet相比,相同准確率下,SqueezeNet僅需要1/50的參數量,量化后,最多可以縮小到1/510的參數量。

CNN Microarchitecture Design Space Exploration

  論文對Fire模塊的設定進行了探索實驗,主要對比squeeze層的壓縮比例以及expand層中的$3\times 3$卷積占比。

CNN Macroarchitecture Design Space Exploration

  論文對網絡的微架構進行了探索實驗,主要是研究短路連接對網絡的影響,對比的網絡結構如圖2所示。

Conclusion

  SqueezeNet作為早期的輕量級網絡研究工作,雖然准確率對比的是AlexNet,但其網絡壓縮比是相當可觀的,Fire模塊的設計也十分新穎。

SqueezeNext


論文: SqueezeNext: Hardware-Aware Neural Network Design

Introduction

  SqueezeNext是SqueezeNet實戰版升級,直接和MobileNet對比性能。SqueezeNext全部使用標准卷積,分析實際推理速度,優化的手段集中在網絡整體結構的優化。

SqueezeNext Design

  SqueezeNext的設計沿用殘差結構,沒有使用當時流行的深度卷積,而是直接使用了分離卷積,設計主要基於以下策略:

  • Low Rank Filters
      低秩分解的核心思想就是將大矩陣分解成多個小矩陣,這里使用CP分解(Canonical Polyadic Decomposition),將$K\times K$卷積分解成$K\times 1$和$1\times K$的分離卷積,參數量能從$K^2$降為$2K$。

  • Bottleneck Module
      參數量與輸入輸出維度有關,雖然可以使用深度卷積來減少計算量,但是深度卷積在終端系統的計算並不高效。因此采用SqueezeNet的squeeze層進行輸入維度的壓縮,每個block的開頭使用連續兩個squeeze層,每層降低1/2維度。

  • Fully Connected Layers
      在AlexNet中,全連接層的參數占總模型的96%,SqueezeNext使用bottleneck層來降低全連接層的輸入維度,從而降低網絡參數量。

  基礎的1.0-SqNxt-23結構如圖3所示,中間的block均為SqueezeNext block,第一個block為正常的卷積,最后兩個block分別為bottleneck模塊以及全連接層。

Result

  論文對比了不同網絡以及不同版本的SqueezeNext,包括不同的網絡長度,以及加入不同的結構。表中的1.0代表基礎的層維度設置,G代表卷積的group size設置為2,后面的數字為總層數,IDA代表使用Iterative Deep Aggregation,融合多層進行輸出。

  另外論文也對比了更寬的網絡的性能,對維度進行了倍數放大。

  v5的結構如圖9,在模擬硬件性能實驗結果中發現,維度越低,計算性能也越低效,於是將更多的層操作集中在維度較高的block。

Conclusion

  SqueezeNext在SqueezeNet的壓縮思想上,結合分離卷積進行參數壓縮改進,文中的模擬硬件推理性能的實驗做的很精彩,可以看到作者如何一步一步地改進網絡的整體結構,有興趣的可以去看看原文。

CONCLUSION


  SqueezeNet系列是比較早期且經典的輕量級網絡,SqueezeNet使用Fire模塊進行參數壓縮,而SqueezeNext則在此基礎上加入分離卷積進行改進。雖然SqueezeNet系列不如MobieNet使用廣泛,但其架構思想和實驗結論還是可以值得借鑒的。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

work-life balance.


免責聲明!

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



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