(一)MobileNet_v1----2017論文解讀

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

MobileNets:用於移動視覺應用的高效卷積神經網絡

Abstract

我們爲移動和嵌入式視覺應用提出了一種稱爲MobileNets的有效模型。MobileNets基於簡化的架構,該架構使用深度可分離卷積來構建輕型深度神經網絡。我們介紹了兩個簡單的全局超參數,它們可以有效地在延遲和準確性之間進行權衡。這些超參數允許模型構建者根據問題的約束條件爲其應用選擇合適大小的模型。我們對資源和精度進行了廣泛的權衡取捨,與ImageNet分類中的其他流行模型相比,我們展示了強大的性能。然後,我們演示了MobileNets在各種應用程序和用例中的有效性,包括對象檢測,細粒度分類,人臉屬性和大規模地理定位。

1 Introduction

自從AlexNet [19]通過贏得ImageNet挑戰:ILSVRC 2012 [24]來推廣深度卷積神經網絡以來,卷積神經網絡就已經在計算機視覺中變得無處不在。總的趨勢是建立更深,更復雜的網絡以實現更高的準確性[27、31、29、8]。但是,這些提高準確性的進步並不一定會使網絡在大小和速度方面更加高效。在許多現實世界的應用中,例如機器人技術,自動駕駛汽車和增強現實,識別任務需要在計算受限的平臺上及時執行。

**本文描述了一種有效的網絡體系結構和兩個超參數集,以建立非常小的,低延遲的模型,這些模型可以輕鬆地滿足移動和嵌入式視覺應用的設計要求。**第2節回顧了構建小型模型的先前工作。第3節介紹了MobileNet體系結構以及兩個超參數寬度乘數和分辨率乘數,以定義更小,更高效的MobileNet。第4節介紹了ImageNet上的實驗以及各種不同的應用程序和用例。第5節以總結和結論結束。

2 Prior Work

在最近的文獻中,人們對建立小型高效的神經網絡的興趣日益濃厚 [16、34、12、36、22]。通常可以將許多不同的方法歸類爲壓縮預訓練網絡或直接訓練小型網絡。本文提出了一類網絡架構,允許模型開發人員專門爲其應用選擇與資源限制(延遲,大小)相匹配的小型網絡。 MobileNets主要致力於優化延遲,但也可以產生小型網絡。關於小型網絡的許多論文只關注規模,而沒有考慮速度。

MobileNets主要是從深度方向可分卷積中構建的,該方法最初在[26]中引入,隨後在Inception模型[13]中使用,以減少前幾層的計算量。扁平化網絡[16]由完全分解的卷積構建網絡,並顯示了高度分解的網絡的潛力。獨立於本文之外,分解網絡[34]引入了類似的分解卷積以及拓撲連接的使用。隨後,Xception網絡[3]演示瞭如何按比例擴展深度可分離的濾波器以執行Inception V3網絡。另一個小型網絡是Squeezenet [12],它使用瓶頸方法設計了一個非常小的網絡。其他簡化的計算網絡包括結構化轉換網絡[28]
和油炸卷積網絡[37]。
在這裏插入圖片描述
獲得小型網絡的另一種方法是收縮,分解或壓縮預訓練網絡。文獻中已經提出了基於乘積量化[36],散列[2]以及修剪,矢量量化和霍夫曼編碼[5]的壓縮。 另外,已經提出了各種因式分解來加速預訓練的網絡[14、20]。 訓練小型網絡的另一種方法是蒸餾[9],它使用較大的網絡來教授較小的網絡。 它是我們方法的補充,在第4節的一些用例中進行了介紹。另一種新興方法是低位網絡[4、22、11]。

3 MobileNet Architecture

在本節中,我們首先描述構建MobileNet的核心層,這些層是深度可分離的過濾器。然後,我們描述MobileNet網絡結構,並以兩個模型縮減超參數寬度乘數和分辨率乘數的描述作爲結束。

3.1. Depthwise Separable Convolution

MobileNet模型基於深度可分離卷積,它是分解卷積的一種形式,可將標準卷積分解爲深度卷積和稱爲點向卷積的1×1卷積。對於MobileNet,深度卷積將單個濾波器應用於每個輸入通道。然後逐點卷積應用1×1卷積以將輸出與深度卷積合併。一個標準的卷積既可以過濾又可以將輸入合併爲一組新的輸出。深度可分離卷積將其分爲兩層,一個用於過濾的單獨層和一個用於合併的單獨層。這種分解具有顯着減少計算和模型大小的效果。圖2顯示瞭如何將標準卷積2(a)分解爲深度卷積2(b)和1×1點向卷積2(c)。

標準卷積層將DF×DF×M特徵圖F作爲輸入,並生成DF×DF×N特徵圖G,其中DFis平方輸入特徵圖1的空間寬度和高度,M是輸入通道數(輸入深度),DG是正方形輸出特徵圖的空間寬度和高度,N是輸出通道的數量(輸出深度)。

標準卷積層由大小爲DK×DK×M×N的卷積核K進行參數化,其中DK是假定爲正方形的核的空間尺寸,M是輸入通道數,N是輸出通道數,如先前定義。

假設跨度爲1和填充爲標準卷積的輸出特徵圖,計算公式爲:
Gk,l,n=i,j,mKi,j,m,nFk+i1,l+j1,m1 \mathbf{G}_{k, l, n}=\sum_{i, j, m} \mathbf{K}_{i, j, m, n} \cdot \mathbf{F}_{k+i-1, l+j-1, m} (1)
標準卷積的計算成本爲:
DKDKMNDFDF2 D_{K} \cdot D_{K} \cdot M \cdot N \cdot D_{F} \cdot D_{F} (2)
其中計算成本乘以輸入通道數M,輸出通道數N,內核大小Dk×Dk和特徵圖大小DF×DF。 MobileNet模型解決了這些術語及其相互作用。首先,它使用深度可分離卷積來打破輸出通道數與內核大小之間的相互作用。

標準卷積運算具有基於卷積覈對特徵進行過濾並組合特徵以產生新表示的作用。可通過使用因數分解卷積(稱爲深度可分離卷積)來將過濾和組合步驟分爲兩步,以進行實質性還原 在計算成本上。

深度可分離卷積由兩層組成:深度卷積和點卷積。我們使用深度卷積在每個輸入通道(輸入深度)上應用單個濾波器。然後,使用逐點卷積(簡單的1×1卷積)來創建深度層輸出的線性組合。 MobileNets對這兩個層都使用了batchnorm和ReLU非線性。

每個輸入通道(輸入深度)帶有一個濾波器的深度卷積可以寫成:
G^k,l,m=i,jK^i,j,mFk+i1,l+j1,m3 \hat{\mathbf{G}}_{k, l, m}=\sum_{i, j} \hat{\mathbf{K}}_{i, j, m} \cdot \mathbf{F}_{k+i-1, l+j-1, m} (3)
其中ˆK是大小爲DK×DK×M的深度卷積核,其中將第m個濾波器inˆK應用於F中的第m個通道,以生成濾波後的輸出特徵圖ˆG的第m個通道。

深度卷積的計算成本爲:
DKDKMDFDF4 D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F} (4)
相對於標準卷積,深度卷積非常有效。但是,它僅過濾輸入通道,不會將它們組合以創建新功能。因此,需要額外的一層來計算通過1×1卷積的深度卷積輸出的線性組合,以便生成這些新特徵。

深度卷積和1×1(點向)卷積的組合稱爲深度可分離卷積,最初是在[26]中引入的。

深度可分離卷積代價:
DKDKMDFDF+MNDFDF5 D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F} (5)
這是深度卷積和1×1點卷積的總和。

通過將卷積表示爲過濾和組合的兩步過程,我們可以減少以下計算:
DKDKMDFDF+MNDFDFDKDKMNDFDF=1N+1DK2 \begin{aligned} & \frac{D_{K} \cdot D_{K} \cdot M \cdot D_{F} \cdot D_{F}+M \cdot N \cdot D_{F} \cdot D_{F}}{D_{K} \cdot D_{K} \cdot M \cdot N \cdot D_{F} \cdot D_{F}} \\ =& \frac{1}{N}+\frac{1}{D_{K}^{2}} \end{aligned}
MobileNet使用3×3深度可分離卷積,使用的計算量比標準卷積少8到9倍,而準確性僅略有降低,如第4節所示。

像[16,31]中那樣在空間維度上進行額外的因式分解不會節省太多額外的計算,因爲在深度卷積中只花費了很少的計算。
在這裏插入圖片描述

3.2. Network Structure and Training

在這裏插入圖片描述
如前一節所述,MobileNet結構基於深度可分離卷積,但第一層是完整卷積。通過以如此簡單的術語定義網絡,我們能夠輕鬆地探索網絡拓撲以找到一個好的網絡。表1定義了MobileNet體系結構。所有層後面都帶有一個batchnorm [13]和ReLU非線性,最後一個完全連接的層除外,該層沒有非線性,並饋入softmax層進行分類。圖3將具有常規卷積,batchnorm和ReLU非線性的層與具有深度卷積,1×1點向卷積以及每個卷積層之後的batchnorm和ReLU的分解層進行了對比。下采樣是在深度卷積以及第一層中通過跨步卷積處理的。最終平均池在完全連接的層之前將空間分辨率降低爲1。將深度和點積卷積計爲單獨的層,MobileNet有28層。

僅用少量的Mult-Adds定義網絡是不夠的。 確保這些操作可以有效實施也很重要。 例如,直到非常高的稀疏度,非結構化稀疏矩陣運算通常不比密集矩陣運算快。我們的模型結構將幾乎所有計算都放入了密集的1×1卷積中。這可以通過高度優化的通用矩陣乘法(GEMM)函數來實現。卷積通常由GEMM實現,但需要在內存中進行名爲im2col的初始重新排序,才能將其映射到GEMM。例如,這種方法在流行的Caffe軟件包中使用[15]。 1×1卷積不需要在內存中進行重新排序,可以直接使用GEMM(這是最優化的數值線性代數算法之一)來實現。如表2所示,MobileNet將其95%的計算時間花費在1×1卷積中,其中也包含75%的參數。幾乎所有其他參數都位於完全連接的層中。

使用RMSprop [33]在TensorFlow [1]中使用與Inception V3 [31]類似的異步梯度下降訓練了MobileNet模型。但是,與訓練大型模型相反,我們使用較少的正則化和數據增強技術,因爲小型模型的過擬合麻煩較小。在訓練MobileNets時,我們不使用側邊或標籤平滑,並且通過限制在大型Inception訓練中使用的小作物的大小來減少失真的圖像數量[31]。此外,我們發現,對深度過濾器設置很少或很少的權重衰減(l 2正則化)非常重要,因爲它們中的參數太少了。對於下一部分中的ImageNet基準測試,所有模型均使用相同的訓練參數進行訓練,無論模型的大小如何。

3.3. Width Multiplier: Thinner Models

在這裏插入圖片描述
儘管基本的MobileNet體系結構已經很小並且延遲很短,但是很多情況下,特定的用例或應用程序可能要求模型更小,更快。爲了構造這些較小且計算量較小的模型,我們引入了一個非常簡單的參數α,稱爲寬度乘數。寬度乘數α的作用是使每一層的網絡均勻變薄。

對於給定的層和寬度乘數α,輸入通道的數量變爲αM,而輸出通道的數量N變爲αN。

具有寬度乘數α的深度可分離卷積的計算成本爲:
DKDKαMDFDF+αMαNDFDF6 D_{K} \cdot D_{K} \cdot \alpha M \cdot D_{F} \cdot D_{F}+\alpha M \cdot \alpha N \cdot D_{F} \cdot D_{F} (6)
其中,α∈(0,1]的典型設置爲1、0.75、0.5和0.25。α= 1是基準MobileNet,α<1是簡化的MobileNets。寬度乘數具有降低計算成本和二次方參數數量的作用寬度乘數可以應用於任何模型結構,以合理的精度,等待時間和大小折衷定義一個新的較小模型,用於定義一個新的簡化結構,需要從頭開始進行訓練。

3.4. Resolution Multiplier: Reduced Representation

在這裏插入圖片描述
減少神經網絡計算成本的第二個超參數是分辨率乘數ρ。

我們將其應用於輸入圖像,然後通過相同的乘數來減少每一層的內部表示。實際上,我們通過設置輸入分辨率來隱式設置ρ。

現在,我們可以將網絡核心層的計算成本表示爲具有寬度乘數α和分辨率乘數ρ的深度可分離卷積:
DKDKαMρDFρDF+αMαNρDFρDF7 D_{K} \cdot D_{K} \cdot \alpha M \cdot \rho D_{F} \cdot \rho D_{F}+\alpha M \cdot \alpha N \cdot \rho D_{F} \cdot \rho D_{F} (7)
其中ρ∈(0,1]通常是隱式設置的,因此網絡的輸入分辨率爲224、192、160或128。ρ= 1是基準MobileNet,而ρ<1是簡化的計算MobileNets。將計算成本降低ρ2的效果。

作爲示例,我們可以查看MobileNet中的典型層,並瞭解深度可分離卷積,寬度乘數和分辨率乘數如何減少成本和參數。表3顯示了將體系結構收縮方法依次應用於該層時該層的參數計算和數量。第一行顯示了完整卷積層的Mult-Adds和參數,輸入特徵圖的大小爲14×14×512,內核K的大小爲3×3×512×512。我們將在下一部分中詳細介紹在資源和準確性之間進行權衡。

4 Experiments

在本節中,我們首先研究深度卷積的影響以及通過減小網絡的寬度而不是層數來選擇收縮的方法。然後,我們基於兩個超參數(寬度乘數和分辨率乘數)顯示減少網絡的權衡,並將結果與許多流行的模型進行比較。然後,我們研究MobileNets應用於許多不同的應用程序。

4.1. Model Choices

在這裏插入圖片描述
首先,我們展示了與具有完全卷積構建的模型相比,具有深度可分離卷積的MobileNet的結果。 在表4中,我們看到,與完全卷積相比,使用深度可分離卷積僅將ImageNet的精度降低了1%,從而大大節省了多添加項和參數。

接下來,我們將比較使用寬度乘數的較薄模型與使用較少圖層的較淺模型的結果。爲了使MobileNet更淺,表1中刪除了5層功能尺寸爲14×14×512的可分離濾波器。表5顯示,在類似的計算和參數數量下,使MobileNets變薄比使它們變淺好3%。

4.2. Model Shrinking Hyperparameters

表6顯示了使用寬度乘數α縮小MobileNet體系結構的精度,計算和尺寸折衷。精度會平穩下降,直到在α= 0.25時架構變得太小爲止。

表7顯示了通過訓練具有降低的輸入分辨率的MobileNet來獲得不同分辨率乘數的精度,計算和尺寸的折衷。精度在整個分辨率上都會下降。

圖4顯示了用寬度乘數α∈{1,0.75,0.5,0.25}和分辨率{224,192,160,128}的叉積得出的16種模型在ImageNet精度和計算之間的權衡。當模型在α= 0.25時變得很小時,結果呈對數線性增長。
在這裏插入圖片描述
圖5顯示了使用寬度乘數α∈{1,0.75,0.5,0.25}和分辨率{224,192,160,128}的叉積製成的16個模型的ImageNet精度和參數數量之間的權衡。

表8將完整的MobileNet與原始的GoogleNet [30]和VGG16 [27]進行了比較。 MobileNet的準確度幾乎與VGG16一樣,但要小32倍,而計算強度卻要低27倍。它比GoogleNet更準確,但體積更小,計算量減少了2.5倍以上。

表9比較了減少的MobileNet的寬度乘數α= 0.5和降低的分辨率160×160。降低的MobileNet比AlexNet [19]好4%,而與AlexNet相比,縮小了45倍,而計算量卻減少了9.4倍。在大約相同的大小和少22倍的計算量下,它也比Squeezenet [12]好4%。
在這裏插入圖片描述

4.3. Fine Grained Recognition

我們在斯坦福狗數據集上訓練MobileNet進行細粒度識別[17]。我們擴展了[18]的方法,並從網上收集了比[18]更大甚至更嘈雜的訓練集。我們使用嘈雜的網絡數據來預訓練細粒度的狗識別模型,然後在斯坦福狗訓練集中對模型進行微調。 Stanford Dogs測試儀的結果在表10中。MobileNet可以大大減少[18]的計算量和尺寸,從而幾乎達到[18]的最新結果。

4.4. Large Scale Geolocalizaton

PlaNet [35]的任務是確定在哪裏拍攝照片作爲分類問題。該方法將地球劃分爲用作目標類別的地理單元網格,並在數百萬張帶有地理標籤的照片上訓練卷積神經網絡。 PlaNet已被證明可以成功地定位各種照片,並且勝過瞭解決同一任務的Im2GPS [6,7]。

我們使用MobileNet架構對同一數據重新訓練PlaNet。基於Inception V3體系結構的完整PlaNet模型[31]具有5200萬個參數和57.4億個多添加項。 MobileNet模型只有1300萬個參數,通常是300萬個主體,1000萬個最後一層,還有58萬個附加項。如標籤所示。如圖11所示,儘管MobileNet版本更加緊湊,但與PlaNet相比僅提供了稍微降低的性能。而且,它仍然大大優於Im2GPS。

4.5. Face Attributes

MobileNet的另一個用例是使用未知或深奧的培訓程序壓縮大型系統。在人臉屬性分類任務中,我們演示了MobileNet與蒸餾[9](一種用於深度網絡的知識轉移技術)之間的協同關係。我們力求減少具有7500萬個參數和16億個Mult-Adds的大型面部屬性分類器。分類器在類似於YFCC100M [32]的多屬性數據集上訓練。

我們使用MobileNet架構提取人臉屬性分類器。蒸餾[9]的工作原理是訓練分類器,以模擬更大模型的輸出,而不是真實標籤,因此可以從大型(可能無限)的未標記數據集中進行訓練。終端系統結合了蒸餾訓練的可擴展性和MobileNet的簡化參數設置,不僅不需要規範化(例如重量衰減和提前停止),而且還展示了增強的性能。從Tab可以明顯看出。 12基於MobileNet的分類器可以抵禦激進的模型收縮:它在屬性(平均AP)上實現了與內部相似的平均平均精度,而僅消耗了1%的Multi-Adds。

4.6. Object Detection

MobileNet也可以部署爲現代對象檢測系統中的有效基礎網絡。 我們根據贏得2016年COCO挑戰[10]的最新工作,報告經過訓練可對COCO數據進行對象檢測的MobileNet的結果。 在表13中,在Faster-RCNN [23]和SSD [21]框架下,將MobileNet與VGG和Inception V2 [13]進行了比較。 在我們的實驗中,使用300輸入分辨率(SSD 300)對SSD進行了評估,並將Faster-RCNN與300和600輸入分辨率(Faster-RCNN 300,Faster-RCNN 600)進行了比較。 Faster-RCNN模型每個圖像評估300個RPN建議框。 在不包括8k最小圖像的COCO線性訓練+ val上訓練模型,並在最小上進行評估。 對於這兩種框架,MobileNet都可以在計算複雜度和模型大小上實現一小部分的結果,與其他網絡相比。

在這裏插入圖片描述
在這裏插入圖片描述

4.7. Face Embeddings

在這裏插入圖片描述
FaceNet模型是最先進的人臉識別模型[25]。 它基於三重態損失構建面部嵌入。 爲了建立移動FaceNet模型,我們使用蒸餾來通過最小化FaceNet和MobileNet輸出在訓練數據上的平方差來進行訓練。 表14中列出了非常小的MobileNet模型的結果。

5 Conclusion

我們基於深度可分離卷積提出了一種稱爲MobileNets的新模型體系結構。我們調查了一些導致有效模型的重要設計決策。然後,我們演示瞭如何通過權衡合理的精度以減少大小和延遲來使用寬度乘數和分辨率乘數來構建更小,更快的MobileNet。然後,我們將不同的MobileNets與流行的模型進行了比較,這些模型展示了出色的尺寸,速度和準確性特徵。最後,我們演示了MobileNet在應用於各種任務時的有效性。爲了幫助採用和探索MobileNets的下一步,我們計劃在Tensor Flow中發佈模型。

pytorch程序:

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
 
        def conv_bn(inp, oup, stride):
            return nn.Sequential(
                nn.Conv2d(inp, oup, 3, stride, 1, bias=False),
                nn.BatchNorm2d(oup),
                nn.ReLU(inplace=True)
            )
 
        def conv_dw(inp, oup, stride):
            return nn.Sequential(
                nn.Conv2d(inp, inp, 3, stride, 1, groups=inp, bias=False),
                nn.BatchNorm2d(inp),
                nn.ReLU(inplace=True),
    
                nn.Conv2d(inp, oup, 1, 1, 0, bias=False),
                nn.BatchNorm2d(oup),
                nn.ReLU(inplace=True),
            )
 
        self.model = nn.Sequential(
            conv_bn(  3,  32, 2), 
            conv_dw( 32,  64, 1),
            conv_dw( 64, 128, 2),
            conv_dw(128, 128, 1),
            conv_dw(128, 256, 2),
            conv_dw(256, 256, 1),
            conv_dw(256, 512, 2),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 1024, 2),
            conv_dw(1024, 1024, 1),
            nn.AvgPool2d(7),
        )
        self.fc = nn.Linear(1024, 1000)
 
    def forward(self, x):
        x = self.model(x)
        x = x.view(-1, 1024)
        x = self.fc(x)
        return x

程序部分轉自:https://blog.csdn.net/qq_21997625/article/details/89513025

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