原文链接:https://arxiv.org/pdf/1907.09595
深度卷积在当今的高效卷积神经网络中更加普遍,但卷积核的大小经常被忽略。在这篇文章中,我们系统性的研究了不同卷积核大小的影响,并发现了合并多个不同大小的卷积核的益处,能够有更好的准确率和效率。基于这个观察结果,我们提出了一个新的混合深度卷积(MixConv),即在一个卷积中自然的混合多个不同大小的卷积核。用这种简单的嵌入式替换普通的深度卷积,我们的MixConv提高了MobileNets在ImageNet的分类任务和COCO的目标检测任务的准确率和效率。为了证明MixConv的有效性,我们把它集成到AutoML的搜索空间中并得到了一个新的模型家族,叫做MixNets,效果超过了之前的移动端模型包括MobileNetV2(ImageNet top-1 准确率+4.2%),ShuffleNetV2(+3.5%),MnasNet(+1.3%),ProxylessNAS(+2.2%),并且FBNet(+2.0%)。尤其是我们的MixNet-L 达到一个新的最高水平在ImageNet的top-1准确率上达到了78.9%,并且低于典型的移动模型的设置(<600M FLOPS)。
代码
1.官方代码 https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet/mixnet
2.Pytorch 亲测好用 https://github.com/leaderj1001/Mixed-Depthwise-Convolutional-Kernels.git
卷积神经网络(ConvNets)已经在包括图像分类,检测,分割以及其他应用中被广泛使用了。目前的一个趋势是提高ConvNets的准确率和效率。随着这个趋势,深度卷积在移动端卷积神经网络中越来越普遍,比如MobileNets,ShuffleNets,NASNet,AmoebaNet,MnasNet和EfficientNet。不像标注的卷积,深度卷积的卷积核是在每个通道分别卷积的,因此减少了由因数C带来的计算消耗,C表示通道数。而设计带有深度卷积的ConvNets的时候一个很重要但是经常被忽略的因素就是卷积和的大小。虽然传统的做法是简单的使用3x3的卷积核,但最近的研究结果显示更大的卷积核比如5x5和7x7可能会提高模型的准确率和效率。
这篇文章中,我们回顾了这个基础问题:越大的卷积和越能够达到更高的准确率吗?先观察下AlexNet,众所周知每个卷积核相应的去捕捉一个局部图案,在网络的前面阶段可能是边缘,在网络的后面阶段可能是对象。(卷积神经网络的越高层具有越高的感受野)。大卷积核趋向于捕捉高分辨率的图案
在更多参数和计算量的代价下得到更多的细节,但是这样做总是能提高准确率吗?为了回答这个问题,我们以MobileNets为基础系统性的研究了卷积核尺寸的影响。图一显示了结果。和我们预期的一样,更大的卷积核尺寸随之有更多的参数,明显的增加了模型的大小。然而从3x3到7x7模型的准确率提升的更多,但当卷积核尺寸大于9x9之后准确率很快下降了,也就是非常大的卷积核尺寸可能会损失准确率和效率。事实上,这个观点和ConvNets最初的直观理解是一致的:在极端的案例来看卷积核的尺寸等同于输入图像的分辨率,一个ConvNet就会简单地变成一个全连接网络,已知的就低于[7]。这个研究发现了单个卷积核尺寸的局限性:我们既需要大卷积核来获取高分辨率图案也需要小卷积核来捕捉低分辨率图案以达到更好的模型准确率和效率。
基于这个观点,我们提出了一个混合深度卷积(MixConv),即在一个卷积操作中混合了不同尺寸的卷积核,以至于可以很容易的在不同分辨率下捕捉不同的图案。图2展示了MixConv的结构,把通道分为多个组并对每个组的通道使用不同尺寸的卷积核。我们只是把MixConv这个结构简单的植入代替寻常的深度卷积,但是能够提高MobileNets在ImageNet分类任务和COCO目标检测任务的准确率和效率。
为了进一步证明我们的MixConv的有效性,我们利用神经网络结构搜索去开发一个模型家族叫做MixNets。实验结果表明我们的MixNet模型明显的超过了全部之前的移动端ConvNets,比如ShuffleNets,MnasNet,FBNet,和ProxylessNAS。尤其是我们的中等大小的模型MixNet-M在ImageNet上达到了top-1的77.0%准确率,比能达到相同效果的ResNet-152降低了12倍的参数量和31倍的FLOPS。
高效的ConvNets:近些年,在提高ConvNet的效率上付出了很多努力,从更有效的卷积神经网络操作,bottleneck层,到更高效的结构。深度卷积在所有移动到端大小的ConvNets上的使用尤为普遍,比如MobileNets,ShuffleNets,MnasNet等等。最近EfficientNet通过大量的使用深度卷积甚至达到了ImageNet的准确率的最好的水平和十折更高的效率。不像标准的卷积,深度卷积在每个通道上单独执行卷积,因此减少了参数的大小和计算量。我们提出的MixConv推广了深度卷积的概念,能够被认为是一个植入式的操作代替寻常的深度卷积。
多尺度网络和特征:我们的想法和很多之前多分支的ConvNets很相似,比如Inceptions,Inception-ResNet,ResNeXt,和NASNet。通过在每一层使用多分支,这些ConvNets能够在一层中利用不同操作(比如卷积和池化)。相似地,也有很多之前的工作是合并不同层的多尺度特征图,比如DenseNet和特征金字塔网络。然而,不像这些之前的工作大部分聚焦于改变巨大的神经网络结构以使用不同的卷积操作,我们研究的目的是设计一个可植入替换单个深度卷积的操作。
神经网络结构搜索(NAS):最近,神经网络结构搜索通过自动的设计流程和学习更好的设计选择,已经达到了比手工制作的模型更好的效果。因为我们的MixConv是一个带有很多可能设计选择的灵活操作。我们加入MixConv结构到搜索空间中,使用已有的结构搜索类似于[2, 26, 27]的方法来扩展一个新的MixNets家族。
MixConv的主要思想是在一个深度卷积的操作中混合多个不同尺度的卷积核,以至于能够从输入图像中容易地获得不同类型的图案。这一节,我们将讨论特征映射图和MixConv的设计选择。
我们从寻常的深度卷积开始。让 X ( h , w , c ) X^{(h,w,c)} X(h,w,c)表示维度为(h,w,c)的输入张量,其中c是空间的高度,w是空间的宽度,以及c是通道的个数。让 W ( k , k , c , m ) W^{(k,k,c,m)} W(k,k,c,m)表示深度卷积核,其中kxk是卷积核的大小,c是输入的通道个数,m表示通道的乘数(channel multiplier参数相对难理解,因为MobileNets里面这个参数都是1,如果该参数等于m,那么每个通道被不同的卷积核重复m次)。简单来说,这里我们假设卷积核的宽和高都是k,但是很容易将其推广到卷积核的宽和高不同的情况。输出的张量 Y ( h , w , c ⋅ m ) Y^{(h,w,c \cdot m)} Y(h,w,c⋅m)和输入有相同的空间维度(h,w)并且通道扩张输出的通道大小为 m ⋅ c m \cdot c m⋅c,每个特征映射图的输出值计算方式如下:
不像寻常的深度卷积,MixConv把通道分为组并对每个组采用不同尺寸的卷积核,如图2所示。更具体地说,输入的张量被分为g组虚拟的张量 < X ^ ( h , w , c 1 ) , ⋯ , X ^ ( h , w , c g ) > <\hat{X}^{(h,w,c_1)},\cdots,\hat{X}^{(h,w,c_g)}> <X^(h,w,c1),⋯,X^(h,w,cg)>,其中所有的虚拟张量 X ^ \hat{X} X^都具有相同的空间高度和宽度,并且他们总共的通道数等于原始的输入张量通道数之和: c 1 + c 2 + . . . + c g = c c_1+c_2+...+c_g=c c1+c2+...+cg=c。类似的,我们也把卷积核分为g组虚拟卷积核 < W ^ ( k 1 , k 1 , c 1 , m ) , . . . , W ^ ( k 1 , k 1 , c g , m ) > <\hat{W}^{(k_1,k_1,c_1,m)},...,\hat{W}^{(k_1,k_1,c_g,m)}> <W^(k1,k1,c1,m),...,W^(k1,k1,cg,m)>。对于第t组虚拟输入的张量和卷积核,相应的虚拟输出的计算方式如下
最终输出的张量是对所有虚拟输出的张量 < Y ^ x , y , z 1 1 , . . . , Y ^ x , y , z g g > <{\hat{Y}^{1}_{x,y,z1}},...,{\hat{Y}^{g}_{x,y,zg}}> <Y^x,y,z11,...,Y^x,y,zgg>的一个拼接:
其中 z 0 = z 1 + . . . + z g = m ⋅ c z_0=z_1+...+z_g=m \cdot c z0=z1+...+zg=m⋅c是最终输出的通道的个数。
图3显示了一个使用TensorFlow python实现MixConv的简单示例。在某些平台上,MixConv能够被实现为一个单个的操作并且通过组卷积被优化。然而,想图中那样,MixConv能够被认为是一个简单的可植入代替寻常深度卷积的操作。
分组数量g:分组数量决定了在一个输入的张量的卷积中使用多少不同类型的卷积核。极端的情况下 g = 1 g=1 g=1,那MixConv就等同于一个寻常的深度卷积了。在我们的实验中,我们发现 g = 4 g=4 g=4对于MobileNets来说通常是一个把握的选择,但在神经网络结构搜索的帮助下,我们发现g的值从1到5能够进一步的提高模型的准确率和效率。
每组的通道数:这篇文章中,我们主要考虑两个分开通道的方法:(1)等分:每组将有相同数目的滤波器;(2)指数分:第i个组将有大约总共通道数 2 − i 2^{-i} 2−i的部分。例如,给定一个4组的MixConv一共有32个滤波器。等分法会把通道分为(8,8,8,8),而指数分法将把通道分为(16,8,4,4)。
膨胀卷积:因为更大的卷积核需要更多的参数和计算量,一个选择是使用膨胀卷积,在不增加额外参数和运算量的情况下增大感受野。然而,像我们3.4节做的消融研究的结果,膨胀卷积通常比大卷积核准确率差。
因为MixConv是一个简单植入代替寻常深度卷积的操作,我们评估它结合已有的MobileNets在分类和检测任务上的表现。
ImageNet 分类表现:图4显示了MixConv在ImageNet分类上的表现。基于MobileNet V1和V2,我们使用更大的卷积核或MixConv卷积核代替原有的3x3的深度卷积核。尤其是MixConv总是从3x3大小的卷积核开始并且每组单调递增2,所以MixConv在图片中的最右边的点有6组卷积核,它们的尺寸是{3x3,5x5,7x7,9x9,11x11,13x13}。在图中,我们注意到:(1)MixConv通常使用更少的参数和运算量,但是准确率和寻常深度卷积是相近的甚至比之更好,这意味着混合不同尺寸的卷积核能够提高准确率和效率;
单层使用MixConv除了把MixConv应用在整个网络上之外,图5展示了在MobileNetV2的每层上使用的效果。我们替换了15层中的一层使用9x9卷积核的寻常深度卷积,或MixConv3579(卷积核尺寸为{3x3, 5x5, 7x7, 9x9})。如图所示,大卷积核在不同的层有着不同的影响:在大多数层,准确率没有改变太多,但是在一些步长为2的层,大卷积明显提高了准确率。尤其是MixConv3579只用了寻常9x9深度卷积的一半参数量和运算量,我们的MixConv在大多数层都与9x9寻常深度卷积表现类似或略好一点。
膨胀卷积图6也对比了使用膨胀卷积的效果(用MixConv+dilated表示)。对于KxK大小的卷积核尺寸可以用一个3x3的带 ( K − 1 ) / 2 (K-1)/2 (K−1)/2膨胀率的卷积代替:例如,一个9x9的卷积核将被一个带膨胀率为4的卷积代替。尤其Tensorflow膨胀卷积不兼容步长为2的卷积,我们只能在一层中用步长为1的膨胀卷积。如图所示,膨胀卷积对于小卷积来说更合理,但是对大卷积会导致准确率很快下降。我们的假设是当对于大卷积核膨胀率过大的时候,膨胀卷积会跳过很多的局部信息,从而导致准确率受损。
为了进一步证明MixConv的有效性,我们利用最近在神经网络结构搜索的进展来开发一个新的基于MixConv的模型,叫做MixNets。
我们的神经网络结构搜索设置和最近的MnasNet,FBNet和ProxylessNAS相近,都是使用MobileNetV2作为基线网络结构,搜索最好的卷积核尺寸,卷积扩张率,通道数和其他设计选择。然而,不像之前的工作都是用寻常深度卷积作为基础的卷积操作,我们采用我们提出的MixConv作为搜索选项。具体地,我们有5种MixConv分组数g=1,…,5作为候选项:
为了简化搜索的过程,我们的搜索空间没有包含指数分法或膨胀卷积,在未来的工作中集成这些操作是很简单的。
类似于最近的神经网络结构搜索方法,我们直接的在ImageNet训练集合上搜索,然后从搜索的结果把表现最好的几个模型挑出来在ImageNet的验证集合和迁移学习数据集合上验证他们的准确率。
表2展示了MixNets在ImageNet上的表现。我们通过神经网络结构搜索得到了MixNet-S和M,并且扩大MixNet-M的深度为1.3倍得到了MixNet-L。所有的模型使用和MnasNet同样的配置进行训练。
通常,我们的MixNets比最近所有的移动端ConvNets表现好:对比手工制作的模型,在相似的运算量下,我们的MixNets在top-1上比MobileNetV2提高了4.2%准确率,比ShuffleNetV2提高了3.5%的准确率。MixNets也达到了相似的效果(使用更少的参数)和最近的MobileNetV3一样,除了结构搜索以外,同时也使用了几个我们手工的优化方式。尤其是我们的MixNet-L达到了一个新的最高水平即在移动端运算量(<600M)的限制下top-1的准确率达到了78.9%。比起广泛使用的ResNets,我们的MixNet-M到达了和ResNet-152相同的top-1准确率77%,但比ResNet-152少了12倍的参数量和31倍的运算量。
图7显示了在ImageNet上的效果对比。我们发现最近神经网络结构搜索明显比之前手工制作的模移动端ConvNets提高了效果。然而,通过引入一个新类型的高效MixConv,基于相同的神经网络结构搜索技术,我们能更进一步的提高模型的准确率和效率。
为了理解为什么MixNets能够达到更好的准确率和效率,图8阐释了表2中MixNet-S和MixNet-M的网络结构。通常来说,他们都使用了各种各样的带有不同的卷积核尺寸的MixConv贯穿整个网络:小卷积核更普遍的出现在模型的早期阶段来节约计算损耗,而大卷积核更普遍的出现在模型的后期阶段为了达到更高的准确率。我们也注意到更大的MixNet-M趋向于使用更大的卷积核和更多的层来追求更高的准确率,同时也有更多的参数和计算量。不像寻常的深度卷积对于使用大卷积核准确率会严重的下降,我们的MixNets能够利用非常大的卷积核,比如9x9和11x11的卷积核从输入图像中来捕捉高分辨的图案,而不会损失模型的准确率和效率。
我们也在四个广泛使用的迁移学习数据集合上评估了我们的MixNets,包括CIFAR-10/100,Oxford-IIIT Pets,和Food-101。表3显示了这些数据集的统计信息,训练集合大小,测试集合大小,和类别数量。
图9比较了我们的MixNet-S/M和一些之前的模型在迁移学习上的准确率和运算量。对于每个一个模型,我们先从随机初始化权重在ImageNet数据集上训练然后在目标数据集上使用相似的设置[10]微调所有的权重。MobileNets,Inception,ResNet,DenseNet的准确率和计算量是从[10]得来的。通常,我们的MixNets在所有这些数据集合上明显超过了之前的模型,尤其是在最被广泛使用的CIFAR-10和CIFAR-100,说明我们的MixNets在迁移学习上也可以很好的推广。尤其是,我们的MixNet-M在3.49M参数量和352M运算量的时候达到了97.92%的准确率,比ResNet-50的效率高11.4倍,并且准确率高出1%。
这篇文章我们回顾了卷积核大小对于深度卷积的影响,并确定了传统深度卷积受限于单一的卷积核尺寸的影响。为了解决这个问题,我们提出了MixConv,混合了多个卷积核在一个卷积操作中,利用了多尺度卷积核的优势。我们指出我们的MixConv是一个可以简单植入来代替寻常深度卷积的操作,并且能够给MobileNets在图像分类和目标检测任务上提高准确率和效率。基于我们提出的MixConv,我们使用神经网络结构搜索技术,进一步开发了一个新的模型家族叫做MixNets。实验结果表明我们的MixNets在准确率和效率上明显好过最近的移动端ConvNets无论是在ImageNet分类上还是四个被广泛使用的迁移学习数据集合上。
[1] Lukas Bossard, Matthieu Guillaumin, and Luc Van Gool. Food-101–mining discriminative components with random forests. ECCV, pages 446–461, 2014.
[2] Han Cai, Ligeng Zhu, and Song Han. Proxylessnas: Direct neural architecture search on target task and hardware. ICLR, 2019.
[3] François Chollet. Xception: Deep learning with depthwise separable convolutions.CVPR, pages 1610–02357, 2017.
[4] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. CVPR, pages 770–778, 2016.
[5] Andrew Howard, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Chen, Mingxing Tan, Weijun Wang, Yukun Zhu, Ruoming Pang, Vijay Vasudevan, Quoc V. Le, and Hartwig Adam. Searching for mobilenetv3. arXiv preprint arXiv:1905.02244, 2019.
[6] Andrew G Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, and Hartwig Adam. Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861, 2017.
[7] Gao Huang, Danlu Chen, Tianhong Li, Felix Wu, Laurens van der Maaten, and Kilian Q Weinberger. Multi-scale dense networks for resource efficient image classification. ICLR, 2017.
[8] Gao Huang, Zhuang Liu, Laurens Van Der Maaten, and Kilian Q Weinberger. Densely connected convolutional networks. CVPR, 2017.
[9] Forrest N Iandola, Song Han, Matthew W Moskewicz, Khalid Ashraf, William J Dally, and Kurt Keutzer. Squeezenet: Alexnet-level accuracy with 50x fewer parameters and <0.5 mb model size. arXiv preprint arXiv:1602.07360, 2016.
[10] Simon Kornblith, Jonathon Shlens, and Quoc V Le. Do better imagenet models transfer better? CVPR, 2018.
[11] Alex Krizhevsky and Geoffrey Hinton. Learning multiple layers of features from tiny images. Technical Report, 2009.
[12] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton. Imagenet classification with deep convolutional neural networks. In NIPS, pages 1097–1105, 2012.
[13] Tsung-Yi Lin, Piotr Dollár, Ross Girshick, Kaiming He, Bharath Hariharan, and Serge Belongie. Feature pyramid networks for object detection. CVPR, 2017.
[14] Chenxi Liu, Barret Zoph, Jonathon Shlens, Wei Hua, Li-Jia Li, Li Fei-Fei, Alan Yuille, Jonathan Huang, and Kevin Murphy. Progressive neural architecture search. ECCV, 2018.
[15] Hanxiao Liu, Karen Simonyan, and Yiming Yang. DARTS: Differentiable architecture search. ICLR, 2019. 12
[16] Ningning Ma, Xiangyu Zhang, Hai-Tao Zheng, and Jian Sun. Shufflenet v2: Practical guidelines for efficient cnn architecture design. ECCV, 2018.
[17] Omkar M Parkhi, Andrea Vedaldi, Andrew Zisserman, and CV Jawahar. Cats and dogs.CVPR, pages 3498–3505, 2012.
[18] Esteban Real, Alok Aggarwal, Yanping Huang, and Quoc V Le. Regularized evolution for image classifier architecture search. AAAI, 2019.
[19] Olga Russakovsky, Jia Deng, Hao Su, Jonathan Krause, Sanjeev Satheesh, Sean Ma, Zhiheng Huang, Andrej Karpathy, Aditya Khosla, Michael Bernstein, et al. Imagenet large scale visual recognition challenge. International Journal of Computer Vision, 115 (3):211–252, 2015.
[20] Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, and Liang-Chieh Chen.Mobilenetv2: Inverted residuals and linear bottlenecks. CVPR, 2018.
[21] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich. Going deeper with convolutions. CVPR, pages 1–9, 2015.
[22] Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jon Shlens, and Zbigniew Wojna.Rethinking the inception architecture for computer vision. CVPR, pages 2818–2826, 2016.
[23] Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, and Alexander A Alemi.Inception-v4, inception-resnet and the impact of residual connections on learning. AAAI, 4:12, 2017.
[24] Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, and Alexander A Alemi.Inception-v4, inception-resnet and the impact of residual connections on learning. AAAI, 4:12, 2017.
[25] Mingxing Tan and Quoc V Le. Efficientnet: Rethinking model scaling for convolutional neural networks. ICML, 2019.
[26] Mingxing Tan, Bo Chen, Ruoming Pang, Vijay Vasudevan, and Quoc V Le. Mnasnet:Platform-aware neural architecture search for mobile. CVPR, 2019.
[27] Bichen Wu, Xiaoliang Dai, Peizhao Zhang, Yanghan Wang, Fei Sun, Yiming Wu, Yuandong Tian, Peter Vajda, Yangqing Jia, and Kurt Keutzer. Fbnet: Hardware-aware efficient convnet design via differentiable neural architecture search. CVPR, 2019.
[28] Saining Xie, Ross Girshick, Piotr Dollár, Zhuowen Tu, and Kaiming He. Aggregated residual transformations for deep neural networks. CVPR, pages 5987–5995, 2017.
[29] Fisher Yu and Vladlen Koltun. Multi-scale context aggregation by dilated convolutions.ICLR, 2016.
[30] Xiangyu Zhang, Xinyu Zhou, Mengxiao Lin, and Jian Sun. Shufflenet: An extremely efficient convolutional neural network for mobile devices. CVPR, 2018.
[31] Barret Zoph and Quoc V Le. Neural architecture search with reinforcement learning.ICLR, 2017.
[32] Barret Zoph, Vijay Vasudevan, Jonathon Shlens, and Quoc V Le. Learning transferable architectures for scalable image recognition. CVPR, 2018.