ChannelNets: 省力又討好的channel-wise卷積,在channel維度進行卷積滑動 | NeurIPS 2018

曉飛的演算法工程筆記發表於2021-01-29

Channel-wise卷積在channel維度上進行滑動,巧妙地解決卷積操作中輸入輸出的複雜全連線特性,但又不會像分組卷積那樣死板,是個很不錯的想法

來源:曉飛的演算法工程筆記 公眾號

論文: ChannelNets: Compact and Efficient Convolutional Neural Networks via Channel-Wise Convolutions

Introduction


  深度可分離卷積能夠減少網路的計算量和引數量,其中point-wise卷積佔據了大部分引數量,論文認為網路輕量化的下一個核心在於改變輸入到輸出的稠密連線方式。為此,論文提出channel-wise卷積的概念,將輸入輸出的維度連線進行稀疏化而非全連線,區別於分組卷積的嚴格分組,讓卷積在channel維度上進行滑動,能夠更好地保留channel間的資訊交流。基於channel-wise卷積的思想,論文進一步提出了channel-wise深度可分離卷積,並基於該結構替換網路最後的全連線層+全域性池化的操作,搭建了ChannelNets。

Channel-Wise Convolutions and ChannelNets


  圖a為深度可分離卷積結構,而圖b為加入分組後的深度可分離卷積的結構,其中每個點代表一維特徵。

Channel-Wise Convolutions

  Channel-wise卷積的核心在於輸入和輸出連線的稀疏化,每個輸出僅與部分輸入相連,概念上區別於分組卷積,沒有對輸入進行嚴格的區分,而是以一定的stride去取樣多個相關輸入進行輸出(在channel維度滑動),能夠降少引數量以及保證channel間一定程度的資訊流。假設卷積核大小為$d_k$,輸出大小維度為$n$,輸入特徵圖大小為$d_f\times d_f$,普通卷積的引數量為$m\times d_k\times d_k\times n$,計算量為$m\times d_k\times d_k\times d_f\times d_f\times d_f\times n$,而channel-wise卷積的引數量為$d_c\times d_k\times d_k$,$d_c$一般為遠小於$m$的數,代表一次取樣的輸入維度,計算量為$d_c\times d_k\times d_k\times d_f\times d_f\times n$,引數量和計算量都脫離於輸入特徵的維度$m$。

Group Channel-Wise Convolutions

  分組卷積的分組思想會導致channel間的資訊阻隔,為了增加分組間的channel資訊交流,一般需要在後面新增一個融合層,繼續保持分組的同時整合所有組的特徵。論文使用分組channel-wise卷積層作為融合層,包含$g$個channel-wise卷積。定義輸入特徵維度$n$,分組數$g$,每個channel-wise卷積的stride為$g$(這裡指channel上滑動的步幅),輸出$n/g$特徵圖(滑動$n/g$次)。為了保證每個分組的輸出涵蓋了所有的輸入,需要滿足$d_c \ge g$,最後將所有的輸出concate起來,結構如圖c所示。

Depth-Wise Separable Channel-Wise Convolutions

  深度可分離channel-wise卷積在深度卷積後面接一個channel-wise卷積用以融合特徵來降低引數量和計算量,結構如圖d所示。圖中的channel-wise卷積的stride為1,$d_c$為3,在進行特徵融合的同時能夠降低引數量。

Convolutional Classification Layer

  一般網路最後都使用全域性池化和全連線層進行最後的分類,但是這樣的組合的引數量十分巨大。全域性池化+全連線層的組合實際可以轉換成深度可分離卷積,使用固定權重的深度卷積代替全域性池化,pointwise卷積代替全連線層。因此,可以進一步使用上述的深度可分離channel-wise卷積來進行優化,而這裡由於池化和全連線之間沒有使用啟用函式或BN等操作,採用常規的三維卷積進行實現更高效。

  假設輸入特徵圖為$m\times d_f\times d_f$,類別數為$n$,深度卷積或全域性池化可以認為是卷積核大小為$d_f\times d_f\times 1$,權重固定為$1/d^2_f$的三維卷積,而channel-wise可認為是卷積核大小為$1\times 1\times d_c$的三維卷積,兩者可以合併成一個卷積核大小為$d_f\times d_f\times d_c$的三維卷積。為了符合類別數量,$d_c=m-n+1$,即每個類別的預測僅需要使用$(m-n+1)$個輸入特徵圖。

  論文視覺化了全連線分類層的權重,藍色是代表為0或接近0的權重,可以看到全連線分類層的權重實際非常稀疏,即本身也只使用到部分輸入,所以這裡使用部分輸入特徵也是合理的。

ChannelNets

  ChannelNet根據MobileNet的基礎結構進行構建,設計了圖3的分組模組(GM)和分組channel-wise模組(GCWM)。由於GM模組存在資訊阻隔的問題,所以在GM模組前面使用GCWM來生成包含全域性資訊的分組特徵。

  ChannelNet包含3個版本:

  • ChannelNet-v1替換了部分深度可分離卷積為GM和GCWM,分組數為2,共包含約370萬引數。
  • ChannelNet-v2替換最後的深度可分離卷積為深度可分離channel-wise卷積,大約節省100萬引數,佔ChannelNet-v1的25%引數。
  • ChannelNet-v3替換最後的池化層加全連線層為上述的Convolutional Classification Layer,大約節省了100萬(1024x1000-7x7x25)引數。

Experimental Studies


  在ILSVRC 2012進行網路效能對比。

  對比更輕量的網路效能,這裡採用MobileNet的width multiplier思想縮放每層的維度。

  對比分組channel-wise卷積對ChannelNet的影響,替換GCWM為GM模組,考慮GCWM模組僅增加了32個引數,這樣的效能提升是高效的。

Conclustion


  Channel-wise卷積在channel維度上進行滑動,巧妙地解決卷積操作中輸入輸出的複雜全連線特性,但又不會像分組卷積那樣死板,是個很不錯的想法。但感覺論文字身的效能還不夠最優,論文對比的也只是MobileNetV1,跟MobileNetV2比差了點。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】

work-life balance.

相關文章