最近放出來了一篇CVPR2019論文,文章提出了一種新的高效卷積

方式:HetConv,在CIFAR10、ImageNet等數據集超過了標準卷積以及DW+PW的高效卷積組合形式,取得了更高的分類性能。

論文鏈接:arxiv.org/abs/1903.0412

【Motivation】

目前提高CNN性能的主要手段有:

  1. 增加模型寬度和深度。這樣帶來的代價是計算量會變得非常大。
  2. 設計更高效的卷積結構。比如depthwise conv、pointwise conv、groupwise conv等。這一類卷積結構的特點是計算量相比標準卷積小,代替原始的標準卷積方式可以較少一定的計算量,同時保持較高的精度。
  3. 為追求更快更小的網路結構,用剪枝(model pruning)的手段進行模型壓縮(model compression),包括connection pruning、filter pruning、quantization等方式。模型剪枝的方式在某些方面很有效,缺點是得到一個好的模型通常需要大量的訓練時間。訓練-剪枝-再訓練(fine-tune)的方式帶來的計算資源和時間成本非常大,且最後不一定能得到令人滿意的壓縮模型。

目前來看,性價比最高的就是採用高效的輕量級網路,代表性的有:Xception、MobileNet系列、ShuffleNet系列。為了取得更高的性能,必須要精心設計網路結構,實現accuracy-speed trade-off。

設計一個新的有效的網路結構不是一件容易的事,需要不斷的試錯、總結,文章從卷積方式入手,提出了一種新的卷積方式來代替原來的卷積,取得了更好的實驗效果。

像標準卷積、DW、PW、GW式的卷積的一個共同點就是所有的卷積核大小一致,稱為「Homogeneous Convolution」,比如3x3x256的conv2d,每個卷積核的尺寸都是3x3大小。

文章提出的「Heterogeneous Convolution」,顧名思義,就是卷積核的尺寸大小不一。比如在有256個通道的卷積核中,一部分kernel size為1,另一部分kernel size為3。

HetConv帶來的好處是可以無縫替換VGG、ResNet、MobileNet等結構的卷積形式,這種新的卷積形式,可以向標準卷積一樣,從新開始訓練,得到比pruning更好的性能效果。文章還指出,HetConv與標準卷積一樣,實現latency zero。

【Method】

HetConvolution的方式很簡單,就是將一部分卷積核尺寸設置為K,另一部分設置為1。更直觀的可以看下圖。

計算量的分析:

【標準卷積】計算量: FL_S=D_o 	imes D_o 	imes M	imes N 	imes K 	imes K
ightarrow(1)

其中 D_o 是卷積輸出特徵圖的尺寸,M是輸入通道數,N是輸出通道數,K是卷積核尺寸。

HetConvolution:假設輸入通道數為M,有比例為P的卷積核尺寸為K,這樣的kernel數為 frac{M}{p} ,其他都是1 	imes 1大小,這樣的kernel數為 (1-frac{1}{P})cdot M

那麼 K 	imes K 卷積的計算量為:

FL_K=(D_o 	imes D_o 	imes M 	imes N 	imes K 	imes K)/P

1 	imes 1 卷積的計算量為:

FL_1=(D_o 	imes D_o 	imes N)	imes (1-frac{1}{P}) 	imes M

因此總的計算量為:

FL_{HC} = FL_K + FL_1
ightarrow(2)

HetConvolution與標準卷積的計算量之比:

R_{HetConv} = frac{FL_k+FL_1}{FL_S} = frac{1}{P}+frac{1-frac{1}{p}}{K^2}
ightarrow(3)

當P=1時,HetConv變為標準卷積,計算量之比為1。

【DW+PW】計算量: FL_{MobNet} = D_o 	imes D_o 	imes M 	imes K 	imes K + D_o 	imes D_o 	imes M 	imes N
ightarrow(4) (原文有誤)

DW+PW與標準卷積的計算量之比:

R_{MobNet} = frac{FL_{MobNet}}{FL_S} = frac{D_o 	imes D_o 	imes M 	imes K 	imes K + D_o 	imes D_o 	imes M 	imes N}{D_o 	imes D_o 	imes M	imes N 	imes K 	imes K}=frac{1}{N}+frac{1}{K^2}
ightarrow(5)

由公式(3)可知,增大P,HetConv變為標準卷積,控制P的大小,可以控制accuracy和FLOPs。

極端情況下,P=M的時候,公式(3)和(5):

frac{1}{M}+frac{1-frac{1}{M}}{K^2} <frac{1}{M}+frac{1}{K^2}
ightarrow(6)

因此,MobileNet比HetConvolution計算量更大。

【GW+PW】計算量: FL_G =(D_o 	imes D_o 	imes M 	imes N 	imes K 	imes K)/G+ D_o 	imes D_o 	imes M 	imes N 
ightarrow(7)

與標準卷積的計算量之比:

R_{Group} = frac{FL_G}{FL_S} = frac{1}{G} + frac{1}{K^2} 
ightarrow(8)

由公式(3)和(8)可知,P=G的時候:

frac{1}{P}+frac{1-frac{1}{p}}{K^2} < frac{1}{P} + frac{1}{K^2}
ightarrow(9)

HetConv的計算量比GW+PW更少。

【Experiments】

作者選取了VGG、ResNet、MobileNet等網路,通過在CIFAR-10、ImageNet數據集上的實驗驗證HetConv的有效性。

【總結】

文章提出了一種新的卷積方式,通過計算FLOPs和實驗證明,HetConv可以在更少計算量的上面取得更高的精度,文章也和model conpression進行了對比,從實驗結果來看,效果也挺明顯。HetConv可以和現有的網路結構結合,操作簡單方便。

對於HeConv的實用性方面可能還需要時間來證明,畢竟理論計算量和實際情況還是有些差距,另外作者沒有在detection、segmentation任務做實驗,但從分類任務來說,缺少一定的可信度。希望儘快有開源實現。


推薦閱讀:
相关文章