MobileNet 論文學習


論文地址: https://arxiv.org/abs/1704.04861.

這篇論文介紹了一種應用在移動設備和嵌入式上的網絡結構—MobileNet。MobileNet利用depthwise separable convolution 來構建輕量級深度神經網絡。作者引入了兩個簡單的全局超參來有效地平衡延遲度和準確度。這兩個超參允許使用者根據需要來選擇合適大小的模型。

1. Introduction

自從AlexNet贏得ImageNet挑戰賽以來,卷積網絡在計算機視覺領域已經無所不在。但是伴隨着模型精度的提升是計算量,存儲空間以及能耗方面的巨大開銷,對於移動或嵌入式都是難以接受的。

這篇論文介紹了一種高效的網絡結構以及兩個超參數,以此來搭建一個小型、低延遲的模型。作者進一步深入的研究了depthwise separable convolutions後設計出此網絡結構,depthwise separable convolutions的本質是冗餘信息更少的稀疏化表達。在此基礎上引入了模型設計的兩個超參數:width multiplier 和 resolution multiplier。作者也通過了多種的實驗證明了 MobileNet 高效性。

2. Prior work

之前的一些模型小型化工作將焦點放在如何縮小模型的尺寸上,而不是提升速度(縮小延遲性)。

因此,在小型化方面常用的手段有:

(1)卷積核分解,使用1×N1\times NN×1N\times 1的卷積核代替N×NN\times N的卷積核;

(2)使用bottleneck結構,以SqueezeNet爲代表;

(3)以低精度浮點數保存,例如Deep Compression;

(4)冗餘卷積核剪枝及哈弗曼編碼。

MobileNet 主要基於depthwise separable convolutions來減少模型前面幾層的計算量。

3. MobileNet Architecture

3.1 Depthwise Separable Convolution

MobileNet主要基於 depthwise separable convolution,它把一個標準的卷積拆分成:一個 depthwise convolution 和 一個 1×11\times 1的 pointwise 卷積。Depthwise 卷積在每個輸入通道上使用一個濾波器。Pointwise 卷積然後使用一個1×11\times 1的卷積來結合 depthwise 卷積的輸出。這種拆分極大地降低了計算量和模型大小。下圖展示了標準卷積如何拆分爲 depthwise 卷積和 1×11\times 1 pointwise 卷積。

一個標準3D卷積的輸入爲DF×DF×MD_F\times D_F \times M大小的特徵映射FF,輸出爲 DG×DG×ND_G\times D_G\times N的特徵映射GGDFD_F是正方形輸入特徵映射的高和寬。MM是輸入通道的個數。DGD_G是正方形輸出特徵映射的高和寬,NN是輸出通道的個數。標準卷積可用卷積核KK參數化表示,KK大小爲DK×DK×M×ND_K\times D_K \times M \times NDKD_K是正方形卷積核的大小,MM是輸入通道數,NN是輸出通道數。

這樣,一個 stride=1, padding=1 的標準3D卷積輸出的特徵映射計算如下:
Gk,l,n=i,j,mKi,j,m,nFk+i1,l+j1,mG_{k,l,n} = \sum_{i,j,m} K_{i,j,m,n} F_{k+i-1, l+j-1, m}

計算成本爲:
DK×DK×M×N×DF×DF.D_K \times D_K \times M \times N \times D_F \times D_F.
計算成本取決於輸入通道數MM,輸出通道數NN,卷積核大小DK×DKD_K\times D_K和輸入大小DF×DFD_F \times D_F

Depthwise separable convolution 由兩層組成:depthwise 卷積和 pointwise 卷積。Depthwise 卷積在每個輸入通道上都應用 一個 filter. 然後使用 pointwise 卷積(1×11\times 1卷積)來線性地結合 depthwise 層的輸出。MobileNet 在這兩個層中均使用了批歸一化和ReLU激活函數。

參考上圖:我們會首先使用一組二維的卷積核,也就是卷積核的通道數爲1,每次只處理一個輸入通道的,這一組二維卷積核的數量是和輸入通道數相同的。在使用逐個通道卷積處理之後,再使用3D的1×11\times 1卷積核來處理之前輸出的特徵圖,將最終輸出通道數變爲一個指定的數量。

對於每個輸入通道,一個 filter 的 depthwise 卷積可寫作如下形式:
G^k,l,m=i,jK^i,j,mFk+i1,l+j1,m\hat G_{k,l,m} = \sum_{i,j} \hat K_{i,j,m} F_{k+i-1,l+j-1,m}
K^\hat K是 大小爲 DK×DK×MD_K\times D_K\times M的 depthwise 卷積核,K^\hat K中第mm個 filter 應用在 FF 中第 mm 個通道上,來產生輸出特徵映射 G^\hat G 的第 mm 個通道。

這樣,depthwise 卷積的計算成本是:
DK×DK×M×DF×DFD_K \times D_K \times M \times D_F \times D_F
Depthwise 卷積比起標準3D卷積來說,非常的高效。

接下來我們需要一個1×11\times 1的 pointwise 卷積層來線性地結合 depthwise 卷積層的輸出。它們共同構成了 Depthwise Separable Convolution. 其總成本爲:
DK×DK×M×DF×DF+M×N×DF×DFD_K \times D_K \times M \times D_F \times D_F+M\times N \times D_F \times D_F
左邊爲depthwise 卷積的成本,右邊爲 pointwise 卷積的成本。

Depthwise 方式的卷積相比於標準3D卷積計算量爲:
DK×DK×M×DF×DF+M×N×DF×DFDK×DK×M×N×DF×DF=1N+1DK2\frac{D_K \times D_K \times M \times D_F \times D_F+M\times N \times D_F \times D_F}{D_K \times D_K \times M \times N \times D_F \times D_F} = \frac{1}{N} + \frac{1}{D^2_K}

舉一個具體的例子,給定輸入圖像的爲3通道的224×224224\times 224的圖像,VGG16網絡的第3個卷積層conv2_1輸入的是尺寸爲112的特徵圖,通道數爲64,卷積核尺寸爲3,卷積核個數爲128,傳統卷積運算量就是:
3×3×128×64×112×112=924844032.3\times 3\times 128 \times 64 \times 112 \times 112 = 924844032.
而 Depthwise Separable Convolution計算量是:
3×3×64×112×112+128×64×112×112=1099857923\times 3\times 64 \times 112\times 112 + 128 \times 64 \times 112 \times 112 =109985792
二者相比較,可得9248440321099857928.4\frac{924844032}{109985792 } \approx 8.4

3.2 Network Structure and Training

標準3D卷積常見的使用方式如下圖左側所示,Depthwise卷積的使用方式如下圖右邊所示。把 depthwise 卷積和 pointwise 卷積分開來算,MobileNet 有28層。

從圖中可以看出,Depthwise的卷積和後面的1×11\times 1 pointwise 卷積被當成了兩個獨立的模塊,都在輸出結果的部分加入了Batch Normalization和ReLU非線性激活。

Depthwise separable convolution 結合 1×11\times 1的卷積方式代替傳統卷積不僅在理論上會更高效,而且由於大量使用1×11\times 1的卷積,可以直接使用高度優化的數學庫來完成這個操作。以Caffe爲例,如果要使用這些數學庫,要首先使用im2col的方式來對數據進行重新排布,從而確保滿足此類數學庫的輸入形式;但是1×11\times 1方式的卷積不需要這種預處理。

如下圖,MobileNet 花費了95%的計算時間在1×11\times 1卷積上,1×11\times 1卷積使用了75%的參數,全連接層使用了幾乎所有的額外參數。

MobileNet 網絡結構爲:

3.3 Width Multiplier: Thinner Models

儘管MobileNet 在計算量和模型尺寸方面有很明顯的優勢,但在一些要求極其苛刻的場合和應用上,可能要求模型更小更快。

作者因此引入了一個超參數width multiplier, α,α(0,1]\alpha, \alpha \in (0,1]α\alpha通常設爲1, 0.75, 0.5 和 0.25。α=1\alpha=1爲 baseline MobileNet, α<1\alpha<1爲 reduced MobileNet。參數α\alpha用於細化網絡的各層。對於給定的某層,它的輸入通道MM就變爲了αM\alpha M,輸出通道NN變爲了αN\alpha N。Depthwise Separable Convolution 的計算量就是:
DK×DK×αM×DF×DF+αM×αN×DF×DFD_K \times D_K \times \alpha M \times D_F \times D_F + \alpha M \times \alpha N\times D_F\times D_F

Width multiplier 可以有效地降低計算量和參數個數至α2\alpha^2倍。

通過下圖可以看出使用α\alpha係數進行網絡參數的約減時,在ImageNet上的準確率,爲準確率、參數數量和計算量之間的權衡提供了參考(每一個項中最前面的數字表示α的取值)。

3.4 Resolution Multiplier: Reduced Representation

第二個用於降低計算量的超參數是 resolution multiplier ρ\rho. 它的值ρ(0,1]\rho \in (0,1], 是作用於每一層輸入尺寸的約減因子,簡單來說就是將輸入數據以及由此在每一個模塊產生的特徵圖都變小了,結合 width multipler α\alpha,depthwise 卷積結合1×11\times 1的 pointwise 卷積覈計算量爲:
DK×DK×αM×ρDF×ρDF+αM×αN×ρDF×ρDFD_K \times D_K \times \alpha M \times \rho D_F \times \rho D_F + \alpha M \times \alpha N\times \rho D_F\times \rho D_F

下圖顯示了隨着網絡結構的收縮,每層參數個數和計算量的變化:

4. Experiments

略,詳見論文。

博客引用
本論文部分內容有參考 https://blog.csdn.net/t800ghb/article/details/78879612.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章