Pytorch實作系列 — SqueezeNet & SqueezeNext

mz bai
5 min readAug 18, 2024

--

Iandola et al. 在 (2016, DeepScale(2019經特斯拉收購, Wiki)、柏克萊、史丹佛)提出SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size ,特色是利用維度縮放達到計算量減少的目的。

網路概念

SqueezeNet的fire module有著inception的多尺度濾波器融合也有著先壓縮再擴大的概念,兩者在圖像分類都是常見的技巧。基於減輕3x3濾波器和延遲下採樣特徵圖兩個重點設計。

SqueezeNeXt的bottleneck結構則採用separable convolution,類似於coordinate attention的設計,將3x3的方塊,拆成3x1和1x3的low rank表示。前後仍以1x1做特徵尺度縮放。

左邊是Squeezenet的fire module,右邊是SqueezeNext的bottleneck

網路結構

SqueezeNet提供三種結構嘗試,plain, simple bypass(only identity), complex bypass(with channel downsample), 其中表現最好的是simple bypass。並採用Network in network的GAP分類頭。

SqueezeNet structure (simple bypass)

SqueezeNeXt 有多種參數組合,大致服從這樣的命名pattern <scale_factor> SqueezeNext-<number of module>v<version number>,如1.0 SqueezeNeXt-23v5。

scale_factor 在論文中有1.0, 1.5, 2.0, number_of_module 有23, 34, 44,不過除了23外的結構都無紀錄。

v1是下圖版本,v2將首個大卷積核從7x7改成5x5,減少運算,v3將v2的第一個stage的區塊數量移到第二個stage,v4, v5以此類推,因為在硬體模擬實驗觀察到前面區塊的加速器效率差,作者認為是通道較小,但特徵圖較大導致。

1.0 SqueezeNeXt-23 structure

資料集

GTSRB,一個有兩萬六千多張照片的德國交通號誌辨識資料集,共43種標記。

評估

SqueezeNet 學習能力有限,使用較長epoch後接近其他當代模型。在當時背景算不錯,畢竟目的是為了與AlexNet相比輕量且準確率相當,放到今日就效果有限。

SqueezeNet 1.1 (epoch 30)測試準確率61.8%,模型大小為2.86MB

1.0 SqueezeNeXt-23v4 (epoch 30)測試準確率70%,模型大小為2.64MB

SqueezeNet 1.1 confusion matrix
1.0 SqueezeNet-23v4 confusion matrix

實作

參考

--

--

mz bai

Present data engineer, former data analyst, Kaggle player, loves data modeling.