【論文翻譯】MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

劉川楓發表於2018-05-10
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
摘要和Prior Work就略了,懶:)
 
Summary:
總的來說,MobileNet相對於標準卷積過程有以下幾點不同:
1) 將標準的卷積操作分為兩步:depthwise convolutionpointwise convolution。即先分解卷積濾波,再用1x1的卷積連線起來。通過文中的計算複雜度可以看出MobileNet的計算量降低了很多。
2) 引入了兩個超引數:width multiplierresolution multiplier。這兩個超引數的引入大量減少了計算量,加速了網路的計算。其中width multiplier是對輸入輸出通道數進行瘦身,resolution multiplier是通過縮小輸入影象的解析度(input resolution)來隠式的達到。
 
1. Introduction
介紹了一種高效的網路架構和兩個超引數,以便構建非常小的,低延遲(快速度)的模型,可以輕鬆匹配移動和嵌入式視覺應用的設計要求。引入的兩個簡單的全域性超引數,使得模型可以在速度和準確度之間有效地進行折中。
MobileNets主要由深度可分離卷積(depthwise separable convolutions)構建(最初在一篇論文有提及,隨後用於Inception模型以減少前面幾層的運算)。扁平化的網路通過完全分解的卷積建立,並顯示出極大的因式分解網路的潛力。
獲取小型網路的另一個辦法是縮小,分解或者壓縮訓練好的模型。文獻中基於壓縮的方法有productquantization,雜湊法與pruning,vectorquantization和霍夫曼編碼壓縮。此外,各種各樣的因式分解方法被提出來用於加速訓練好的網路。培訓小型網路的另一種方法是distillation(蒸餾法),使用更大的網路來教授小一點的網路。它是我們方法的補充,並在第四節的一些使用案例中有所涉及。另一種新興的方法是low bit networks。
 
2. MobileNet Architecture
2.1 Depthwise Separable Convolution
MobileNet模型是基於深度可分離卷積(depthwise separable convolutions),它是factorized convolutions的一種,而factorized convolutions將標準化卷積分解為深度卷積和1x1卷積(pointwise convolution)。標準的卷積過程(standard convolation)是將輸入濾波(kernels)和combine輸入到一系列輸出(output channels)這一個步驟來完成的。而depthwise separable convolutions將其分成兩層:一層用於濾波,一層用於combine,這種分解過程(factorization)具有極大減少計算量和模型大小的作用。如下圖所示,2(a)顯示的是一個標準卷積過程,2(b)和2(c)是將2(a)分解為(factorized) depthwise separable convolutions過程。
一個標準的卷積層輸入維度為DFxDFxM的特徵圖譜F,產生DFxDFxN(論文中為DF,但我認為這裡應該是DG吧。。因為輸出特徵圖的寬高不一定和輸入相同,要看stride和padding。後一句也說了是DG)的特徵圖譜G。其中DF是正方形輸入特徵圖譜的空間寬和高,M是輸入通道的數量(inputdepth),DG是正方形輸出特徵圖譜的空間寬和高,N是輸出通道的數量(outputdepth)。如果假設卷積stride是1並考慮padding,那麼標準化卷積操作的輸出特徵圖譜為:
標準卷積的計算複雜度為:
該計算複雜度依賴於輸入通道M,輸出通道N,卷積核DKxDK和特徵圖譜DFxDF。
標準的卷積操作為了生成新的表示需要基於卷積核和combine特徵來過濾特徵。這種濾波和combine操作可以通過使用分解卷積(factorized convolutions)即深度可分離卷積(depthwise separable convolution)來大幅降低計算複雜度。
Depthwise separable convolutions包括兩層:depthwise convolutions和pointwise convolutions。depthwise convolutions對每個輸入通道應用單一濾波器,pointwise convolutions(1x1卷積)用來對depthwise layer的輸出建立一個線性疊加。MobileNets對兩層卷積層都使用了BatchNormalization和ReLU非線性啟用單元。
每個輸入通道一個濾波器的depthwise convolution可以被寫為:
K是depthwise convolution的卷積核,其尺寸為DK*DK*M。卷積核K的第m個濾波器被應用於F的第m個通道來生成特徵圖G的第m個通道。
Depthwise convolution的計算複雜度為:
Depthwise separable convolutions的計算複雜度為:
是depthwise和1x1 pointwise convolutions的計算複雜度之和。
通過將卷積表示為濾波和組合的兩個過程處理,我們可以減少計算量:
MobileNets使用3x3的depthwise separable convolutions比standard convolutions減少了8-9倍的計算複雜度,而且只是減少了一點的準確率。
 
2.2 Network Structure and Training
MobileNet架構的定義見Table 1. 所有層都應用了batchnorm和ReLU,除了最後的全連線層沒有非線性啟用函式而直接饋送到softmax層作進行分類。
Figure 3 比較了包含常規卷積,batchnorm和ReLU非線性啟用的卷積層與包含depthwise convolution,1x1 pointwise convolution和每一層後的batchnorm和ReLU非線性啟用的分解層。在depthwise convolution和第一層都能處理下采樣問題。應用在全連線層前的最後的平均池化層將spatial resolution
減為1(啥意思??)。如果將depthwise和pointwise算為獨立的層,MobileNet有28層。
 
MobileNet幾乎全部的計算都在1x1卷積中。這可以通過高度優化的通用矩陣乘法(GEMM)函式來實現。通常,卷積由GEMM來實現,但需要在稱為im2col的記憶體中進行初始重新排序,以將其對映到GEMM。1x1的卷積不需要記憶體中的這種重新排序,且可以用GEMM(最優化的數值代數演算法之一)直接來實現。MobileNet的95%的計算時間都花在1x1的卷積上,且如Table 2所示的75%的引數也都在1x1的卷積層。幾乎所有其他的引數都在全連線層。
MobileNet以TensorFlow使用類似於Inception V3的非同步梯度下降的RMSprop進行訓練。然而,相較於訓練大模型,我們較少的使用正則化和資料增加技術,因為小模型很少有過擬合的麻煩(沒理解?)。訓練MobileNets的時候我們不使用side heads或label smoothing並通過限制crops的尺寸來減少影象扭曲的數量。另外,我們發現在depthwise濾波器上使用很少或者沒有權重衰減(L2 regularization)是很重要的,因為其引數很少。在下一節的ImageNet benchmarks,不管模型的尺寸大小,所有模型都用相同的訓練引數來訓練。
 
2.3 Width Multiplier: Thinner Models
儘管基本的MobileNet架構已經很小且延遲低,但很多特殊用例或應用仍需要此模型更小更快。為了進一步構建更小和更低的計算開銷的模型,我們引入一個非常簡單的引數α,稱為width multiplier。它的作用是在每一層均勻地給網路瘦身。對於一個給定的層和α,輸入通道數M變成αM,輸出通道數N變成αN
使用width multiplier α的depthwise separable convolutions的計算複雜度為:
其中α∈(0,1],通常設為1, 0.75, 0.5和0.25。α=1是基礎MobileNet,α<1是瘦身的MobileNets。Width multiplier具有降低計算複雜度和引數數量(大概為α的二次方)的作用。在有合理的準確率、延遲和尺度之間的權衡下,Width multiplier可以應用於任何模型結構來定義一個新的且更小的模型。它用於定義新的簡化的結構,但需要重新訓練。
 
2.4 Resolution Multiplier: Reduced Representation
第二個用來減少神經網路計算複雜度的超引數是resolution multiplier ρ。我們將它應用在輸入影象,並且每一層的內部特徵隨後被相同的multiplier減少。實際應用中,我們通過設定input resolution隠式的設定ρ
我們現在可以將我們網路的核心層的計算複雜度表示為帶有width multiplier α和resolution multiplier ρ 的depthwise separable convolutions:
其中ρ∈(0,1],通常設為224, 192, 160或128。ρ=1表示基礎MobileNet,ρ<1表示reduced computation MobileNets。Resolution multiplier可以減少的計算複雜度為ρ的二次方。
作為一個例子我們可以看一個MobileNet中的典型層,看看depthwise separable convolutions,width multiplier和resolution multiplier怎麼降低複雜度和引數的。Table 3展示了不同架構收縮方法應用於卷積層的計算(Computation)和引數數量。第一行是輸入feature map尺寸為14x14x512,kernel K尺寸為3x3x512x512的全卷積層的Mult-Adds和Paramerters。我們在下一節會深入研究如何在resources和accuracy之間權衡。
 
3. Experiments
在這一節,我們首先研究depthwise convolutions和通過減小網路的width而不是層數的收縮的選擇。然後我們展示基於兩個超引數:width multiplier和resolution multiplier來reduce網路的權衡,並和一些流行的模型作比較。最後我們討論將MobileNets應用於一些不同的應用。
 
3.1 Model Choices
首先,我們展示具有depthwise separable convolutions的MobileNet和用full convolutions構建的模型的比較結果。在Table 4中我們看到在ImageNet上使用depthwise separable convolutions相較於full convolutions只減少了1%的正確率,並在mult-adds和parameters上節省了很大成本。
然後,我們展示使用width multiplier的更瘦的模型和使用更少層的較淺的模型的比較結果。為了讓MobileNet更淺,Table 1中的feature size為14x14x512的5層separable filters被移除了。Table 5展示了在相似計算和引數數量下,讓MobileNets更瘦比讓其更淺要好3%左右。
 
3.2 Model Shrinking Hyperparameters
Table 6所示為使用width multiplier α的收縮MobileNet結構的accuracy, computation和size之間的權衡。Accuracy平滑的下降直到架構被收縮很小到α=0.25。
Table 7所示為通過使用reduced input resolutions在不同resolution multipliers下的accuracy, coumputation和size之間的權衡。Accuracy隨resolution下降而平滑的下降。
Figure 4所示為在ImageNet資料集上,由width multiplier α∈{1, 0.75, 0.5, 0.25}和resolutions {224, 192, 160, 128}組合成的16個模型的accuracy和computation。結果是對數線性的(log linear),當模型非常小時(α=0.25),模型有一個跳躍。
Figure 5所示為在ImageNet資料集上,由width multiplier α∈{1, 0.75, 0.5, 0.25}和resolutions {224, 192, 160, 128}組合成的16個模型的accuracy和parameters數量之間的trade offs。
Table 8比較了full MobileNet和原始的GoogleNet, VGG16. 在模型大小小了32倍,計算複雜度小了27倍的情況下,MobileNet的accurate和VGG16相近。MobileNet在模型比GoogleNet更小且高於2.5倍的複雜度降低的情況下MobileNet擁有更高的accurate。
Table 9比較了使用width multiplier α=0.5和reduced resolution 160x160的reduced MobileNet。在模型大小45倍小和計算複雜度9.4倍小的Reduced MobileNet比AlexNet好4%。在相同size和計算複雜度22倍小的情況下,MobileNet也比Squeezenet好4%。
 
3.3 Fine Grained Recognition
我們在Stanford Dogs資料集上訓練細粒度識別的MobileNet模型。我們擴充套件了[18]的方法並從web上收集了一個更大但有噪聲的訓練集。我們使用有噪聲的web資料來預訓練一個細粒度的狗識別模型,然後在Stanford Dogs訓練集上fine tune模型。在Stanford Dogs測試集上的結果見Table 10。MobileNet在大幅reduce computation和size的情況下,幾乎可以實現state of the art的結果。
 
3.4 Large Scale Geolocalization
PlaNet[35] 將確定一張拍攝的照片在地球上的哪個地方作為分類問題。該方法將地球劃分為一個用作目標類的地理單元格,並在數百萬個地理標記的照片上訓練卷積神經網路。
我們使用MobileNet架構在相同資料上重新訓練PlaNet。Full PlaNet模型基於Inception V3架構並具有5200萬個引數和57.4億mult-adds。MobileNet模型只有1300萬個引數(通常,300萬個用在body,1000個用於最後一層)和58萬個mult-adds。如Table 11所示,在不管更緊湊的情況下,MobileNet版本與PlaNet相比只有輕微的效能下降。此外,它仍大幅度由於Im2GPS。
 
3.5 Face Attributes
MobileNet的另外一個應用是壓縮具有未知或深奧難懂的訓練過程的大系統。在面部屬性分類任務中,我們描述了MobileNet與distillation之間的協同關係。一個已知的深度網路遷移技術。我們尋求減少具有7500萬個parameters和16億Mult-Adds的大型面部屬性分類器。這個分類器在類似於YFCC100M [32]的multi-atrribute資料集上訓練得到。
我們用MobileNet來提取面部屬性分類器。提取是通過訓練分類器來模擬較大模型的輸出,而不是ground-truth標籤,從而可以使用大量(也許是無限多)未標記的資料集進行訓練。綜合提取(distillation)訓練的可擴充套件性和MobileNet的簡約引數化,終端系統不僅需要正則化(例如weight-decay和early-stopping),並且需要表現出增強的效能。從Table 12顯而易見的是,基於MobileNet的分類器是有較強模型縮放彈性的:它在不同的屬性間達到了近似的平均精度(mean AP)卻只有1%的計算量。
 
 
3.6 Object Detection
MobileNet也可以作為有效的基礎網路部署在現代目標檢測系統上。根據最近贏得的2016 COCO挑戰的工作,我們報告了在COCO資料集上進行目標檢測的MobileNet訓練結果。在Table 13,比較了MobileNet和分別基於Faster-RCNN和SSD框架的VGG和inception V2。在我們的實驗中,SSD使用了300作為input resolution(SSD 300), Faster-RCNN使用了300和600的input resolution(Faster-RCNN 300, Faster-RCNN 600)。這個Faster-RCNN模型中的每張影象使用300個RPN提取框。模型通過COCO訓練集和測試集(除掉8000張的minival影象),並在minival上進行測試。對於這兩個框架,MobileNet在只有很小的計算複雜度和模型尺寸下實現了和其他網路相似的結果。
 
3.7 Face Embeddings
FaceNet是一個state of the art的人臉識別模型。它基於triplet loss構建人臉嵌入。為了構建一個移動端的FaceNet模型,我們用distillation通過FaceNet和MobileNet在訓練資料上最小化輸出均方差來訓練模型。對於很小的MobileNet模型的結果見Table 14。
 
4. Conclusion
我們提出了一個基於depthwise separable convolutions的叫MobileNet的新的模型架構。我們討論了一些可以讓模型高效的重要的設計決策。然後,我們展示了怎樣使用width multiplier和resolution multiplier通過權衡合理的accuracy, reduce size和latency構建更小更快的MobileNets。再然後,我們比較了不同MobileNets和一些流行模型,論述了superior size, speed和accuracy的特點。我們通過論述MobileNet在應用於各種任務時的有效性得出了結論。為了進一步幫助探索MobileNets,我們計劃釋出基於TensorFlow的模型。
 
 
Reference:
 
 

相關文章