MixNet是谷歌新出的一篇关于轻量级网络的文章,主要工作的重点就在于探索不同大小的卷积核的集合,这是因为:
- 小的卷积核感受野小,参数少,但是准确率不高
- 大的卷积核感受野大,准确率相对略高,但是参数也相对增加了很多
于是谷歌提出了一种新的混合深度分离卷积(MDConv)(
mixed depthwise convolution
),将不同的核大小混合在一个卷积运算中,并且基于AutoML
的搜索空间,提出了一系列的网络叫做MixNets,结果比目前所有的轻量级网络都要好,在ImageNet上Top1比MobileNetV2高4.2%,比ShuffleNetV2高3.5%,比MnasNet高1.3%等等。看着看着,恍然大悟,这不就是
Depthwise Conv
版的inception
嘛!论文:https://arxiv.org/abs/1907.09595
代码:https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet/mixnet
动机
到底多大的kernel size 能够实现高的准确率?
论文讨论了一个基本问题:更大的核是否总是能够获得更高的精度?
在从AlexNet中首次观察到之后,我们知道每个卷积核都负责捕获一个局部图像模式,这可能是早期阶段的边缘,也可能是后期阶段的对象。大的核往往以牺牲更多的参数和计算为代价来获取具有更多细节的高分辨率模式,但是它们总是提高精度吗?为了回答这个问题,文章基于MobileNets系统地研究了核大小的影响。图1显示了结果。
可以看到:
- 较大的内核大小会显著地使用更多参数从而增加模型大小;
- 从3×3到7×7模型精度首先提高,但当核大小大于9×9时,模型精度迅速下降,这表明非常大的核大小可能会损害精度和效率。
事实上,这个观察符合卷积神经网络的最初直觉:在核大小等于输入分辨率的极端情况下,ConvNet简单地成为一个完全连接的网络,众所周知,这样效果很差。
基于以上两点,文章指出单一核大小具有局限性:我们既需要大卷积核来捕获高分辨率模式,也需要小卷积核来捕获低分辨率模式,以获得更好的模型精度和效率。
因此,文章提出了一种混合深度卷积(MixConv),它将不同的核大小混合在一个卷积运算中,这样就可以很容易地捕获不同分辨率的模式。图2显示了MixConv的结构,它将通道划分为多个组,并对每组通道应用不同的核大小。
MixConv是一个简单的替换普通深度卷积的方法,但是它在ImageNet分类和COCO目标检测上都能显著提高MobileNets的准确性和效率。
- 普通的深度可分离卷积:把大小为M的输入通道分成M组,然后对每组用同样的kernel size 进行卷积计算。
- MDconv :把大小为M的输入通道分成C组,然后对每组用不同的的kernel size 进行卷积。
总之是:不同的kernel size 提取的特征不一样,这里相当于做了一个特征融合。可以被考虑作为Depthwise Convolution 的替代模块。
从图上就可以很清楚的看出来,将输入的Tensor分成几个不同的group,每个group用不同大小的卷积核,每个group分别用Depthwise Conv,最后将所有的通道Concat,也就就是MDConv。
基于TensorFlow实现MDConv demo如下所示,仅需这几行便可以实现:
def mdconv(x, filters, **args):
G = len(filters)
y = []
for xi, fi in zip(tf.split(x, G, axis=-1), filters):
y.append(tf.nn.depthwise_conv2d(xi, fi, **args))
return tf.concat(y, axis=-1)
MDConv设计问题
Group Size
决定一个输入张量使用多少种不同类型的卷积核。在g=1的极端情况下,MixConv等价于普通的深度卷积。
在作者的实验中,发现g=4通常是MobileNets的一个安全选择,但在神经架构搜索的帮助下,发现从1到5的各种组大小可以进一步提高模型的效率和准确性。
Kernel Size Per Group
理论上,每个组可以有任意的核大小。但是,如果两个组具有相同的内核大小,那么就相当于将这两个组合并成一个组,因此限制每个组具有不同的核大小。此外,由于小的卷积核大小通常具有更少的参数和FLOPs,限制核大小总是从3×3开始,并且每组单调地增加2。换句话说,组i的核大小总是2i+1。例如,4组MixConv总是使用内核大小{3×3,5×5,7×7,9×9}。有了这个限制,每个组的核大小都是为任何组大小g所预定义的,从而简化了我们的设计过程。
例如group =4 的情况下,MDConv就是
{3x3,5x5,7x7,9x9}
。
Channel Size Per Group
考虑了两种情况,
- 一种是每组的通道数都相等
- 一种是根据组号指数衰减:第i组约占总通道的2^(−i)部分
例如输入channel = 32,group =4,那么
- 第一种每组通道数{8,8,8,8}
- 第二种每组通道数{16,8,4,4}
Dilated Convolution
大的卷积核意味着参数更多,因此可以用Dilated Conv来代替,这样更少的参数也能获得同样的感受野。
MDConv on MobileNets
ImageNet分类性能
基于MobileNet V1和V2,用更大的或MixConv核替换了所有原来的3×3深度卷积核。值得注意的是,MixConv总是从3×3核大小开始,然后每组单调地增加2,因此图中MixConv最右边的点有6组核大小为{3×3,5×5,7×7,9×9,11×11,13×13}的滤波器。在图中,我们观察到:(1)MixConv通常使用较少的参数和FLOPs,但其精度与普通的深度卷积相近或更好,说明混合不同的卷积核可以提高效率和精度;(2)深度卷积的精度会因为更大的核而降低,与普通的深度卷积相比,MixConv对非常大的核的敏感度要低得多,这表明不同的核混合在一起,对于较大的核尺寸,可以获得更稳定的精度。
COCO检测性能
MixConv始终比普通的深度卷积获得更好的效率和准确性。特别是,与普通的depthwise7×7相比,MixConv357(具有3组内核{3×3,5×5,7×7}使用更少的参数和FLOPs在MobileNetV1上实现了0.6%更高的mAP,在MobileNetV2上实现了1.1%更高的mAP。
消融实验
用于单层的MixConv
除了将MixConv应用于整个网络之外,下图显示了MobileNetV2上的单层性能。用:
(1)大小为9×9的普通的核DepthwiseConv9×9
(2)含有4组核:{3×3,5×5,7×7,9×9}的MixConv3579替换这15层中的一层。
如图所示,较大的核大小对不同的层有不同的影响:对于大多数层,精度变化不大,但是对于某些具有stride为2的层,较大的核可以显著提高精度。值得注意的是,尽管MixConv3579只使用了普通的DepthwiseConv9×9一半的参数和FLOPs,但是在大多数层上都实现了类似的或者稍微好一点的性能。
通道划分方法
下图比较了两种通道划分方法:均等划分(MixConv)和指数划分(MixConv+exp)。正如预期的那样,对于相同的核大小,指数划分需要更少的参数和FLOPs,方法是将更多的通道分配给更小的核。
实证研究表明,指数通道划分在MobileNetV1上的性能仅略好于均等划分,但如果同时考虑MobileNetV1和V2,则没有明显的赢家。指数划分的一个可能限制是,大卷积核没有足够的通道来捕获高分辨率模式。
空洞卷积
上图还比较了膨胀卷积的性能(表示为MixConv+dilated)。对于K×K的核大小,它使用一个具有(K−1)/2空洞率的3×3核:例如,一个9×9内核将被一个具有空洞率为4的3×3核所取代。值得注意的是,由于Tensorflow空洞卷积与stride为2不兼容,所以只在stride为1的层上使用空洞卷积。如图所示,空洞卷积对于小核具有合理的性能,但是对于大核精度下降很快。文章的假设是,当大核的空洞率很大时,空洞卷积会跳过很多局部信息,这会影响精度。
MixNet架构
下图为MixNet-S和MixNet-M的网络架构。
它们都在整个网络中使用各种不同核大小的MixConv:
- 为了节省计算成本,小的卷积核在早期更为常见,而大的卷积核在后期更为常见,以获得更好的准确性
- 较大的MixNet-M倾向于使用更大的核和更多的层来追求更高的精度,而代价是更多的参数和FLOPs。
- 与对于较大的核大小会导致严重的精度下降(图1)普通的深度卷积不同MixNets能够使用非常大的核,比如9×9和11×11,从输入图像中捕捉高分辨率的模式,而不会影响模型的精度和效率。
MixNet在ImageNet上的表现
总体而言,MixNets优于所有最新的移动卷积神经网络:
- 与手工设计的模型相比,在相同的FLOPs约束下,MixNets的top-1精度比MobileNetV2提高了4.2%,比ShuffleNetV2提高了3.5%;
- 与最新的自动化模型相比,在相似的FLOPs约束下,MixNet比MnasNet(+1.3%)、FBNets(+2.0%)和ProxylessNAS(+2.2%)的准确率更高。
- MixNets还实现了与最新的MobileNetV3类似的性能(使用更少的参数),后者是与本文的工作同时开发的,除了架构搜索之外,还进行了几个手工优化。
- MixNet-L在典型的移动FLOPs(<600M)约束下,实现了78.9%的最先进的top-1精度。与广泛使用的ResNets相比,MixNet-M实现了与ResNet-152相同的77%的top-1精度,但参数减少了12倍,FLOPs减少了31倍。
下图可视化了ImageNet性能比较。可以观察到,与以前手工设计的移动卷积神经网络相比,神经架构搜索的最新进展显著提高了模型性能。然而,通过引入一种新型的高效MixConv,可以基于相同的神经结构搜索技术进一步提高模型的准确性和效率。
迁移学习的表现
可以看出表现优于目前其他轻量级网络,尤其在Cifar数据集上。
结论
在本文重新讨论了卷积核大小对深度卷积的影响,并指出传统的深度卷积存在单一卷积核大小的限制。为了解决这个问题,提出了MixConv,它将多个卷积核混合在一个操作中,以利用不同的核大小。MixConv是普通的深度卷积的一个简单的直接替代,并提高了MobileNets在图像分类和目标检测任务上的准确性和效率。基于MixConv,进一步利用神经结构搜索技术开发了一个新的MixNet家族。实验结果表明,MixNet在ImageNet分类和四种广泛使用的迁移学习数据集上都比所有最新的移动卷积神经网络具有更好的精度和效率。