[CVPR2019]:最新高效卷積方式HetConv

原文鏈接:https://zhuanlan.zhihu.com/p/59075508

最近放出來了一篇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 \times D_o \times M\times N \times K \times K\rightarrow(1)

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

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

那麼 K \times K 卷積的計算量爲:

FL_K=(D_o \times D_o \times M \times N \times K \times K)/P

1 \times 1 卷積的計算量爲:

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

因此總的計算量爲:

FL_{HC} = FL_K + FL_1\rightarrow(2)

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

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

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

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

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

R_{MobNet} = \frac{FL_{MobNet}}{FL_S} = \frac{D_o \times D_o \times M \times K \times K + D_o \times D_o \times M \times N}{D_o \times D_o \times M\times N \times K \times K}=\frac{1}{N}+\frac{1}{K^2}\rightarrow(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}\rightarrow(6)

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

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

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

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

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

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

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

【Experiments】

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

【總結】

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

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

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