結構雖簡單,但效能強悍——3個小型卷積神經網路簡介
摘要: 本文介紹了三種小型結構的卷積神經網路,在降低計算複雜度的前提下,其效能也不錯。此外,無需使用高效能運算機就可以進行模擬,適合初學者模擬體驗。
人工智慧、深度學習太火了,火到哪一個領域都有討論的聲音。稍微對深度學習有所瞭解的人們,尤其是對於計算機視覺領域有所涉獵的人們,當一聽到深度學習、卷積神經網路時,腦海裡不由得自動腦補這樣一幅畫面——一臺滿和負載嗡嗡響的GPU伺服器、一臺滿屏程式碼不斷跳躍的螢幕以及坐在電腦前不斷嘗試不同卷積神經網路模型的科研人員。這幅場景在各個實驗室不斷的重複出現,那是不是玩人工智慧和深度學習一定都是這樣呢?答案是不一定。雖然大多數卷積神經網路都是由於其大型結構而取得非常好的效能,但是這些模型對計算能力有比較高的要求。有些人員只想嘗試應用下卷積神經網路、體驗下效果,這個時候難道也得配一臺高效能運算的伺服器嗎?如果是這種情況的話,本文將告訴你三種卷積神經網路,這些卷積神經網路在你老的桌上型電腦(哪怕是沒有GPU)、甚至是你的手機上都能夠模擬執行,為你節省一大筆開銷,是不是很期待?下面一窺這三種卷積神經網路模型的結構及其效能分析。
MobileNet
MobileNet使用深度可分離卷積(depthwise separable Convolutions),這種卷積塊結構首先由Xception引入。深度可分離卷積由兩部分組成,分別為深度卷積(depthwise convolution)和逐點卷積(pointwise convolution)。
假設二維特徵圖(feature map)進行標準卷積操作,輸入特徵圖經過卷積操作後進行輸出,如圖所示,其計算複雜度為D2f∗M∗N∗D2kDf2∗M∗N∗Dk2。其中輸入特徵圖的維度為DfDf,MM和NN分別表示輸入通道數以及輸出通道數,DkDk是卷積核大小。
深度卷積在每個輸入通道上分別對映一個卷積。因此,其輸出通道數與輸入通道數相同,其計算成本是Df∗M∗DkDf∗M∗Dk。
最後的操作是逐點卷積。它是1×1核心大小的卷積,它將由深度卷積建立的特徵簡單地結合起來,其計算成本是M∗N∗DfM∗N∗Df。
深度可分離卷積的計算代價是由深度卷積和逐點卷積兩部分代價組成。與一般的卷積操作相比,深度可分離卷積降低了原始計算複雜度的(1/N+1/D2k)(1/N+1/Dk2)。假設卷積核大小為3x3,則模擬運算量降低了8倍。
MobileNet同時也提供了兩個引數以允許進一步減少運算量。其中一個引數為瘦身乘子(width multiplier)其取值範圍為0~1,用來減少網路的通道數,每一層減少alpha∗Nalpha∗N個通道,該引數能被用來權衡模型效能與模擬等待時間。另外一個引數為解析度乘子(resolution multiplier),該引數將縮放輸入影像的尺寸,尺寸範圍為224~128之間。由於MobileNet使用全域性平均池化代替全連線,你可以使用224x22$影像訓練該網路,並將訓練好的的網路應用於128x128大小的影像上!
ShuffleNet
ShuffleNet原創了三種混洗單元(Shuffle unit),如下圖所示每個單元都是由逐群卷積(pointwise group convolution)和通道混洗(channel shuffle)組成。
一個組卷積包含幾個卷積,每一組獲取部分輸入通道。下圖是一個組卷積過程,有3組,每一組有3個輸入通道。
這種結構極大的降低了計算代價。假設,如果有4個輸入通道和8個輸出通道,從中選擇2組,每組有2個輸入通道和4個輸出通道。當只有一組時,其計算代價為D2f∗D2k∗4∗8Df2∗Dk2∗4∗8;當有2組時,其計算代價為D2f∗D2k∗2∗4Df2∗Dk2∗2∗4或者D2f∗D2k∗4∗4Df2∗Dk2∗4∗4。至少是減少了2倍的計算代價。在作者的文章中,當組數為8時取得了最好的結果,因此降低計算量是非常重要的。
EffNet
EffNet為空間可分離卷積(spatial separable convolutions),這與MobileNet的深度可分離卷積非常相似。
如圖所示,可分離深度卷積以藍色矩形塊表示,它是由一個行核心(1x3)、可分類池化以及列核心(3x1)的深度卷積組成。
正常深度為3x3的卷積核的計算代價為32∗D2f∗M32∗Df2∗M。第一個深度為1x3卷積核的計算代價為3∗D2f∗M3∗Df2∗M,可分離池化操作將特徵圖高度減半,具有邊際成本。第二個深度為3x1的卷積核的計算代價為3∗D2f/2∗M3∗Df2/2∗M。這樣一來,總的計算代價為1.5∗(3∗D2f∗M)1.5∗(3∗Df2∗M),是原先的一半!
此外,EffNet相較於MobileNet和ShuffleNet的一個優化操作是在開始時沒有“標準卷積”。
MobileNet和ShuffleNet都避免更換第一層,因為它們覺得該層的計算量已經很小了。雖然我尊重這種說法,但我認為每一個優化都是重要的。在優化了網路的其它層之後,第一層適當地變大。實驗結果表明,用EffNet塊替換第一層後,降低了每個層計算量的30%。
總結
MobileNet、ShuffleNet以及EffNet這三種卷積神經網路結構都是通過優化計算量構想出來的。每個都用自己的版本取代了經典卷積結構。
MobileNet(Github)深度可分離卷積使用一個深度卷積與逐點卷積結構,此外,引入了兩超引數,分別為瘦身乘子和解析度乘子,都是用來減少特徵對映空間的維數。
ShuffleNet(Github)每組採用逐點卷積,為了結合每個組所產生的特徵,引入了混洗層(shuffle layer)。
EffNet(Github)使用空間可分離卷積,只是一個簡單的深度卷積被分為沿著X軸和Y軸,二者中間有一個池化層。
作者資訊
Arthur Douillard,深度學習工程師
本文由阿里云云棲社群組織翻譯。
文章原標題《3 Small But Powerful Convolutional Networks》,譯者:海棠,審校:Uncle_LLD。
本文為雲棲社群原創內容,未經允許不得轉載。
相關文章
- 用Keras框架構建一個簡單的卷積神經網路!Keras框架架構卷積神經網路
- CNN-卷積神經網路簡單入門(2)CNN卷積神經網路
- 卷積神經網路-3卷積神經網路
- 卷積神經網路卷積神經網路
- 直白介紹卷積神經網路(CNN)卷積神經網路CNN
- 簡單的圖神經網路介紹神經網路
- 卷積神經網路概述卷積神經網路
- 解密卷積神經網路!解密卷積神經網路
- 5.2.1 卷積神經網路卷積神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 卷積神經網路-AlexNet卷積神經網路
- 卷積神經網路-1卷積神經網路
- 卷積神經網路-2卷積神經網路
- 卷積網路雖動人,膠囊網路更傳“神”卷積
- 卷積神經網路知識點總結卷積神經網路
- 卷積神經網路(CNN)介紹與實踐卷積神經網路CNN
- 卷積神經網路四種卷積型別卷積神經網路型別
- 使用Pytorch和卷積神經網路進行簡單的數字識別(MNIST)PyTorch卷積神經網路
- 全卷積神經網路FCN卷積神經網路
- 深度剖析卷積神經網路卷積神經網路
- 神經網路之卷積篇:詳解單層卷積網路(One layer of a convolutional network)神經網路卷積
- 谷歌公司提出的卷積神經網路GoogLeNet 系列作品簡述谷歌卷積神經網路Go
- 經典卷積神經網路結構——LeNet-5、AlexNet、VGG-16卷積神經網路
- 神經網路 | 基於MATLAB 深度學習工具實現簡單的數字分類問題(卷積神經網路)神經網路Matlab深度學習卷積
- 第四周:卷積神經網路 part 3卷積神經網路
- 一句話總結卷積神經網路卷積神經網路
- 卷積神經網路鼻祖LeNet網路分析卷積神經網路
- CNN神經網路之卷積操作CNN神經網路卷積
- 卷積神經網路 part2卷積神經網路
- 14 卷積神經網路(進階)卷積神經網路
- 卷積神經網路(CNN)詳解卷積神經網路CNN
- 何為神經網路卷積層?神經網路卷積
- Tensorflow-卷積神經網路CNN卷積神經網路CNN
- MATLAB神經網路工具箱(簡單操作介紹)Matlab神經網路
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 吳恩達《卷積神經網路》課程筆記(1)– 卷積神經網路基礎吳恩達卷積神經網路筆記
- 簡單的神經網路測試神經網路
- 最簡單的人工神經網路神經網路