ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric
Convolution Blocks
ACNet:通过非对称卷积模块增强CNN的卷积核骨架
from ICCV2019
paper
Code
Abstract
为特定的应用设计合适的CNN架构本身涉及到繁重的手动工作或者需要高昂的GPU训练时间,业界也正在寻求一些CNN结构可以方便的集成到其他成熟架构中,进一步提升应用到实际任务中的性能。
本文提出了非对称卷积模块(Asymmetric Convolution Block,ACB)这样一种结构无关的卷积模块,使用一维非对称卷积来代替卷积网络中的常规卷积层,这样构建出的网络称之为ACNet(Asymmetric Convolutional Network),可以进一步提升网络精度;并且没有增加任何额外的开销。
本文已经在CIFAR和ImageNet数据集上基于不同网络都验证了ACNet的有效性。通过实验本文将ACB的有效性归因于对旋转变形的鲁棒性以及增强了卷积核的中心骨架部分的能力。
Section I Introduction
卷积神经网络已经在计算机视觉领域取得巨大成功,适用于可穿戴设备、安防系统、移动终端以及汽车等多种应用。由于这些终端设备常常受限于有限的计算资源,对推理的实时性也有要求,因此需要CNN网络在有限的算力支持下达到较高精度。这样简单的通过增加更多可训练的参数或者使用更多的连接来增强模型性能是不实际的。
因此本文认为更切实际的是在不增加额外的推理时间、内存或能耗的前提下进一步提升CNN性能。
另一方便对CNN结构的改进使得目前的模型精度已经显著提高。但是现有的模型依旧不能满足特定的需求,而设计新的结构又要消耗大量人工成本以及GPU训练时间。
近期学术界正关注于结构中立的CNN结构,如SE block以及quasi-hexagonal kernels,他们就可以直接应用到当前的结构中,来提升应用到具体应用上的性能。
近期关于CNN结构的研究主要聚焦于:
(1)各层之间如何互相连接。是简单堆叠在一起,还是一一映射亦或是密集连接;
(2)不同层的输出如何结合,从而提升学习到的特征表征的能力。
考虑到这一点,本文就是为了寻求这样一种结构中立的CNN模块可以与许多其他结构直接结合。
本文通过探究这一方面来增强常规卷积层:权重与其在kernel中空间位置的关系。
因此本文提出了非对称卷积模块(ACB)来代替常规的卷积层。对于原来dxd卷积,拆分为dxd,1xd,dx1三路卷积。由于1xd和dx1的卷积核并不是方形的因此将其称之为非对称卷积层。通过将ACB替换掉常规网络中的方形卷积核,训练直至网络收敛就得到了ACNet。
具体参见Fig 1.
以3x3卷积为例,将常规的3x3卷积拆分为3x3,1x3,3x1三路卷积,并将最后的结果相加。
这种在卷积核不同骨架上非对称卷积的结果相加等效于原始的方形卷积效果,这种等效变换是通过构建一个具有原始结构的新模型并使用ACNet学习到的参数来初始化它达到的。
可以看到ACNet分为训练和推理阶段,训练阶段:强化了skeleton位置的权重,达到更好的特征提取效果;测试阶段:通过BN融合和分支融合,没有增加额外的计算量。-类似Tensorflow中进行fake quantization的实现?将BN后的权重系数和偏置作为新的权重系数和偏置项进行计算。
更好的地方在于:
(1)ACNet没有引入更多的超参数,从而更加方便的与其他结构结合而无需微调;
(2)可以很方便的在主流框架TF 和 pytorch上实现;
(3)没有增加额外的推断时间,也没有增加额外的计算开销。
通过实验本文部分解释了ACNet的有效性。本文观察到在方形卷积核中所学到的知识是不均匀的,与四周边角相比,在中间有交叉的骨架部分(skeleton)上学习的权重更大;如果移除骨架上的这些部分对精度影响更大。在ACB中在skeleton上又额外增加了水平和垂直的两条卷积核从而显示的增强skeleton。有趣的地方在于在方形和水平、垂直卷积核上的权重都是随机初始化的,很容易之间符号是相反的,因此把他们加起来可以获得更强或更弱的skeleton。但是通过实验本文发现总是朝着增强每一层skeleton的方向发展的。这种一致性增强的现象有助于启发关于不同空间位置权重之间关系的进一步研究。
本文的工作总结如下:
(1)本文提出非对称卷积模块代替常规卷积,显式增强标准卷积核的表征能力;并且可以有效结合到已有模型中,不引入额外的参数和计算成本,不增加额外的推理时间;
(2)不同模型在CIFAR-10,CIFAR-100以及ImageNet上的训练精度均有明显提升;
(3)验证了在方形卷积核中skeleton的重要性,以及ACNet在增强skeleton方面的有效性;
(4)验证了ACNet可以增强模型对旋转变形的鲁棒性,有助于对旋转不变性问题的进一步研究。
Section II Related Work
Part A Asymmetric convolutions
非对称卷积常用于近似常规的方形卷积用于压缩和压缩。已有一些前期工作表明常规的dxd卷积可以拆分为一个dx1卷积和一个1xd卷积,拆分后可以减少网络参量以及所需的计算。背后的原理很简单:如果一个2D的卷积核秩为1,就可以等效为一系列1D卷积。
但是由于深度神经网络中卷积核的分布,实际其本征的秩往往大于1,此时对卷积核直接进行变换会导致明显的信息丢失。Denton等人通过奇异值分解进行低秩近似解决这一问题,还有通过最小化l2距离学习垂直和水平卷积核。
另一方面,非对称卷积也广泛用作体系结构设计元素用来保存参数和计算(?).比如在Inception V3中就将7x7卷积替换为了一系列1x7和7x1的卷积,但是这篇文章的作者也发现这种替换在较低层次的卷积中并不等效;ENet也用这种等效替代的方法将5x5的卷积进行精简设计更搞笑的语义分割网络,在增加少量计算成本的基础上增加了感受野。在EDANet中也是用相似的idea将3x3卷积进行分解,在基本保持精度的前提下减少了33%的网络参量。
而本文正相反,不是将每一层卷积进行分解,而是在训练过程中丰富特征空间,将他们学习到的知识融合到方形卷积核中。
Part B Architecture-neutral CNN structures
本文希望不改变原有CNN结构的前提下使用一些结构中立的模块进一步提升目前SOTA模型的性能。这种方法有效的补充了仅在网络体系结构方面取得的创新。
如果一个CNN结构满足以下条件就称之为结构中立的:
(1)无需任何假设前提,可用于任何模型;
(2)有通用的提升。
比如SE block就是一个结构中立的模块,通过学习到的权重重新规划channel的权重;另一个例子是auxiliary classifier可以插入到模型中监督模型的训练,确实可以大幅度提升性能,虽然需要人工微调一些超参数。
而本文的ACNet在训练过程中没有引入任何超参数,在推理阶段也没有增加任何参数或计算成本。因此在实际应用中开发者可以使用ACNet来增强各种模型,而用户也可以在不影响推理过程的前提下享受性能的提升。
# Section III Asymmetric Convolutional Network
Part A 理论表述
对于D个大小为HxW的卷积核(F),输入C通道的特征图(M),输出的特征图表述为:
其中x表示为二维卷积。而CNN中为了克服过拟合以及加速训练过程广泛使用,经常放在线性变换之后用来增强模型的特征表述能力,经过BN处理后,输出变为:
其中 µ j 和σ j 分别对应逐通道的均值和方差,gamma和beta分别学习的是缩放因子和偏置项。
Part B Exploiting the additivity of convolution
本文致力于寻找一种不增加推理计算成本的方式将非对称卷积引入到常规的卷积中。本文发现了卷积的一种特性:
如果多个大小兼容的二维卷积以相同的步长对同样的输入进行操作,从而产生相同分辨率的输出,并将它们的结果相加;那么将这些卷积核在对应位置上相加,获得的卷积核是等效的,会产生同样的输出。
比如分别对同样的输入进行3x3,1x3,3x1的卷积操作,可以看到这三个卷积核对应的滑窗是一样的,因此通过将这三路的输出相加在数学上与,现将1x3,3x1的卷积核加到3x3卷积核得到新的卷积核,最后得到的输出是一样的。
也就是利用卷积的可加性特性,有:
其中+表示的是将两个卷积核对应位置进行element-wise addition。需要注意的是I可以进行一定的裁剪或者pad。
而compatiable兼容的意思指的是可以将较小的卷积核patch(贴?)到较大的卷积核上,比如1x3和3x1的卷积核就是3x3兼容的。
通过卷积的滑动计算就可以证明.
Part C ACB 对推理性能的提升
本文聚焦于在CNN中广泛使用的3x3卷积。对于任意CNN架构,本文将每一个3x3卷积层替换为本文的ACB,也就是分别包含3x3,1x3,3x1三路卷积,每一路卷积后都经过BN作为一个分支,而且没有任何超参数要调整。
而使用ACNet可以获得更高的精度,在训练完成后本文会将每个ACB的输出转换为产生相同输出的标准卷积层,这样可以获得性能更好的网络而没有增加任何额外的计算,而这种转换是通过以下两步实现的:BN融合和分支融合。
Fig 3展示了BN与分支融合。假设I是特征图谱的任意通道输入,对于每个分支会先等价的将BN的参数融合到卷积核与偏置项中,然后将融合后的结果进行相加。
**BN fusion:**
卷积的同质性允许将BN和线性缩放变换等价的融合到具有偏置的卷积层中。也就是对每一个分支 ,计算出新的偏置项,就可以产生与原始卷积同样的输出。
**Branch fusion:**
通过将不对称卷积核添加到方形卷积核对应的位置上,完成将三个BN分支合并成一个标准卷积。实际应用中这种变换是通过在原始网络结构中使用融合后的权重进行初始化完成的,从而可以产生与ACNet相同的输出。
对于每一个卷积核j,F’是融合后的三维卷积核,bj是偏置项,Fbar和F^分别对应1x3和3x1卷积层,因此融合后的输出表述为:
需要注意的是,虽然ACB可以等效的转换为标准层,但是只在推理时是等效的,因为训练过程中权重是随机初始化,基于此计算出来的梯度也不同因此在训练过程中是不等价的。
Section 4 Experiments
为了验证ACNet对CNN性能的提升本文进行了大量的实验。分别选择目前已有的卡赢家作为基线模型,分别建立对应的ACNet版本,从头开始训练,然后将其转换为对应的标准结构后测试精度。为了便于比较将所有模型训练到完全收敛位置,每一对基线模型和对应的ACNet都使用相同的设定,比如lr以及batch_size等。
Part A CIFAR10
为了对本文的方法做初步的评价,首先在CIFAR10和CIFAR100上对几种代表性的基准模型进行了实验,包括: Cifar-quick [29], VGG-16 [28], ResNet-56 [13], WRN-16-8 [35] and DenseNet-40[15] on CIFAR-10 and CIFAR-100 [19].
实验结果参见Table I,II,可以看到所有模型的性能都有所提升,说明了ACB的优点,可以与各种结构相结合。
Part B ImageNet
随后继续在ImageNet1000类别上进行有效性验证。使用的基准网络分别是AlexNet,ResNet-18和DenseNet。
数据增强则使用了包括bbox distortion,左右翻转和色彩偏移。
需要注意的是虽然AlexNet前两层分别使用了11x11和5x5的卷积核,但本文仍然只对这两层使用1x3和
3x1卷积,因为这种较大规模的卷积核在现代CNN中应用的越来越少,对应的大型ACB模块并不常用。
Table3展示了ImageNet上训练的结果,精度分别提升了1.52,0.78,1.18.
因此在实际应用中可以使用ACnet来减少推理时间、能耗和存储空间,对于一些计算资源受限或者模型大小受限 的情况也可以使用ACnet来大幅提升精度,对于用户来说都没有增加额外的代价。
Part C Ablation studies
虽然已经证实了ACNet的有效性,我们仍然希望得到一定的解释,因此本小节通过消融实验来研究ACNet的有效性。
主要聚焦以下3种设计的作用:
(1)水平核;
(2)垂直核;
(3)每个分支的批归一化。
在基于ImageNet训练的AlexNet和Res-18结构上开展消融实验。
需要注意的是,如果删除了每个分支中的BN,那么会对ACB的整个输出进行批归一化,也就是将BN求和从前求和变为后求和。
从Table 4中可以看出,去掉3种中的任何一种最终的模型精度都会有一定的降低。以及虽然垂直卷积和水平卷积都对性能有提升,但是在实际应用中水平方向和垂直方向可能是不对等的。比如通常会随机进行左右翻转但没有执行上下颠倒。因此如果讲一个上下颠倒的图像输入模型,原始3x3卷积会产生毫无意义的结果而水平核会产生和原图同样的输出(参见Fig4),也就是ACB的一部分仍然可以提取正确的特征。
因此本文假定认为ACB可以增强对图像旋转失真的鲁棒性,从而可以使得模型更好的泛化到没见过的数据上。
因此本文有用旋转过的图像测试模型,包括逆时针旋转90°、180°翻转和上下翻转。虽然每个模型的精度都有所降低,但是具有水平核的很明显具有更好的精度。
因此可以推测,模型在180°翻转和上下翻转时具有相似的性能,因为180°翻转+左右翻转就相当于上下翻转了,因此该模型对数据增强中的左右翻转具有鲁棒性。
总的来说,本文证明了ACB尤其是内部的水平核,可以有效的提升模型对于旋转变形的鲁棒性。
虽然这可能不是ACNet有效的主要原因,但本文依然认为它有望启发对旋转不变性问题的进一步研究。
Part C ACB对卷积核骨架的增强
显然,添加水平核和垂直核可以看做是显式增强常规卷积核的一种手段,本节试图通过探究卷积骨架和边角处的权重差异来解释ACNet的有效性。
受CNN剪枝操作的启发,本文通过在CIFAR-10上训练的Resnet-56中移除不同空间位置的一些权重来观察网络的性能变化。具体而言就是将卷积核中权重随机置零达到这种效果。
比如Fig5(a)中corner就是从每3x3卷积核的四个角中随机选择权重将其置零,从而达到每一卷积层特定的稀疏比。而44%的稀疏比意味着在3x3卷积中移除4个角点达到的稀疏比;
对于skeleton则是对骨架中的权重进行随机置零;
对于global的情况则是不区分corner还是skeleton而是卷积核中每一权重都有同样被选的概率。
上述实验使用不同随机数种子重复了5次后计算平均值得到了Fig5(a)的对比结果。
可以看到,随着稀疏比的进一步增加三种情况下模型精度仅不断下降,但由于随机小型下降性不是线性的。而且也能看到稀疏corner的权重对模型精度影响是最小的,但是稀疏skeleton会严重影响模型的精度。这一现象显示出卷积核skeleton部分权重对模型的特征表征能力更重要。
下面实验进一步验证了上述观察现象是否适用于ACNet。通过BN融合和分支融合将ACNet转换为其对应标准版本并进行不同位置的稀疏化,通过Fig5(b)可以看出差异还是很大的,稀疏corner部位高达60%时才对模型精度有显著影响,而稀疏skeleton则对模型精度有更严重的影响,稀疏比为13%时就有显著的精度下降了,此时对应skeleton中23.4%的权重被移除了。
随后本文通过探究卷积核的具体数值来解释上述原因。具体就是将卷积层中所有融合后的2D卷积核加起来,计算最大值执行归一化,随后计算所有层归一化后的均值。比如F(i,j)表示第j个卷积核的第i层,L表示所有层数,则最终的average kernel magnitude matrix卷积核平均幅度矩阵通过下式计算:
第i层卷积核的总和为:
Fig6(a)和(b)分别展示了常规卷积计算的ResNet-56和融合后的ACNet计算的average kernel magnitude matrix结果,其中颜色或者数值的大小对应于每一个位置的相对重要性,因此数值越大以及颜色越深对应该位置的重要性越高。
因此从Fig6(a)中可以看出,常规训练的ResNet-56中不同参数之间的权重也是不均衡的,中心位置权重更高,四个角落权重较低;而Fig6(b)也能看出在ACNet中也体现了这种趋势,四个边角的平均值在0.4左右而skeleton权重在0.6左右,最中心位置的权重为1.0,说明中心位置在3x3卷积核中占据主导地位。
需要注意的一点是,因为垂直核、水平核与方形卷积核对应位置上的权重可能符号相反,使得相加后的幅度可能会更大或更小,但有一个一致的观察现象就是模型总是学者如何增强每一层的骨架(skeleton)。
随后本文继续研究将非对称卷积添加到其他位置而不是skeleton位置时模型是如何变化的。尤其是采用相同的实验设定训练ACNet对应ResNet-56版本,但是将水平核向下移动一个像素,垂直核向右移动一个像素。(对应Fig6©)观察到的实验结果是这种ACB也可以起到增强边界的作用但是不似常规ACB对skeleton增强的那么密集。这种情况下训练的模型精度为74.67%,比常规ACNet精度低0.42%。
在不同位置的ACB也进行了相似的剪枝实验,可以看到对corner剪枝依旧对性能影响最小,对skeleton剪枝对模型精度影响最大,左上和右下角剪枝的影响居中。
总结:
(1)卷积核骨架(skeleton)位置比边角位置(corner)更重要;
(2)ACB可以显著增强skeleton部分从而提升模型性能;
(3)与常规ACB相比,将水平核和垂直核添加到卷积核的边界上会降低ACNet精度;
(4)这样做可以提升边界部分的幅度但是无法消除其他部分的影响。
因此本文将ACNet的有效性部分归因于其能增强skeleton的能力。直观地说,ACNet遵循平方卷积核的性质。
Section V Conclusion
为了提升各种CNN结构的性能,本文提出了非对称卷积模块,其结果是三路卷积(水平核、垂直核、卷积核)的加和输出。
通过将CNN中常规卷积替换为非对称卷积可以搭建费对称卷积网络ACNet,并且在训练之后可以将其转换回原始的结构。
通过在CIFAR数据集和ImageNet数据集上基于费对称卷积搭建多种网络模型(残差网络、密集连接网络等)都显示出ACNet可以增强模型对于旋转变形的鲁棒性,部分原因是ACNet会显式增强卷积核中骨架部分skeleton的重要性。
值得关注的一点是,ACNet没有引入额外的超参数或者增加任何推断时间,非常容易就可以整合进主流的模型框架中。
参考:【CNN结构设计】无痛的涨点技巧:ACNet