ACNet:通过非对称卷积模块增强CNN的卷积核骨架

paper:https://arxiv.org/abs/1908.03930

code:https://github.com/DingXiaoH/ACNet

Abstract

为特定的应用设计合适的CNN架构本身涉及到繁重的手动工作或者需要高昂的GPU训练时间,业界也正在寻求一些CNN结构可以方便的集成到其他成熟架构中,进一步提升应用到实际任务中的性能。本文提出了非对称卷积模块(Asymmetric Convolution Block,ACB)这样一种结构无关的卷积模块,使用一维非对称卷积来代替卷积网络中的常规卷积层,这样构建出的网络称之为ACNet(Asymmetric Convolutional Network),可以进一步提升网络精度;并且没有增加任何额外的开销。本文已经在CIFAR和ImageNet数据集上基于不同网络都验证了ACNet的有效性。通过实验本文将ACB的有效性归因于对旋转变形的鲁棒性以及增强了卷积核的中心骨架部分的能力。

1. 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位置的权重,达到更好的特征提取效果;

因为3 x 3卷积是大多数网络的基础组件,因此ACNet的实验都是针对3 x 3卷积进行的。训练阶段就是将现有网络中的每一个3 x 3卷积换成3 x 1卷积 + 1 x 3卷积 + 3 x 3卷积共三个卷积层,最终将这三个卷积层的计算结果进行融合获得卷积层的输出。

测试阶段:通过BN融合和分支融合,没有增加额外的计算量。类似Tensorflow中进行fake quantization的实现?将BN后的权重系数和偏置作为新的权重系数和偏置项进行计算。

如图1右图所示,这部分主要对三个卷积核进行融合。这部分在实现过程中就是使用融合后的卷积核参数来初始化现有的网络,因此在推理阶段,网络结构和原始网络是完全一样的了,只不过网络参数采用了特征提取能力更强的参数即融合后的卷积核参数,因此在推理阶段不会增加计算量。
        
更好的地方在于:

        (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可以增强模型对旋转变形的鲁棒性,有助于对旋转不变性问题的进一步研究。

2. Related work

2.1. Asymmetric convolutions非对称卷积




非对称卷积常用于近似常规的方形卷积用于压缩和压缩。已有一些前期工作[4, 17]表明常规的dxd卷积可以拆分为一个dx1卷积和一个1xd卷积,拆分后可以减少网络参量以及所需的计算。背后的原理很简单:如果一个2D的卷积核秩为1,就可以等效为一系列1D卷积。但是由于深度神经网络中卷积核的分布,实际其本征的秩往往大于1,此时对卷积核直接进行变换会导致明显的信息丢失。Denton等人通过奇异值分解进行低秩近似解决这一问题,还有通过最小化l2距离学习垂直和水平卷积核。



另一方面,非对称卷积也广泛用作体系结构设计元素用来保存参数和计算.比如在Inception V3中就将7x7卷积替换为了一系列1x7和7x1的卷积,但是这篇文章的作者也发现这种替换在较低层次的卷积中并不等效;ENet也用这种等效替代的方法将5x5的卷积进行精简设计更高效的语义分割网络,在增加少量计算成本的基础上增加了感受野。在EDANet中也是用相似的idea将3x3卷积进行分解,在基本保持精度的前提下减少了33%的网络参量。
而本文正相反,不是将每一层卷积进行分解,而是在训练过程中丰富特征空间,将他们学习到的知识融合到方形卷积核中。

2.2. Architecture-neutral CNN structures体系结构中立的CNN结构



        
本文希望不改变原有CNN结构的前提下使用一些结构中立的模块进一步提升目前SOTA模型的性能。这种方法有效的补充了仅在网络体系结构方面取得的创新。
        




如果一个CNN结构满足以下条件就称之为结构中立的:






        (1)无需任何假设前提,可用于任何模型;






        (2)有通用的提升。

        




比如SE block就是一个结构中立的模块,通过学习到的权重重新规划channel的权重;另一个例子是auxiliary classifier可以插入到模型中监督模型的训练,确实可以大幅度提升性能,虽然需要人工微调一些超参数。

        




而本文的ACNet在训练过程中没有引入任何超参数,在推理阶段也没有增加任何参数或计算成本。因此在实际应用中开发者可以使用ACNet来增强各种模型,而用户也可以在不影响推理过程的前提下享受性能的提升。

3. Asymmetric Convolutional Network非对称卷积网络

3.1. Formulation公式







对于D个大小为HxW的卷积核(F),输入C通道的特征图(M),输出的特征图表述为:

其中x表示为二维卷积。而CNN中为了克服过拟合以及加速训练过程广泛使用,经常放在线性变换之后用来增强模型的特征表述能力,经过BN处理后,输出变为:

其中 µ j 和σ j 分别对应逐通道的均值和方差,gamma和beta分别学习的是缩放因子和偏置项。

3.2. Exploiting the additivity of convolution 利用卷积的可加性



        本文致力于寻找一种不增加推理计算成本的方式将非对称卷积引入到常规的卷积中。本文发现了卷积的一种特性:
如果多个大小兼容的二维卷积以相同的步长对同样的输入进行操作,从而产生相同分辨率的输出,并将它们的结果相加;那么将这些卷积核在对应位置上相加,获得的卷积核是等效的,会产生同样的输出。

比如分别对同样的输入进行3x3,1x3,3x1的卷积操作,可以看到这三个卷积核对应的滑窗是一样的,因此通过将这三路的输出相加在数学上与,现将1x3,3x1的卷积核加到3x3卷积核得到新的卷积核,最后得到的输出是一样的。
        也就是利用卷积的可加性特性,有:

其中+表示的是将两个卷积核对应位置进行element-wise addition。需要注意的是I可以进行一定的裁剪或者填充。
而compatiable兼容的意思指的是可以将较小的卷积核patch(贴?)到较大的卷积核上,比如1x3和3x1的卷积核就是3x3兼容的。 

        通过卷积的滑动计算就可以证明.

3.3. ACB for free inference-time improvements

本文聚焦于在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可以等效的转换为标准层,但是只在推理时是等效的,因为训练过程中权重是随机初始化,基于此计算出来的梯度也不同因此在训练过程中是不等价的。

4. Experiments

5. Conclusion

为了提升各种CNN结构的性能,本文提出了非对称卷积模块,其结果是三路卷积(水平核、垂直核、卷积核)的加和输出。通过将CNN中常规卷积替换为非对称卷积可以搭建非对称卷积网络ACNet,并且在训练之后可以将其转换回原始的结构。
        


通过在CIFAR数据集和ImageNet数据集上基于费对称卷积搭建多种网络模型(残差网络、密集连接网络等)都显示出ACNet可以增强模型对于旋转变形的鲁棒性,部分原因是ACNet会显式增强卷积核中骨架部分skeleton的重要性。
        



值得关注的一点是,ACNet没有引入额外的超参数或者增加任何推断时间,非常容易就可以整合进主流的模型框架中。

rep论文阅读1:ACNet_Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks相关推荐

  1. 论文阅读 ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks

    论文阅读 ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks 前言 ...

  2. 论文阅读——ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks

    ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks ACNet:通过 ...

  3. 『论文笔记』ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks!

    ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks! 文章目录 一 ...

  4. ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks

    paper:http://xxx.itp.ac.cn/pdf/1908.03930.pdf code:mirrors / DingXiaoH / acnet · GitCode 摘要: 提出了非对称卷 ...

  5. 转载系列 |ICCV2019:ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution

    论文:ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks 论文链接 ...

  6. 轻量级网络论文: ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Block

    ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks PDF: ht ...

  7. 【MLDL】【skimming】ACNet: Strengthening the Kernel Skeletons for Powerful CNN

    略读2019 ICCV的ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Bl ...

  8. 目标检测论文阅读:Multi-scale Location-aware Kernel Representation for Object Detection(CVPR2018)

    Multi-scale Location-aware Kernel Representation for Object Detection 论文链接:https://arxiv.org/abs/180 ...

  9. rep论文阅读2:ResRep_Lossless CNN Pruning via Decoupling Remembering and Forgetting

    ACNet:通过去耦记忆和遗忘的无损CNN剪枝 paper:https://openaccess.thecvf.com/content/ICCV2021/papers/Ding_ResRep_Loss ...

最新文章

  1. 【python】一次移动平均算法
  2. 如何正确的使用Java8中的Optional类来消除代码中的null检查
  3. 安装惠普笔记本XP三种方法
  4. 面试 6:调整数组顺序使奇数位于偶数前面
  5. 下面不属于python第三方库的安装方法的是-python第三方库的pip安装方法
  6. @Mapper和@Repository的区别
  7. 解决ubuntu16.E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
  8. Gridview 手动排序实现
  9. ​Azure 助力下,C9 电竞战队所向披靡!​
  10. mysql 重置表索引_第19期:索引设计(哈希索引数据分布与使用场景)
  11. 【气动学】基于matlab RBF神经网络控制卫星轨道和姿态【含Matlab源码 377期】
  12. spring与spring mvc
  13. 树莓派串口通信编码_树莓派和STM32通过USB和串口通信记录
  14. ROW_NUMBER() OVER()函数用法;(分组,排序),partition by (转)
  15. 【原创】技术员 Ghost Win 10(x86/x64)企业版 201806
  16. ARKit入门到精通 1.0 - 实战案例 AR打地鼠-史小川-专题视频课程
  17. springboot毕设项目心怡音乐网站3764d(java+VUE+Mybatis+Maven+Mysql)
  18. 纯平显示器_绿色计算:切换到液晶纯平显示器
  19. tpshop报 商业用途必须购买正版,使用盗版将追究法律责任
  20. 项目需求--将文件(html格式的字符串)转换为MultipartFile格式的文件然后转调第三方接口

热门文章

  1. 多球或嵌套(氦-3、金箔)中子能谱议在线图形化解谱软件(NSUP)
  2. 《每个人的商学院》思维导图整理
  3. Python手写线性回归算法
  4. vue大数据表格解决方案的比较
  5. WAMP环境搭建(转)
  6. EXCEL相对引用,绝对引用和混合引用的区别
  7. 【Linux】vmware命令模式切换桌面模式
  8. 腾讯地图关键字智能提示搜索
  9. PlayOnLinux 安装 金山打字通2016
  10. VC操作Excel之基本操作