MixConv: Mixed Depthwise Convolutional Kernels

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曲線。

image

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

MixConv

image

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

image

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

image

MixConv Design Choices

將MixConv加入網(wǎng)絡,可以調的參數(shù)有:

  • Group Size g :顯然 g=1 時,等價于傳統(tǒng)的Depthwise conv。作者的實驗結果是,對于MobileNet,g=4 較優(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)絡結構如下:

image
image

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小。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容