1. 程式人生 > >【深度學習】卷積層提速Factorized Convolutional Neural Networks

【深度學習】卷積層提速Factorized Convolutional Neural Networks

Wang, Min, Baoyuan Liu, and Hassan Foroosh. “Factorized Convolutional Neural Networks.” arXiv preprint arXiv:1608.04337 (2016).

本文著重對深度網路中的卷積層進行優化,獨特之處有三:
- 可以直接訓練。不需要先訓練原始模型,再使用稀疏化、壓縮位元數等方式進行壓縮。
- 保持了卷積層原有輸入輸出,很容易替換已經設計好的網路。
- 實現簡單,可以由經典卷積層組合得到。

使用該方法設計的分類網路,精度與GoogLeNet1, ResNet-182, VGG-163

相當,模型大小僅2.8M乘法次數470×109只有AlexNet4的65%

標準卷積層

先來複習一下卷積的運算過程。標準卷積將3D卷積核(橙色)放置在輸入資料I(左側)上,對位相乘得到輸出O(右側)的一個畫素(藍色)。

這裡寫圖片描述

卷積核在一個通道上的尺寸為k2,輸入、輸出通道數分別為m,n

當下流行的網路中,卷積層的主要作用是提取特徵,往往會保持影象尺寸不變。縮小影象的步驟一般由pooling層實現。為書寫簡潔,這裡認為輸入輸出的尺寸相同,都是h×w

計算一個輸出畫素所需乘法次數為:

k2×m

總體乘法次數為:

k2×m×n×h×w

m,n體現了對於特徵的挖掘,取值較大,常為幾百;相反,k

一般在1~5左右,很少超過7,高層次特徵通過多個小尺寸卷積層實現。

優化的卷積層

本文介紹了三種卷積層的優化變種。

使用基層(bases)

設定核尺寸k2,輸入/輸出通道數m,n,這個方法把卷積分成兩個步驟。
這裡寫圖片描述

在第一個步驟中,輸入的每一通道單獨運算。在同樣尺寸卷積核的作用下,每一通道計算得到b層結果。m通道資料變為m×b通道。中間結果的每一通道稱為一個基層basis
在第二個步驟中,各個通道進行合併,但使用的卷積核尺寸為1。

乘法數量為

k2×b×m×h×w+b×m×n×h×w=(k2+n)×b×m×h×w

與傳統卷積所需的乘法次數比例為:

k2b+nbk2n
注意這裡的大頭是n
,只要b<k2,即可用較少的計算兩實現較大核的卷積層。

提速示例

n k b rate
128 3 1 11.9%
128 3 5 59.5%
128 3 8 95.1%
128 5 8 38.3%

如果原有卷積核k=1,這種方法無法提速。

重疊(stacked)的基層

對於輸入輸出通道數相同的情況(m=n),可以進一步構造如下網路。
這裡寫圖片描述
使用b=1的帶基層的卷積層(圓角矩形),利用上述Residual方式,將運算重複b次。

對於相同的b,n取值,此網路乘法數量和前一個變種相同。但由於原來的平行計算改為序列(相當於增加深度),同時引入餘量結構,此種網路的效能更佳。

拓撲連線

依然是m=n的情況,另一種優化思路是:減少輸出通道和輸入通道的連線數量。即,輸出通道不再和所有輸入通道有關,只和相鄰的輸入通道有關。

關於“相鄰”,最直觀的想法是,定義一個鄰域大小c,每一個輸出通道只和相鄰的c個輸入通道有關。
這裡寫圖片描述

更巧妙的方法是,對輸入通道數進行因式分解:m=i=1ndi

把原來的2+1維輸入資料看做2+n維,在每一維定義一個鄰域大小ci。對於輸出的一個通道,只和其在n維空間中相鄰的輸入通道有關。
這裡寫圖片描述

例子:30維分解為d1=5,d2=6,第13個輸出通道,在2維空間中座標為[3,3]。鄰域大小c3=1,c2=1。和該通道有關的範圍為[2,3,4;3],對應的輸入通道為[8,13,18]

這個變種同樣適用於k=1的核。

實驗

標準網路

選擇ImageNet分類問題為實驗物件。首先使用標準卷積層設計三個標準網路A,B,A’作為參照。基本結構如下:
這裡寫圖片描述

白色為卷積,綠色為pooling。第一階段是一個核較大的卷積,最後一階段是average pooling,直接生成1000類分類結果。
中間四大階段由max pooling和三個卷積層構成,其中後兩個卷積層(粗線)輸入/輸出通道數相同,適於本文所述方法優化。

A網路的卷積核尺寸(問號處)為2,每兩個卷積層新增一個Residual結構;B網路卷積核尺寸為3,每個卷積層新增一個Residual結構。

對於不太深的網路,Residual結構對精度提升不大,主要作用是加速訓練過程。

A’網路和A相同,只是輸入為164×164。

優化網路:基層

網路C,E由A演變而來,網路D,F由B演變來,其top-1精度以及計算複雜度如下:

網路 優化 k b 精度 複雜度
A 2 - 59% 1
B 3 - 62.1% 2.25
C 基層 3 4 61.9% ~1
D 基層 3 2 60.3% ~0.5
E 重疊基層 3 2 63.1% ~0.5
F 重疊基層 5 2 63.15% ~0.5

使用重疊基層的卷積網路F,能夠達到甚至超過原有網路B,計算複雜度不到原來25%

優化網路:拓撲連結

網路G,H由A’演變而來。首先把A’網路的卷積層數量加倍:
這裡寫圖片描述

將粗線所示卷積層的輸入/輸出通道進行分解,各層的因數di,鄰域大小ci,top-1精度以及計算複雜度如下:

網路 stage 1 stage 2 stage 3 精度 複雜度
A’ - - - 54.2% 1
G 8*16 - 4*8 16*16 - 8*8 16*32 - 8*16 53.6% 0.5
H 4*8*4 - 2*5*3 8*8*4 - 4*5*3 8*8*8 - 4*5*6 52.9% 0.47

達到相同效能,拓撲連線計算複雜度約為50%

優化網路:複合

以A網路為基礎,把兩種優化方法組合,得到網路J,K:

網路 優化 精度 複雜度
A - 59% 1
J 卷積層加倍, 2D拓撲 58.9% 0.5
K 卷積層加倍, 2D拓撲,層疊基準 60.1% 0.25

只有25%計算複雜度,即超過原先網路。

優化網路:最終結果

綜合前述實驗結果,以網路E為基礎,給出了ImageNet上分類問題的最佳網路L
這裡寫圖片描述

採用重疊的基層思想。每一個粗線白色模組的b=1,兩個不同輸出通道數的模組為一組,重複6次。和A,E一樣,每兩個卷積層新增一個Residual結構。

與其他經典模型的比較結果如下:
這裡寫圖片描述

  1. Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov,
    Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich. Going deeper with convolutions.
    arXiv preprint arXiv:1409.4842, 2014.
  2. Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image
    recognition. arXiv preprint arXiv:1512.03385, 2015.
  3. K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image
    recognition. CoRR, abs/1409.1556, 2014.
  4. Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton. Imagenet classification with deep
    convolutional neural networks. In Advances in neural information processing systems, pages
    1097–1105, 2012.