原文鏈接:https://zhuanlan.zhihu.com/p/59075508
最近放出來了一篇CVPR2019論文,文章提出了一種新的高效卷積方式:HetConv,在CIFAR10、ImageNet等數據集超過了標準卷積以及DW+PW的高效卷積組合形式,取得了更高的分類性能。
論文鏈接:https://arxiv.org/abs/1903.04120
【Motivation】
目前提高CNN性能的主要手段有:
- 增加模型寬度和深度。這樣帶來的代價是計算量會變得非常大。
- 設計更高效的卷積結構。比如depthwise conv、pointwise conv、groupwise conv等。這一類卷積結構的特點是計算量相比標準卷積小,代替原始的標準卷積方式可以較少一定的計算量,同時保持較高的精度。
- 爲追求更快更小的網絡結構,用剪枝(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。更直觀的可以看下圖。
計算量的分析:
【標準卷積】計算量:
其中 是卷積輸出特徵圖的尺寸,M是輸入通道數,N是輸出通道數,K是卷積核尺寸。
HetConvolution:假設輸入通道數爲M,有比例爲P的卷積核尺寸爲K,這樣的kernel數爲 ,其他都是大小,這樣的kernel數爲 ,
那麼 卷積的計算量爲:
卷積的計算量爲:
因此總的計算量爲:
HetConvolution與標準卷積的計算量之比:
當P=1時,HetConv變爲標準卷積,計算量之比爲1。
【DW+PW】計算量: (原文有誤)
DW+PW與標準卷積的計算量之比:
由公式(3)可知,增大P,HetConv變爲標準卷積,控制P的大小,可以控制accuracy和FLOPs。
極端情況下,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任務做實驗,但從分類任務來說,缺少一定的可信度。希望儘快有開源實現。