美文网首页
MixConv: Mixed Depthwise Convolu

MixConv: Mixed Depthwise Convolu

作者: HAKUNAMATA_cec3 | 来源:发表于2019-08-23 21:23 被阅读0次

Paper Reading Note

URL: https://arxiv.org/abs/1907.09595

TL;DR

传统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

对于传统的Depthwise conv,如果简单增大kernel size,模型性能会先提升后降低,这也符合直觉:极限情况下,当kernel size等于输入feature map size,那么网络就等同于全连接网络,性能会降低。以下是MobileNet当使用不同kernel size时候的acc曲线。

image

基于以上现象,作者思考在Depthwise的conv中结合多种大小的kernel,从而既可以利用大卷积核结合high-resolution patterns,又可以利用小卷积核结合low-resolution patterns,从而兼顾模型性能和运行效率。

MixConv

image

如图,做法很直接,就是将输入Tensor的channel分成不同的group,每个group使用不同的kernel size,group内部就相当于传统的Depthwise conv,然后将结果concat到一起作为输出的Tensor。这可以作为一种opr替换掉传统的Depthwise conv。实现也很简单,如下:

image

对比使用传统Depthwise conv的MobileNet,在使用大卷积核时,模型性能不会降低。

image

MixConv Design Choices

将MixConv加入网络,可以调的参数有:

  • Group Size g :显然 g=1 时,等价于传统的Depthwise conv。作者的实验结果是,对于MobileNet,g=4 较优。
  • 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数占比总channel数 2−i
  • Dilated Convolution:可以使用Dilated Conv代替大卷积核,但是作者实验结论是,Dilated Conv往往不如大卷积。

MixNet

作者对使用MixConv的网络,用NAS(neural architecture search)搜了一族网络结构,称为MixNet。可以在 ImageNet及各种transfer learning的数据集上取得了SOTA性能。网络结构如下:

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上表现不一,难分高下。但是Exponential partition这种方法的可能缺陷是使用 大卷积核 的层比较少,不能很好的利用high-resolution 信息。

    image
  • Dilated Convolution:
    对于小卷积核,替换为Dilated Conv可以涨点,但是对于大卷积核,替换为Dilated Conv会掉点,一个可能的原因是,对于大卷积核,如果用Dilated Conv,会忽略较多局部信息,从而掉点。

Thoughts

一个简单的改进,可以获得较大的性能提升。但是隐隐感觉这个网络在实际设备上运行latency会不如其他移动端网络,虽然flops小。

相关文章

网友评论

      本文标题:MixConv: Mixed Depthwise Convolu

      本文链接:https://www.haomeiwen.com/subject/sqjxectx.html