Paper Reading Note
URL: https://arxiv.org/abs/1907.09595
TL;DR
傳統(tǒng)Depthwise conv使用相同大小的卷積核,本文提出一種包含多種大小卷積核的Depthwise conv,方法簡單有效,同flops和同param量下可以獲得SOTA性能。
Information below is optional; you can change/remove it if you like
Dataset/Algorithm/Model/Experiment Detail
Motivation
對于傳統(tǒng)的Depthwise conv,如果簡單增大kernel size,模型性能會先提升后降低,這也符合直覺:極限情況下,當kernel size等于輸入feature map size,那么網(wǎng)絡就等同于全連接網(wǎng)絡,性能會降低。以下是MobileNet當使用不同kernel size時候的acc曲線。

基于以上現(xiàn)象,作者思考在Depthwise的conv中結合多種大小的kernel,從而既可以利用大卷積核結合high-resolution patterns,又可以利用小卷積核結合low-resolution patterns,從而兼顧模型性能和運行效率。
MixConv

如圖,做法很直接,就是將輸入Tensor的channel分成不同的group,每個group使用不同的kernel size,group內(nèi)部就相當于傳統(tǒng)的Depthwise conv,然后將結果concat到一起作為輸出的Tensor。這可以作為一種opr替換掉傳統(tǒng)的Depthwise conv。實現(xiàn)也很簡單,如下:

對比使用傳統(tǒng)Depthwise conv的MobileNet,在使用大卷積核時,模型性能不會降低。

MixConv Design Choices
將MixConv加入網(wǎng)絡,可以調的參數(shù)有:
- Group Size g :顯然 g=1 時,等價于傳統(tǒng)的Depthwise conv。作者的實驗結果是,對于MobileNet,
較優(yōu)。
- Kernel Size Per Group: 理論上每個Group的kernel size可以任意取,但是如果兩個group 的kernel size相同就可以合并,所以作者限制不同的group使用不同的kernel size。作者設計的kernel size取值方法是,從 3?3 開始,每增加一個group,kernel size加2,如 g=4 kernel size為 {3?3,5?5,7?7,9?9} .
- Channel Size Per Group: 本文中提到兩種:(1)Equal partition (2)Exponential partition:第 i個group,channel數(shù)占比總channel數(shù) 2?i
- Dilated Convolution:可以使用Dilated Conv代替大卷積核,但是作者實驗結論是,Dilated Conv往往不如大卷積。
MixNet
作者對使用MixConv的網(wǎng)絡,用NAS(neural architecture search)搜了一族網(wǎng)絡結構,稱為MixNet。可以在 ImageNet及各種transfer learning的數(shù)據(jù)集上取得了SOTA性能。網(wǎng)絡結構如下:


Experiments
-
MixConv for Single Layer
作者做了一個有趣的實驗,將MobileNetV2 15層中的每一層用(1)vanilla Deptehwise Conv, kernel size=9*9; 或者(2) group=4 的MixConv,kernel size= {3?3,5?5,7?7,9?9} 替換,結果如下圖:image一些insights: 對于stride=2的層,使用大卷積核可以漲點。
-
Channel Partition Methods
兩種分隔channel的方法在MobileNetV1和V2上表現(xiàn)不一,難分高下。但是Exponential partition這種方法的可能缺陷是使用 大卷積核 的層比較少,不能很好的利用high-resolution 信息。image
- Dilated Convolution:
對于小卷積核,替換為Dilated Conv可以漲點,但是對于大卷積核,替換為Dilated Conv會掉點,一個可能的原因是,對于大卷積核,如果用Dilated Conv,會忽略較多局部信息,從而掉點。
Thoughts
一個簡單的改進,可以獲得較大的性能提升。但是隱隱感覺這個網(wǎng)絡在實際設備上運行l(wèi)atency會不如其他移動端網(wǎng)絡,雖然flops小。

