首发:AIWalker
paper: https://arxiv.org/abs/2008.02454
标题&作者团队
【Happy导语】本文是高通AI研究院提出了的一种高效网络结构设计新思路。该文的思路非常巧妙,它与ACNet具有“异曲同工之妙”,本质上的思路非常相似,但出发点并不相同。全文通篇读下来的第一感觉就是:知道是什么意思,但是尚未想通怎么去做。期待作者能开源该文的code。初步感觉这是一个非常不错的网络架构加速的方案。
Abstract
作者通过对CNN中的基础模块中的结构冗余进行探索,提出了一种高效网络设计方案。作者首先引入了一种广义的复合核结构,它有助于进行更快的卷积操作(通过引入更高效的sum-pooling)。基于此,作者提出了Structured Convolution
,并证实将卷积分解为sum-pooling+更小尺寸卷积有助减小计算复杂度与参数量,作者同时还证明了如何将其应用到2D和3D卷积核以及全连接层。更进一步,作者还提出一种结构正则化损害用于促进网络的具有上述性质架构,在完成训练后,网络在几乎不造成性能损失下进行上述分解。
作者将上述形式卷积分解引入到不同网络架构(包含MobileNetV2、ResNet)中,可以得到更低的计算量,同时更为高效且精度损失在1%以内(ImageNet与Cifar10两个数据集),作者同时还将其引入到EfficientNet与HRNet中。相比张量分解与通道减枝,所提方法取得相当甚至更好的的复杂度降低。
该文的主要贡献包含以下几点:
- 提出了复合核结构,它有助于卷积加速;
- 提出了结构化卷积,它将卷积分解成了sum-pooling+更小核尺寸的卷积;
- 提出了结构化正则损失辅助模型训练。
Composite Kernels
首先,我们先来看一下复合核的前置知识。直接上原文定义咯,不太好解释。
image-20200808153553491
上面两个定义给出了与复合核相关的知识点,看公式还是比较难以理解的。下面我们就来看图示吧,见下图。它给出了一个3x3复合核,不知道各位同学有没有发现:其实它就是利用的卷积核的相加特性。
Convolution with Composite Kernels
看到上面的图,大家应该对复合核有了一点了解。接下来就看一下它与卷积之间的关系吧。
image-20200808154210742
由于为二值张量,那么就等价于X的相加操作,而无需乘法。对于卷积而言,它包含个乘法以及个加法;而这里,仅需要M个乘法,总的加法变成了:
image-20200808154553516
以前面Fig1-b图示为例,C=1,N=3,M=4,总的加法量为。在后面的内容中,将会介绍如何将其进一步简化到.
Structured Convolution
接下来,我们再来看一下如何由复合核构建结构化卷积。首先还是先看一下关联定义。
image-20200808155008231
结构核可以通过维度C和N以及隐参数c和n进行描述,与之对应的卷积称之为结构卷积。前面的Fig1-b给出了2D形式的3x3结构核,对应参数,其中,每个元素包含2x2大小的块。下图Fig2给出了3D形式了结构核,对应参数,其中,每个元素包含的空间。
image-20200808154910924
Decomposition of Structured Convolutions
结构核的一个主要优势:all the basic elements are just shifted version of each other
。这也就意味着卷积操作可以先进行sum-pooling,然后再采用更小核的卷积即可,见上图Fig3中的图示,可以看到3x3卷积可以分解为2x2的sum-pooling与2x2卷积。通过这种分解,卷积的计算量无形中少了很多。
image-20200808155858566
上图给出了一种更广义形式的卷积结构化分解示意图,而标准卷积、depthwise卷积以及point卷积可构建成3D结构核,这也就意味着上述分解适合于现有网络架构。
Reduction in Number of Parameters and Multiplications/Additions
由于sum-pooling无需参数,因此卷积的参数量从降到了;同时sum-pooling不包含乘法操作,因此只有更小的卷积贡献了乘法操作。
在常规卷积中,对于输出特征,它的乘法数量为,加法数量为。在进行分解之后,乘法数量变成了,加法的数量变成了
image-20200808160938516
关于参数量的关系基本上就算是介绍清楚了,具体再怎么去近似啊,逐点的分析啊建议各位同学去看原文,这个不是重点,略(偷)过(懒)。
Extension to Fully Connected Layers
对于图像分类而言,全连接层是不可避免的,它也占据了非常高比例的参数量。下图给出了全连接层的分解示意图,了解了2D和3D的分解方案,再看这个就简单了,继续略(偷)过(懒)。
image-20200808161524981
Experiments
实验是检验真理的唯一标准,idea好不好还是得看实验效果好不好。所以我们就直接上结果吧。下面四个表给出了Cifar10、ImageNet数据集上MobileNetV2、ResNet、EfficientNet改造前后的性能对比。
image-20200808162033477
此外,作者还对比了所提方法与减枝、张量分解等的对比,见下图。
image-20200808162154519
最后附上MobileNetV2改造后的网络详细信息。话说,虽然作者给出了这些信息,但是并未开源代码,所以想彻底理解还是有点费力。还是期待一下作者尽快开源吧,哈哈。
image-20200808162350793
全文到此结束,对此感兴趣的同学建议去看原文,本文分享比较粗糙,肯定有不少分析不到位的地方,请见谅。
推荐阅读:
本文章著作权归作者所有,任何形式的转载都请注明出处。更多动态滤波,图像质量,超分辨相关请关注我的专栏深度学习从入门到精通。