首发:AIWalker
【Happy导语】该文提出了一种非常优秀的端侧网络架构,但不知为何其知名度很低。ANTNet与MobileNetV3具有非常相似的网路架构,ANTNet是在19年4月份提出,而MobileNetV3则是在19年5月份提出。两者属于同时期的工作,一个以手工设计为主,一个以手动为辅,NAS为主。但无论如何,这篇论文确实是一篇非常不好的好文章,值得各位同学花点时间了解一下。
paper: https://arxiv.org/abs/1904.03775
code: https://github.com/yyxiongzju/ANTNets
Abstract
DCNN在计算机视觉领域取得了前所未有的成功,然而它需要大量的计算资源方能获得高性能。尽管深度分离卷积是一种比标准卷积更有效的计算单元,但它往往会导致模型的表达能力降低。基于资源负载约束(比如计算消耗和参数量),作者提出一种新颖的模块ANTBlock。通过在ANTBlock中引入注意力机制(位于depthwise卷积与投影层之间,与MobileNetV3类似),它可以在高维空间提升模型的表达能力。
作者通过实验表明:基于ANTBlock构建的ANTNet可以跨数据集取得更优的性能(相比同等计算消耗的端侧网络架构,比如MobileNet与ShuffleNet系列)。在CIFAR100数据集上,所提方法取得了75.7%的top1精度,它比MobileNetV2高1.5%且少8.3%的参数量与19.6%的计算量;在ImageNet数据集上,所提方法取得了72.8%的top1精度,它比MobileNetV2高0.8%,同时在iphone5上的速度为157.7ms(比MobileNetV2快20%)。
该文的贡献主要包含以下几点:
- 提出了一种高效且强有力的架构模块ANTBlock,它可以动态的利用通道相关性;
- 由于简单的使用SE模块并不会改善深度分离卷积的性能,作者提出了一种最优配置以最大化通道数量,同时具有全局感受野;
- 采用组卷积使得ANTBlock更高效,即具有更少参数量与计算复杂度,同时不会引起性能显著下降;
- 所提ANTBlock易于实现并取得了优于其他轻量型CNN的性能,比如在精度不低于MobileNetV2的前提下,速度快20%。
Method
该文的目的在于:设计一种低计算复杂度的架构模块并用于构建端侧高效CNN网络。一般端侧模型的评价采用MAdds、FLOPs以及参数量等指标。所以该文的目的就在于构建一个具有更少MAdds、更少参数量、更高精度的CNN架构。ANTNet的核心模块为ANTBlock,而该模块主要采用了深度分离卷积与通道注意力机制。
关于深度分离卷积的计算量已有太多的资料、博客进行分析,所以这里就不再赘述了。同时,轻量型网络的基础模块往往采用逆残差模块形式,逆残差模块是MobileNetV2一文提出的一种网络模块,关于MobileNetV2的介绍资料实在太多了,略过。这里直接开始介绍ANTBlock。
ANTBlock
下图给出了ANTNet以及ANTBlock的网络架构示意图,ANTNet采用了非常经典的网络架构形式,好像自从ResNet提出依赖基本上都是采用这种形式的架构了。
image-20200731141114546
言归正传,很明显ANTBlock采用了残差模块的架构,在MobileNetV2的Inverted Residual Block, IRB
的基础上进行改进,其实改进也非常的简单,就是在depthwise卷积后添加了一个SE模块。它与IRB的另一个不同之处:最后一个1x1卷积为组卷积形式。
不知道各位同学有没有考虑过为什么SENet、ANTNet、SKNet、MobileNetV3等注意力模块在残差模块中添加的位置不一样?比如SENet与SKNet是添加到残差模块最后一个卷积之后,而ANTNet、MobileNetV3等轻量型网路则是添加到Depthwise卷积之后。这是为什么呢?留给各位同学思考思考哈。
下表给出了ANTBlock中每个计算单元的类型以及计算复杂分析。
image-20200731143034772
e-ANTBlock
作者在ANTBlock的基础上提出了一种扩展版本:e-ANTBlock,其结构示意图如下所示。
image-20200731143403947
上面的模块是比较简单的,就是在一个残差模块中又多添加了一个分支。这种类型的模块可以描述为:
其中m表示ANTBlock的数量(默认为2),表示ANTBlock的加权值,该权值为softmax输出,形式如下:
这里又出现一个小彩蛋:大家有没有发现这篇论文与今年新出的一篇屠榜论文结构非常相似呢?各位同学可以在下方留言哈
ANTNet
其实了解了ANTBLock后,如何进行ANTNet网络搭建就是非常简单的事情了。参考这MobileNetV2进行设计就OK了嘛,事实上也是如此。关于ANTNet的网络架构信息见下表,这里就不再赘述了。
image-20200731144926142
Experiments
直接上结果吧,下表给出了所提方法在CIFAR100数据集上的性能对比。相比MobileNetV2与ShuffleNetV2两大知名端侧模块,所提方法具有更高的精度。
image-20200731145119700
下表给出了ImageNet数据集上所提方法的性能对比。很明显,ANTNet再一次优胜。
image-20200731145236358
最后给出了ANTNet与MobileNetV2在iphone5s端侧的耗时对比,见下表。注:g=2为默认配置,等同于前述的proposed模型。
image-20200731145359722
全文到此结束,更多实验结果与分析请查看原文。
推荐阅读:
本文章著作权归作者所有,任何形式的转载都请注明出处。更多动态滤波,图像质量,超分辨相关请关注我的专栏深度学习从入门到精通。