MobileNet: Efficient Convolutional Neural Networks for Mobile Vision Applicatons
論文地址: 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)卷積核分解,使用和的卷積核代替的卷積核;
(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 和 一個 的 pointwise 卷積。Depthwise 卷積在每個輸入通道上使用一個濾波器。Pointwise 卷積然後使用一個的卷積來結合 depthwise 卷積的輸出。這種拆分極大地降低了計算量和模型大小。下圖展示了標準卷積如何拆分爲 depthwise 卷積和 pointwise 卷積。
一個標準3D卷積的輸入爲大小的特徵映射,輸出爲 的特徵映射,是正方形輸入特徵映射的高和寬。是輸入通道的個數。是正方形輸出特徵映射的高和寬,是輸出通道的個數。標準卷積可用卷積核參數化表示,大小爲,是正方形卷積核的大小,是輸入通道數,是輸出通道數。
這樣,一個 stride=1, padding=1 的標準3D卷積輸出的特徵映射計算如下:
計算成本爲:
計算成本取決於輸入通道數,輸出通道數,卷積核大小和輸入大小。
Depthwise separable convolution 由兩層組成:depthwise 卷積和 pointwise 卷積。Depthwise 卷積在每個輸入通道上都應用 一個 filter. 然後使用 pointwise 卷積(卷積)來線性地結合 depthwise 層的輸出。MobileNet 在這兩個層中均使用了批歸一化和ReLU激活函數。
參考上圖:我們會首先使用一組二維的卷積核,也就是卷積核的通道數爲1,每次只處理一個輸入通道的,這一組二維卷積核的數量是和輸入通道數相同的。在使用逐個通道卷積處理之後,再使用3D的卷積核來處理之前輸出的特徵圖,將最終輸出通道數變爲一個指定的數量。
對於每個輸入通道,一個 filter 的 depthwise 卷積可寫作如下形式:
是 大小爲 的 depthwise 卷積核,中第個 filter 應用在 中第 個通道上,來產生輸出特徵映射 的第 個通道。
這樣,depthwise 卷積的計算成本是:
Depthwise 卷積比起標準3D卷積來說,非常的高效。
接下來我們需要一個的 pointwise 卷積層來線性地結合 depthwise 卷積層的輸出。它們共同構成了 Depthwise Separable Convolution. 其總成本爲:
左邊爲depthwise 卷積的成本,右邊爲 pointwise 卷積的成本。
Depthwise 方式的卷積相比於標準3D卷積計算量爲:
舉一個具體的例子,給定輸入圖像的爲3通道的的圖像,VGG16網絡的第3個卷積層conv2_1輸入的是尺寸爲112的特徵圖,通道數爲64,卷積核尺寸爲3,卷積核個數爲128,傳統卷積運算量就是:
而 Depthwise Separable Convolution計算量是:
二者相比較,可得
3.2 Network Structure and Training
標準3D卷積常見的使用方式如下圖左側所示,Depthwise卷積的使用方式如下圖右邊所示。把 depthwise 卷積和 pointwise 卷積分開來算,MobileNet 有28層。
從圖中可以看出,Depthwise的卷積和後面的 pointwise 卷積被當成了兩個獨立的模塊,都在輸出結果的部分加入了Batch Normalization和ReLU非線性激活。
Depthwise separable convolution 結合 的卷積方式代替傳統卷積不僅在理論上會更高效,而且由於大量使用的卷積,可以直接使用高度優化的數學庫來完成這個操作。以Caffe爲例,如果要使用這些數學庫,要首先使用im2col的方式來對數據進行重新排布,從而確保滿足此類數學庫的輸入形式;但是方式的卷積不需要這種預處理。
如下圖,MobileNet 花費了95%的計算時間在卷積上,卷積使用了75%的參數,全連接層使用了幾乎所有的額外參數。
MobileNet 網絡結構爲:
3.3 Width Multiplier: Thinner Models
儘管MobileNet 在計算量和模型尺寸方面有很明顯的優勢,但在一些要求極其苛刻的場合和應用上,可能要求模型更小更快。
作者因此引入了一個超參數width multiplier, ,通常設爲1, 0.75, 0.5 和 0.25。爲 baseline MobileNet, 爲 reduced MobileNet。參數用於細化網絡的各層。對於給定的某層,它的輸入通道就變爲了,輸出通道變爲了。Depthwise Separable Convolution 的計算量就是:
Width multiplier 可以有效地降低計算量和參數個數至倍。
通過下圖可以看出使用係數進行網絡參數的約減時,在ImageNet上的準確率,爲準確率、參數數量和計算量之間的權衡提供了參考(每一個項中最前面的數字表示α的取值)。
3.4 Resolution Multiplier: Reduced Representation
第二個用於降低計算量的超參數是 resolution multiplier . 它的值, 是作用於每一層輸入尺寸的約減因子,簡單來說就是將輸入數據以及由此在每一個模塊產生的特徵圖都變小了,結合 width multipler ,depthwise 卷積結合的 pointwise 卷積覈計算量爲:
下圖顯示了隨着網絡結構的收縮,每層參數個數和計算量的變化:
4. Experiments
略,詳見論文。
博客引用
本論文部分內容有參考 https://blog.csdn.net/t800ghb/article/details/78879612.