Pytorch實作系列 — MobileNet v1 & v2

mz bai
May 1, 2024

--

MobileNet是由Howard et al.(2017, Google)在 MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 提出,是以GoogleNet、Inception為基礎,提出一種適用於運行在手機等行動裝置的高效率CNN,而後又出了v3、v4等版本,成為行動裝置高效率CNN的代表之一。

資料集

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

GTSRB sample

網路概念

MobileNet v1 提出Depthwise separable convolution,這種卷積結構將卷積層的工作拆解成空間濾波和特徵空間的生成,因此大幅降低參數量和計算,與其他行動裝置高效率CNN如SqueezeNet、ShuffleNet相比也是效果可匹敵的。

後年2018, Sandler et al. 在 MobileNetV2: Inverted Residuals and Linear Bottlenecks 提出論文標題中的 Linear bottleneck 和 Inverted residual block,用於解決資訊傳遞與壓縮的問題。

作者認為當資訊經過ReLU或其他非線性轉換後會丟失訊息,所以採用低維度壓縮降低傳遞成本,以及高維度表達經非線性轉換後也不會丟失太多訊息保留資訊的方式。

In lower dimensional space the spiral shape can’t be preserved.

Inverted residual block則基於這個假設進一步表達當使用Linear bottleneck這樣ReLU轉換後仍有非零值的線性轉換可以保留住訊息,因此skip connection可更有效率避免訊息傳遞損失。

網路結構

Depthwise separable convolution is composed of two convolution layers

Depthwise separable convolution將卷積層拆解成空間濾波和特徵空間的生成,前者用 3x3 的卷積濾波搭配group數量與輸入通道數相同且輸入通道數和輸出通道數相等的卷積實作,相當於每個通道都是1x1的權重矩陣配合著3x3的空間,也就是說每個通道(例如RGB圖的各個顏色)都只被進行過空間濾波,沒有其他線性轉換,而後者以 1x1的卷積濾波實作。

Linear bottleneck由低維的1x1卷積和高維的depthwise separable convolution組成,前者升維後做非線性轉換,降低資訊損失,在高維處理完特徵後又轉回低維傳遞。

在二代將激活函數都改為ReLU6,ReLU6就像是ReLU在[3, 3]~[-3, -3]的對稱延伸。

評估

v1準確率是83.5%,模型大小為12.54MB

v2準確率是89.2%,模型大小為8.95MB

MobileNet v1 confusion matrix
MobileNet v2 confusion matrix

實作

參考

--

--

mz bai

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