MobileNetV1 論文閱讀

李謦伊
謦伊的閱讀筆記
11 min readDec 17, 2020

自從 AlexNet 在 ImageNet 大賽中贏得冠軍,CNN 就在電腦視覺領域中越趨流行,而為了提高準確率,深度學習的模型架構就越來越複雜,以至於計算量大之外,速度方面也有所限制,導致這樣的模型很難應用在計算能力低的設備上

針對這個問題目前由兩方面來進行:

  • 將模型輕量化,例如: 模型剪枝 (Model pruning)、模型量化 (Quantization)、權重共享 (Weight sharing) 、知識蒸餾 (Knowledge Distillation) 等
  • 使用輕量化的模型進行訓練

本篇要介紹的是MobileNetV1 ,是一種輕量級的模型,由 2017 年提出,論文連接: https://arxiv.org/pdf/1704.04861.pdf

MobileNet v1 使用 Depthwise Separable Convolution 建構神經網路以及引入兩個超參數 Width Mutiplier、Resolution Multiplier 讓開發人員可以依據自己的應用與資源選擇合適的模型

Depthwise Separable Convolution

Depthwise Separable Convolution 包含了深度卷積 (depthwise convolution) 和逐點卷積 (pointwise convolution),與一般的卷積操作不同,核心思想就是把卷積過程的計算量減少

🔹 Depthwise Convolution

一般卷積的 filter 是用在所有的輸入通道上 (input channels),而 depthwise convolution 則對每個輸入通道採用不同的 filter,也就是說一個 filter 對應一個輸入通道,因此 depthwise convolution 可以說是 depth 級的操作

🔹 Pointwise Convolution

每個輸入通道做完 depthwise convolution 後,再採用 pointwise convolution 將輸出融合,其實就是使用 1x1 的卷積核做計算

如此的操作,輸出和一般的卷積層差不多,但是大大的降低了計算量及模型參數量,下圖是一般的卷積核與 Depthwise Separable Convolutional filter的比較圖

接下來比較一下兩種卷積的計算量差異

假設輸入的 feature map 尺寸為 DF x DF x M,輸出的 feature map 尺寸為 DF x DF x N,而filter 大小為 DK x DK x M x N

那一般的卷基層計算量為 DK x DK x M x N x DF x DF

采用 Depthwise Separable Convolution 的方式計算量:

先使用 M 個 DK x DK x 1 的 Depthwise Convolutional Filter 分別對每個輸入通道進行卷積得到 DF x DF x M 尺寸的輸出,這步的計算量為 DK x DK x M x DF x DF;再使用 N 個 1 x 1 x M 的filter 進行卷積得到 DF x DF x N 尺寸的輸出,這步的計算量為 M x N x DF x DF;所以總共的計算量會是 DK x DK x M x DF x DF + M x N x DF x DF

由下圖可以看到跟一般的卷積計算量相比,采用 Depthwise Separable Convolution 的方式能夠有效地降低計算量

來看一下範例,會更清楚一般卷積與 Depthwise Separable Convolution 的差異

假設輸入的 feature map 尺寸為 7x7x16、filter 尺寸為 3x3x16x32 (filter size, in_channel, out_channel)、stride=2、padding=1,則一般卷積的輸出尺寸會是 4x4x32,計算量為 3x3x16x32x4x4

若是採用 Depthwise Separable Convolution 的方式,輸入的 feature map 尺寸一樣為 7x7x16,會先使用 3x3x16 filter (filter size, in_channel)、stride=2、padding=1 對各通道做卷積運算後,得到輸出 feature map 的尺寸為 4x4x16,接著在使用 1x1x16x32 filter (filter size, in_channel, out_channel) 將通道維度融合,最後輸出尺寸一樣會是 4x4x32,而計算量為 3x3x16x4x4 + 16x32x4x4

將兩者相比會得到 — > (3x3x16x4x4 + 16x32x4x4) / 3x3x16x32x4x4 = 1/32 + 1/(3x3)

因此採用 Depthwise Separable Convolution 的方式能夠降低 1/32 + 1/(3x3) 倍的計算量

Network Structure

MobileNet v1 的網路結構如下圖所示。除了第一層使用一般的卷積層,剩下的卷積層都是使用 Depthwise Separable Convolution

所有的卷積層後面都會加入一個 BN 和 ReLU

Width Mutiplier: Thinner Models

雖然 MobileNet 網路架構已經比較小了,但在某些應用下還是需要更小更快的模型,因此引入了寬度因子 alpha (Width Mutiplier),在每一層的輸入輸出通道進行縮減,原本的輸入通道從 M 變為 alpha x M,輸出通道從 N 變為 alpha x N,變換後的計算量為 DK x DK x alpha x M x DF x DF + alpha x M x alpha x N x DF x DF

alpha 介於 (0, 1] 區間,典型的設定值為 1, 0.75, 0.5, 0.25,可以使計算量和參數量降低 (alpha)**2 倍

Resolution Multiplier: Reduced Representation

另外一個引入的超參數為分辨率因子 (Resolution Multiplier),用來控制輸入圖像的分辨率,也就是說 Rho 越小、輸入圖像就越小

變換後的計算量為 DK x DK x alpha x M x ρ x DF x ρ x DF + alpha x M x alpha x N x ρ x DF x ρ x DF

Rho 介於 (0, 1] 區間,典型的設定值為 224、192、160、128,可以使計算量降低 (alpha)**2 x ρ x ρ 倍,但參數量沒有影響

下圖是輸入為 14x14x512 feature map的計算量與參數量的比較 (DK=3, M=512, N=512, DF=14)

Model Choices

由 Table4 可以看到採用 Depthwise Separable Convolution 比全卷積層的計算量及參數還要來得少;Table5 的結果顯示將 MobileNet v1 with width multiplier 的準確率會比 Shallow MobileNet 好大約 3%,Shallow MobileNet 是指把前五層 14x14x512 的 Depthwise Convolutional Filter 去掉

Table6, Table7 是不同的 Width Multiplier 與 Resolution Multiplier 超參數的比較

Model Shrinking Hyperparameters

接著作者將 Width Multiplier 分別取 {1, 0.75, 0.5, 0.25} 與 MobileNet Resolution 分別取 {224, 192, 160, 128} 組合為 16種模型,並將計算量和參數量對應 ImageNet 準確率做比較

Table8 顯示了 MobileNet 跟 GoogleNet、VGG16 的比較,可以看到 MobileNet 比 GoogleNet 準確率更高,並且計算量小了2.7倍,參數量也比較少;與 VGG16 相比準確率略差一點,但是計算量小了27倍,參數量也少了32倍

Table9 顯示 MobileNet (Width Multiplier=0.5、Resolution Multiplier=160) 跟 Squeezenet、AlexNet的比較,可以看到 MobileNet 比 Squeezenet 準確率高了大概4%,並且計算量小了22倍;與 AlexNet 相比準確率高了大概4%,計算量小了9.5倍,參數量也少了45倍

Fine Grained Recognition 細粒度分類

作者將 MobileNet 用於 Stanford Dogs 數據集上做細粒度的分類,並對模型進行超參數的微調,以及與 Inception V3 做比較。由 Table10 可以得知 MobileNet 可以得到與 Inception V3 差不多的準確率,但是能夠大大的減少計算量與參數量

Large Scale Geolocalizaton 大規模地理位置的定位

PlaNet 是用於分類大規模地理定位的任務,分類該照片是位於地球的哪個位置。該方法是將地球依據目標類別劃分地域單元網格 (a grid of geographic cells),並在數百萬張帶有地理標籤的照片上訓練卷積神經網絡。PlaNet 已被證明可以成功地定位各種照片,並且勝過了解決同一任務的Im2GPS

作者使用 MobileNet 重新設計 PlaNet,再次與 PlaNet、Im2GPS 做比較。雖然相比之下,PlaNet MobileNet 的準確率稍微下降一些,但是使用 PlaNet 的參數量有5200萬個、計算量為 574億;而使用 PlaNet MobileNet 的參數量只有1300萬個 (主體參數為300萬個,剩餘的參數是用於最後的分類層)、計算量為 58萬,計算量與參數量相差了非常多之外,PlaNet MobileNet 的準確率還是比 Im2GPS 高很多

Face Attributes

在人臉分類任務中,作者使用 MobileNet 架構結合蒸餾訓練,不僅不需要做正則化,準確率可以達到跟 baseline 差不多的程度,並且計算量與參數量大幅的降低

Object Detection

作者將 MobileNet、VGG、Inception V2 在 Faster-RCNN 與 SSD framework 下進行比較。模型通過 COCO train + val set (排除8k張 minival) ,再由 minival 進行驗證

  • 原始的COCO的檢測任務共含有80個類,在2014年發布的數據規模分train/val/test分別為80k/40k/40k
  • COCO train + val set的作法是為了增加訓練集,將 val set 的一些資料分給training set,而剩餘的 val set 作為驗證集 (minival)

由 Table13 可以看到 MobileNet 在 Faster-RCNN 與 SSD framework 下可以實現與其他模型差不多的mAP,但計算量與參數量卻少很多

Face Embeddings

作者將MobileNet 與 FaceNet 做結合並利用蒸餾方法去訓練模型,損失函數是最小化 MobileNet 與 FaceNet 在訓練集上的輸出平方差。由 Table14 可以得知輕量模型 MobileNet 準確率略差一點,但計算量卻降低了5~15倍、參數量降低 1~2 倍

作者在這些實驗中驗證了 MobileNet 應用於各種任務的有效性,可以大幅地減少計算量與參數量,非常有利於在邊緣端上做推理預測

--

--