最近放出來了一篇CVPR2019論文,文章提出了一種新的高效卷積方式:HetConv,在CIFAR10、ImageNet等數據集超過了標準卷積以及DW+PW的高效卷積組合形式,取得了更高的分類性能。
論文鏈接:https://arxiv.org/abs/1903.04120
【Motivation】
目前提高CNN性能的主要手段有:
目前來看,性價比最高的就是採用高效的輕量級網路,代表性的有: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。更直觀的可以看下圖。
計算量的分析:
【標準卷積】計算量:
其中 是卷積輸出特徵圖的尺寸,M是輸入通道數,N是輸出通道數,K是卷積核尺寸。
HetConvolution:假設輸入通道數為M,有比例為P的卷積核尺寸為K,這樣的kernel數為 ,其他都是大小,這樣的kernel數為 ,
那麼 卷積的計算量為:
卷積的計算量為:
因此總的計算量為:
HetConvolution與標準卷積的計算量之比:
當P=1時,HetConv變為標準卷積,計算量之比為1。
【DW+PW】計算量: (原文有誤)
DW+PW與標準卷積的計算量之比:
極端情況下,P=M的時候,公式(3)和(5):
因此,MobileNet比HetConvolution計算量更大。
【GW+PW】計算量:
與標準卷積的計算量之比:
由公式(3)和(8)可知,P=G的時候:
HetConv的計算量比GW+PW更少。
【Experiments】
作者選取了VGG、ResNet、MobileNet等網路,通過在CIFAR-10、ImageNet數據集上的實驗驗證HetConv的有效性。
【總結】
文章提出了一種新的卷積方式,通過計算FLOPs和實驗證明,HetConv可以在更少計算量的上面取得更高的精度,文章也和model conpression進行了對比,從實驗結果來看,效果也挺明顯。HetConv可以和現有的網路結構結合,操作簡單方便。
對於HeConv的實用性方面可能還需要時間來證明,畢竟理論計算量和實際情況還是有些差距,另外作者沒有在detection、segmentation任務做實驗,但從分類任務來說,缺少一定的可信度。希望儘快有開源實現。