天天看點

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

摘要

我們提出了一類有效的模型稱為移動和嵌入式視覺應用的移動網絡。MobileNets是基于流線型架構,使用深度可分卷積來建立輕量級深度神經網絡。我們介紹了兩個簡單的全局超參數,它們可以有效地在延遲和準确性之間進行權衡。這些超參數允許模型建構者根據問題的限制為其應用程式選擇适當大小的模型。我們在資源和精度權衡方面進行了大量的實驗,并與其他流行的ImageNet分類模型相比,顯示了較強的性能。然後,我們示範了MobileNets在廣泛的應用和用例中的有效性,包括目标檢測、細粒度分類、人臉屬性和大規模地理定位。

1、介紹

自從AlexNet通過赢得ImageNet挑戰賽:ILSVRC 2012普及了深度卷積神經網絡以來,卷積神經網絡在計算機視覺中變得無處不在。為了獲得更高的精度,一般的趨勢是建構更深更複雜的網絡。然而,這些提高準确性的進步并不一定使網絡在規模和速度方面更有效率。在機器人、自動駕駛汽車和增強現實等許多現實應用中,識别任務需要在一個計算能力有限的平台上及時執行。

本文描述了一種高效的網絡架構和兩個超參數,以便建構非常小的、低延遲的模型,可以很容易地滿足移動和嵌入式視覺應用程式的設計要求。第2節回顧了以前在建構小模型方面的工作。第3節描述了MobileNet架構和兩個超參數寬度乘法器和分辨率乘法器,以定義更小和更有效的MobileNet。第4節描述了在ImageNet上的實驗以及各種不同的應用程式和用例。第5節以總結和結論結束。

2、先前的工作

在最近的文獻中,人們對建構小型而高效的神經網絡的興趣越來越大。許多不同的方法可以大緻分為壓縮預訓練網絡和直接訓練小型網絡。本文提出了一類網絡體系結構,它允許模型開發人員為其應用程式選擇與資源限制(延遲、大小)比對的小型網絡。MobileNets主要關注于優化延遲,但也産生小的網絡。許多關于小型網絡的論文隻關注規模而不考慮速度。mobilenet最初是由[26]中引入的深度可分卷積建構的,随後在Inception模型[13]中使用,以減少前幾層的計算。扁平網絡[16]建構了一個完全因數分解卷積的網絡,并展示了高度因數分解網絡的潛力。與本文無關,分解網絡[34]引入了一個類似的分解卷積以及拓撲連接配接的使用。随後,Xception網絡[3]示範了如何向上擴充深度可分離的過濾器,以執行Inception V3網絡。另一個小型網絡是Squeezenet[12],它使用瓶頸方法來設計一個非常小的網絡。其他簡化計算網絡包括結構變換網絡[28]和油炸卷積網絡[37]。

另一種獲得小型網絡的方法是縮小、分解或壓縮預先訓練好的網絡。文獻中提出了基于産品量化[36]、哈希[2]、剪枝、矢量量化和霍夫曼編碼[5]的壓縮方法。此外,還提出了各種因數分解方法來加速預先訓練好的網絡[14,20]。另一種訓練小網絡的方法是蒸餾[9],它使用一個更大的網絡來教一個更小的網絡。它是對我們的方法的補充,并在第4節中介紹了我們的一些用例。另一種新興的方法是低比特網絡[4,22,11]。

3、MobleNet結構

在這一節,我們首先描述的核心層,MobileNet是建立在其上的深度可分的過濾器。然後描述了MobileNet網絡結構,并對兩個模型進行了總結,即縮小超參數乘法器和分辨率乘法器。

3.1、切除分離卷積

MobileNet模型是基于深度可分卷積的,深度可分卷積是一種分解卷積的形式,它将标準卷積分解為深度卷積和1×1卷積,稱為點卷積。對于MobileNets,深度卷積對每個輸入通道應用一個單獨的濾波器。點态卷積然後應用1×1的卷積來結合輸出深度卷積。一個标準的卷積在一個步驟中過濾并将輸入組合成一組新的輸出。深度可分離卷積将其分為兩層,一層用于濾波,另一層用于合并。這種因式分解的效果是大大減少了計算量和模型大小。圖2展示了标準卷積2(a)是如何分解為深度卷積2(b)和1×1點卷積2(c)的。

标準的卷積層将作為輸入DF×DF×M功能映射F和産生一個DF×DF×N特性圖G, DF是輸入特征圖的高度和寬度,M是輸入通道的數量(輸入深度),DG是一個正方形的空間寬度和高度輸出特性圖和N是輸出通道輸出(深度)的數量。标準卷積層由大小為DK×DK×M×N的卷積核K參數化,其中DK為假設為平方的核的空間維數,M為輸入通道數,N為前面定義的輸出通道數。假設stride為1,padding為1,計算标準卷積的輸出特征圖為:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

标準卷積的計算成本為:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

其中,計算代價乘上輸入通道M的數量,輸出通道N的數量,核大小Dk×Dk, feature map大小DF×DF。MobileNet模型解決了這些術語及其互相作用。首先,它使用深度可分卷積來打破輸出通道數量和核心大小之間的互動。标準卷積運算的作用是基于卷積核對特征進行濾波,并結合特征得到新的表示。濾波群組合步驟可分為兩個步驟,通過使用分解卷積稱為深度可分卷積,以大幅降低計算成本。深度可分卷積由兩層構成:深度卷積和點卷積。我們使用深度卷積為每個輸入通道應用一個過濾器(輸入深度)。點态卷積,一個簡單的1×1卷積,然後用來建立一個線性組合的輸出的深度層。MobileNets對兩個層都使用batchnorm和ReLU非線性。每個輸入通道一個濾波器的深度卷積(輸入深度)可表示為:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

其中K^為大小為DK×DK×M的深度卷積核,其中K^中的第M個濾波器應用于F中的第M個信道,得到濾波後的輸出特征映射G^的第M個信道。深度卷積的計算代價為:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

深度卷積相對于标準卷積是非常有效的。但是,它隻過濾輸入通道,而不将它們組合起來建立新特性。是以,需要通過1×1的卷積來計算深度卷積輸出的線性組合,以生成這些新特性。深度卷積和1×1(點态)卷積的組合稱為深度可分離卷積,最早是在[26]中引入的。深度可分卷積的代價:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

它是深度卷積和1×1點卷積的和。将卷積表示為濾波群組合的兩步過程,計算量減少為:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

MobileNet使用3×3深度可分卷積,它使用的計算量是标準卷積的8到9倍,僅在精度上略有降低,如第4節所示。空間次元上的額外因式分解,并沒有節省很多額外的計算,因為深度卷積的計算量很少。

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

3.2、卷積結構和訓練

MobileNet結構是建立在前一節提到的深度可分卷積,除了第一層是一個完整的卷積。通過用如此簡單的術語定義網絡,我們可以很容易地探索網絡拓撲以找到一個好的網絡。MobileNet體系結構定義在表1中。除了最後的全連接配接層不存在非線性,并輸入softmax層進行分類之外,所有層都遵循batchnorm和ReLU非線性。圖3對比了一層與正則卷積、batchnorm和ReLU的卷積後的深度卷積、1×1點卷積的分解層和每一層卷積後的batchnorm和ReLU的非線性關系。下行采樣在深度卷積和第一層卷積中都使用了strided convolution。最終的平均池将空間分辨率降低到全連接配接層之前的1。将深度卷積和點卷積計算為獨立的層,MobileNet有28層。僅僅用少量的多添加來定義網絡是不夠的。確定這些操作能夠有效地實作也很重要。例如,非結構化的稀疏矩陣操作通常不會比密集矩陣操作快,直到非常高的稀疏程度。我們的模型結構将幾乎所有的計算都放在密集的1×1個卷積中。這可以通過高度優化的通用矩陣乘法(GEMM)函數來實作。通常,卷積是由GEMM實作的,但是需要在記憶體中進行名為im2col的初始重新排序才能将其映射到GEMM。例如,在流行的Caffe包[15]中使用了這種方法。1×1卷積不需要在記憶體中重新排序,可以直接使用GEMM實作,GEMM是最優化的數值線性代數算法之一。MobileNet将95%的計算時間花費在1×1個卷積上,其中75%的參數如表2所示。幾乎所有的附加參數都在全連接配接層中。MobileNet模型在TensorFlow[1]中使用RMSprop[33]進行訓練,其異步梯度下降類似于Inception V3[31]。然而,與訓練大型模型相反,我們使用較少的正則化和資料擴充技術,因為小型模型的過拟合問題較少。當訓練MobileNets時,我們不使用側頭或标簽平滑,并通過限制在大型初始訓練[31]中使用的小型作物的大小來減少圖像失真的數量。此外,我們發現在深度方向的濾波器上放很少或沒有權值衰減(l2正則化)是很重要的,因為它們的參數很少。對于下一節中的ImageNet基準測試,所有模型都使用相同的訓練參數進行訓練,而不考慮模型的大小。

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

3.3、寬度倍增器:更薄的模型

盡管基本的MobileNet體系結構已經很小而且延遲很低,但是很多時候一個特定的用例或應用程式可能需要模型更小和更快。為了建構這些較小和較昂貴的模型計算我們介紹一個非常簡單的參數α稱為寬度乘數。寬度乘數α的作用是在每一層薄網絡統一。對于一個給定的乘數α層和寬度的輸入通道數M變成αM和輸出通道的數目N變成αN。切除分離卷積的計算成本與寬度乘數α是:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

α2 (0;1]典型設定為1、0.75、0.5、0.25。α= 1基線MobileNet和α< 1 MobileNets減少。寬度乘數降低計算成本的影響,參數的數量大約α2平方。寬度乘法器可以應用于任何模型結構,以定義一個新的更小的模型,具有合理的準确性、延遲和大小權衡。它用于定義一個新的簡化結構,需要從零開始訓練。

3.4、分辨率倍增器:減少表示

第二個hyper-parameter減少神經網絡的計算成本是一項決議乘數ρ。我們将其應用于輸入圖像,每一層的内部表示随後被相同的乘法器縮減。在實踐中我們隐式地設定ρ通過設定輸入分辨率。我們現在可以表達我們的網絡的核心層次的計算成本與寬度切除可分離旋轉乘數乘數ρα和解決:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

,通常隐式設定,是以網絡的輸入分辨率為224、192、160或128。ρ= 1基線MobileNet和ρ< 1計算MobileNets減少。決議乘數的影響由ρ2降低計算成本。作為一個例子,我們可以看看一個典型的層在MobileNet和看到如何深度可分卷積,寬度乘子和分辨率乘子降低成本和參數。表3顯示了一個層的計算和參數的數量,因為架構收縮方法依次應用于該層。第一行顯示全卷積層的多加和參數,輸入feature map大小為14×14×512,核心K大小為3×3×512×512。我們将在下一節詳細讨論資源和準确性之間的權衡。

4、實驗

在本節中,我們首先研究深度卷積的影響,以及通過減少網絡寬度而不是層數來進行收縮的選擇。然後,我們展示了基于兩個超參數:寬度乘法器和分辨率乘法器減少網絡的權衡,并将結果與一些流行的模型進行比較。然後,我們調查了MobileNets應用于許多不同的應用程式。

4.1、模型的選擇

首先,我們展示了深度可分卷積的MobileNet與全卷積模型的比較結果。在表4中我們可以看到,使用深度可分卷積與全卷積相比,在ImageNet上隻降低了1%的精度,這在多加和參數上節省了很多。接下來,我們将展示使用寬度倍增器的較薄模型與使用較少層的較淺模型的比較結果。為了使MobileNet更淺,删除了表1中的5層可分離濾波器,其特征尺寸為14×14×512。表5顯示,在相似的計算和參數數量下,使MobileNets變薄比變淺好3%。

4.2、模型收縮參數

表6顯示了精度,計算和尺寸縮小MobileNet架構的權衡寬度乘數α。精度下降平穩,直到架構是由25α=太小。表7顯示了通過訓練具有降低輸入分辨率的MobileNets,不同分辨率乘子的準确性、計算和大小權衡。精度随着分辨率的提高而平穩下降。圖4顯示了之間的權衡ImageNet 16模型的準确性和計算由寬乘數α2 f1的叉積;0:75;0:5;0:25g和決議f224;192;160;128 g。結果與跳對數線性模型變得非常圖5顯示之間的權衡ImageNet準确性和參數的數量為16模型由寬乘數α2 f1的叉積;0:75;0:5;0:25g和決議f224;192;160;128 g。表8将完整的MobileNet與原始的GoogleNet[30]和VGG16[27]進行了比較。MobileNet幾乎與VGG16一樣精确,但它比VGG16小32倍,計算強度低27倍。它比GoogleNet更精确,但體積更小,計算量是後者的2.5倍。表9比較與寬度減少MobileNet乘數α= 0:5和降低分辨率160×160。簡化的MobileNet比AlexNet[19]好4%,同時比AlexNet小45倍和少9:4倍的計算。在相同的尺寸和22倍的計算量下,它也比Squeezenet[12]好4%。

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

4.3、細粒度識别

我們訓練MobileNet在斯坦福狗資料集[17]上進行細粒度識别。我們擴充了[18]的方法,并從web上收集了比[18]更大但更嘈雜的訓練集。我們使用帶噪聲的web資料預訓練細粒度的犬類識别模型,然後在Stanford Dogs training set上對模型進行微調。Stanford Dogs test set的結果如表10所示。MobileNet幾乎可以實作[18]的最先進的結果,大大減少了計算和大小。

4.4、大尺度全局化

行星[35]把确定照片拍攝地點的任務作為一個分類問題。該方法将地球劃分成網格狀的地理單元,這些單元作為目标類,并在數百萬張帶有地理标記的照片上訓練一個卷積神經網絡。PlaNet已經被證明能夠成功地定位大量的照片,并且在處理相同任務方面表現得比Im2GPS更出色[6,7]。我們在相同的資料上使用MobileNet架構對PlaNet進行再教育訓練。而基于Inception V3架構[31]的完整行星模型有5200萬個參數和57.4億個mult-add。MobileNet模型隻有1300萬個參數,通常是300萬個參數用于車身,1000萬個參數用于最後一層,58萬個多附加參數。如表11所示,MobileNet版本雖然更緊湊,但與PlaNet相比,其性能僅略有下降。此外,它的表現仍然遠遠好于Im2GPS。

4.5、人臉屬性

MobileNet的另一個用例是壓縮大型系統,有未知或深奧的教育訓練程式。在人臉屬性分類任務中,我們展示了MobileNet與蒸餾之間的協同關系,這是一種深度網絡的知識傳遞技術。我們尋求通過7500萬的參數和1600萬的mult補充來減少一個大的面部屬性分類器。分類器在一個與YFCC100M[32]相似的多屬性資料集上進行了訓練。我們使用MobileNet架構進行人臉屬性分類器。通過訓練分類器來模拟更大的模型2的輸出,而不是地面真理标簽,是以可以通過教育訓練分類器來模拟大模型的輸出,進而使從大型(以及潛在的無限)未标記的資料集進行教育訓練。結合蒸餾訓練的可擴充性和MobileNet的無偏性參數化,最終系統不僅不需要正規化(例如重量衰變和早期停止),而且還示範了增強的性能。從表12中可以看出,mobilenetbased的分類器對攻擊性模型的收縮很有彈性:它在跨屬性(指AP)中達到了類似的平均精度(指AP),但僅消耗1%的多值。

4.6、目标檢測

MobileNet也可以作為一個有效的基礎網絡部署在現代目标檢測系統。我們報告的結果,MobileNet訓練的目标檢測基于COCO資料基于最近的工作,赢得了2016年COCO挑戰[10]。在表13中,MobileNet在fast - rcnn和SSD架構下與VGG和Inception V2進行了比較。在我們的實驗中,SSD被評估為300輸入分辨率(SSD 300), fast - rcnn被評估為300和600輸入分辨率(FasterRCNN 300, fast - rcnn 600)。快速rcnn模型對每個圖像評估300個RPN建議框。模型在COCO訓練+val上進行訓練,排除8k minival圖像,在minival上進行評估。對于這兩個架構,MobileNet實作了與其他網絡的可比較的結果,隻有一小部分的計算複雜性和模型大小。

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

4.7、人臉嵌入

5、結論

繼續閱讀