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曲线。
基于以上现象,作者思考在Depthwise的conv中结合多种大小的kernel,从而既可以利用大卷积核结合high-resolution patterns,又可以利用小卷积核结合low-resolution patterns,从而兼顾模型性能和运行效率。
MixConv
如图,做法很直接,就是将输入Tensor的channel分成不同的group,每个group使用不同的kernel size,group内部就相当于传统的Depthwise conv,然后将结果concat到一起作为输出的Tensor。这可以作为一种opr替换掉传统的Depthwise conv。实现也很简单,如下:
对比使用传统Depthwise conv的MobileNet,在使用大卷积核时,模型性能不会降低。
MixConv Design Choices
将MixConv加入网络,可以调的参数有:
- Group Size g :显然 g=1 时,等价于传统的Depthwise conv。作者的实验结果是,对于MobileNet,
较优。
- 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性能。网络结构如下:
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小。