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

文章目录

  • 一. 摘要
  • 二. 研究背景
  • 三. 相关工作
    • 3.1. 非对称卷积
    • 3.2. CNN架构中的中性结构
  • 四. 本文方法
    • 4.1. 公式
    • 4.2. 利用卷积的可加性
    • 4.3. ACB不增加任何推理时间开销
  • 五. 实验部分
  • 六. 代码实现
  • 参考文献
  • 本文文章来自ICCV2019: 通过非对称卷积块增强CNN的核骨架。论文地址:https://arxiv.org/abs/1908.03930v1
  • 代码开源在:https://github.com/ShawnDing1994/ACN
  • 本文主要内容来自:3×3卷积+1×3卷积+3×1卷积=白给的精度提升!

一. 摘要

由于在给定的应用环境中设计合适的卷积神经网络(CNN)结构需要大量的人工工作大量的GPU资源消耗,研究界正在寻找网络结构无关的CNN结构,这种结构可以很容易地插入到多个成熟的体系结构中,以提高我们实际应用程序的性能。我们提出了非对称卷积块(ACB)作为CNN的构造块,它使用一维非对称卷积核来增强方形卷积核,我们用ACBs代替标准的方形卷积核来构造一个非堆成卷积网络ACNet,该网络可以训练到更高的精度。训练后,我们等价地将ACNet转换为相同的原始架构,因此将不需要额外的计算。实验证明,ACNet可以CIFAR和ImageNet上显著提高各种经典模型的性能。

二. 研究背景

卷积神经网络在视觉理解方面取得了巨大的成功,这使得其可以应用在安全系统,移动电话,汽车等各种应用中。由于前端设备通常受限于计算资源,就要求网络在保证精度的条件下要尽可能轻量。另一方面,随着CNN架构设计的相关研究增多,模型的性能得到了显著改善,但当前现有的模型不能满足我们的特定需求时,要定制一种新的架构需要花费极高的成本。最近,研究者们正在寻求与架构无关的新型CNN结构,例如SE块和准六边形内核,它们可以直接和各种网络结构结合使用,以提高它们的性能。最近对CNN结构的研究主要集中在1)层之间是如何相互连接的,例如简单的堆叠在一起,恒等映射,密集连接等;2)如何组合不同层的输出以提高学习表示的质量;本文提出了非对称卷积块(ACB),它是用三个并行的核来代替原始的核, 它是用三个并行的 d×d,1×dd \times d, 1 \times dd×d,1×d and d×1d \times 1d×1 核来代替原始的 d×dd \times dd×d 核,如图Figure1所示:如图Figure1所示:

给定一个网络,我们通过将每个方形卷积核替换为ACB模块并训练网络到收敛。之后我们将每个ACB中非对称核的权值加到方形核的对应位置,将ACNet转换为和原始网络等效的结构。ACNet可以提高基准模型的性能,在CIFAR和ImageNet上优势明显。更好的是,ACNet引入了0参数,因此无需仔细调参就能将其与不同的CNN结构结合起来,并且易于在主流CNN框架上实现以及不需要额外的推理时间开销。

三. 相关工作

3.1. 非对称卷积

非对称卷积通常用于逼近现有的正方形卷积以进行模型压缩和加速,先前的一些工作表明,可以将标准的 d×dd \times dd×d 卷积分解为 1×d1 \times d1×d 和 d×1d \times 1d×1 卷积,以减少参数量。其背后的理论相当简单:如果二维卷积核的秩为1,则运算可等价地转换为一系列一维卷积。然而,由于深度网络中下学习到的核具有分布特征值,其内在秩比实际中的高,因此直接将变换应用于核会导致显著的信息损失。Denton等人基于SVD分解找到一个低秩逼近,然后对上层进行精细化以恢复性能。Jaderberg等人通过最小化重构误差,成功学习了水平核和垂直核。Jin等人应用结构约束使二维卷积可分离,在获得相当精度的条件下时间加速了2倍。另一方面,非堆成卷积也被广泛的用来做网络结构设计,例如Inception-v3中,7×77×77×7 卷积被 1×71×71×7 卷积和 7×17×17×1 卷积代替。语义分割ENet网络也采用这种方法来设计高效的语义分割网络,虽然精度略有下降,但降低了33%的参数量。

3.2. CNN架构中的中性结构

我们不打算修改CNN架构,而是使用一些与架构无关的结构来增强现有的模型。因此,我们的方法对任何网络都是有效的。例如,SE块可以附加到卷积层后,使用学习到的权重重新缩放特征图通道数,从而在合理的附加参数量和计算代价下显著提高精度。作为另一个示例,可以将辅助分类器插入模型中以帮助监督学习过程,这确实可以提高性能,但是需要额外的人为调整超参数。相比之下,ACNet在训练中不会引入任何超参数,并且在推理过程中不需要额外的参数和计算。因此,在实际应用中,开发人员可以使用ACNet来增强各种模型,而无需进行详细的参数调整,并且最终用户可以享受性能提升而又不会减慢推理速度。

四. 本文方法

4.1. 公式

对于一个尺寸为 H×WH \times WH×W 通道数为 DDD 的卷积核,以通道数为 CCC 的特征图作为输入,我们使用 F∈RH×W×C\boldsymbol{F} \in \mathbb{R}^{H \times W \times C}F∈RH×W×C 表示卷积核,M∈RU×V×C\boldsymbol M \in \mathbb{R}^{U \times V \times C}M∈RU×V×C 表示输入,这是一个尺寸为 U×VU×VU×V 通道数为 CCC 的特征图,O∈RR×T×D\boldsymbol{O} \in \mathbb{R}^{R \times T \times D}O∈RR×T×D 代表输出特征图。对于这个层的第 jjj 个卷积核,相应的输出特征映射通道是:

O:,:,j=∑k=1CM:,:,k∗F:,:,k(j)(1)\boldsymbol O_{:,:, j}=\sum_{k=1}^{C} \boldsymbol M_{:,:, k} * \boldsymbol F_{:,:, k}^{(j)}\tag{1} O:,:,j​=k=1∑C​M:,:,k​∗F:,:,k(j)​(1) 其中:∗*∗ 是二维卷积算子。M:,:,k\boldsymbol M_{:,:, k}M:,:,k​ 是 M\boldsymbol MM 的第 kkk 个通道的尺寸为 U×VU×VU×V 的特征图,F:,:,k(j)\boldsymbol F_{:,:, k}^{(j)}F:,:,k(j)​ 代表 F(j)\boldsymbol F^{(j)}F(j) 的第 kkk 个通道的尺寸为 H×WH \times WH×W 的特征图。在现代CNN体系结构中,批量归一化(BN)被广泛使用,以减少过度拟合,加快训练过程。通常情况下,批量归一化层之后通常会接一个线性变化,以增强表示能力。和公式1相比,输入变成:
O:,:,j=(∑k=1CM:,k∗F:,:,k(j)−μj)γjσj+βj(2)\boldsymbol O_{:,:, j}=\left(\sum_{k=1}^{C} \boldsymbol M_{:, k} * \boldsymbol F_{:,:, k}^{(j)}-\mu_{j}\right) \frac{\gamma_{j}}{\sigma_{j}}+\beta_{j}\tag{2} O:,:,j​=(k=1∑C​M:,k​∗F:,:,k(j)​−μj​)σj​γj​​+βj​(2)其中:μj\mu_{j}μj​ 和 σj\sigma_{j}σj​ 是批标准化的通道平均值和标准差, γj\gamma_{j}γj​ 和 βj\beta_{j}βj​ 是缩放系数和偏移量。

4.2. 利用卷积的可加性

我们试图以不对称卷积可以等效地融合到标准方形核层中的方式来使用,这样就不会引入额外的推理时间计算负担。我们注意到卷积的一个有用性质:如果几个大小兼容的二维核在相同的输入上以相同的步幅操作以产生相同分辨率的输出,并且它们的输出被求和,我们可以将这些核在相应的位置相加,从而得到一个产生相同输出的等效核。也就是说,二维卷积的可加性可以成立,即使核大小不同。

I∗K(1)+I∗K(2)=I∗(K(1)⊕K(2))(3)\boldsymbol{I} * \boldsymbol{K}^{(1)}+\boldsymbol{I} * \boldsymbol{K}^{(2)}=\boldsymbol{I} *\left(\boldsymbol{K}^{(1)} \oplus \boldsymbol{K}^{(2)}\right)\tag{3} I∗K(1)+I∗K(2)=I∗(K(1)⊕K(2))(3) 其中:I\boldsymbol{I}I 是一个矩阵,K(1)\boldsymbol{K}^{(1)}K(1) 和 K(2)\boldsymbol{K}^{(2)}K(2) 是具有兼容尺寸的两个2D核,⊕\oplus⊕ 是在对应位置的求和操作。注意 I\boldsymbol{I}I 可能会被裁剪或者执行Padding操作。这里“兼容”意味着我们可以把较小的内核“修补”到较大的内核上。在形式下,ppp 层和 qqq 的下面这种转换是可行的:M(p)=M(q),Hp≤Hq,Wp≤Wq,Dp=Dq(4)\boldsymbol M^{(p)}=\boldsymbol M^{(q)}, H_{p} \leq H_{q}, W_{p} \leq W_{q}, D_{p}=D_{q}\tag{4} M(p)=M(q),Hp​≤Hq​,Wp​≤Wq​,Dp​=Dq​(4)

例如,3×13×13×1 和 1×31×31×3 是和 3×33×33×3 兼容的。通过研究滑动窗口形式的卷积计算,可以很容易地验证这一点,如图Figure2所示:

对于一个特定的卷积核 F(j)\boldsymbol F^{(j)}F(j) ,一个指定的点 yyy,则输出 O:,:,j\boldsymbol O_{:,:, j}O:,:,j​ 可以使用下式计算:

y=∑c=1C∑h=1H∑w=1WFh,w,c(j)Xh,w,c(5)y=\sum_{c=1}^{C} \sum_{h=1}^{H} \sum_{w=1}^{W} \boldsymbol F_{h, w, c}^{(j)} X_{h, w, c}\tag{5} y=c=1∑C​h=1∑H​w=1∑W​Fh,w,c(j)​Xh,w,c​(5)其中,XXX 是输入 M\boldsymbol MM 上相应的滑动窗口。显然,当我们将两个滤波器产生的输出通道相加时,如果一个通道上的每个 yyy,其在另一个通道上的对应点共享相同的滑动窗口,则其相加性质(等式3)成立。

4.3. ACB不增加任何推理时间开销

在本文中,我们关注 3×33×33×3 卷积,这在现代CNN体系结构中大量使用。在给定的体系结构下,我们通过简单地将每个 3×33×33×3 卷积层替换为ACB来构建ACNet,该ACB模块包含三个并行层,内核大小分别为 3×33×33×3,1×31×31×3 ,和 3×13×13×1 。和标准CNN的常规做法类似,在三层中的每一层之后都进行批量归一化,这被成为分子,并将三个分支的输出综合作为ACB的输出。请注意,我们可以使用与原始模型相同的配置来训练ACNet,而无需调整任何额外的超参数。如4.1和4.2节中所示,我们可以训练ACNet达到更高的精度。训练完成后,我们尝试将每个ACB转换为产生相同输出的标准卷积层这样,与经过常规训练的对等方相比,我们可以获得不需要任何额外计算的功能更强大的网络。该转换通过两个步骤完成,即BN融合和分支融合。

BN融合: 卷积的同质性使得后续的BN和线性变换可以等价的融合到具有附加偏置的卷积层中。从公式2可以看出,对于每个分支,如果我们构造一个新的内核 γjσjF(j)\frac{\gamma_{j}}{\sigma_{j}}\boldsymbol F^{(j)}σj​γj​​F(j) 然后加上偏置 μjγjσj+βj\frac{\mu_{j}\gamma_{j}}{\sigma_{j}}+\beta_{j}σj​μj​γj​​+βj​ ,我们可以产生相同的输出。

分支融合: 我们通过在平方核的相应位置加入非对称核,将三个BN融合分支合并成标准卷积层。在实际应用中,这种转换是通过建立一个原始结构的网络并使用融合的权值进行初始化来实现的,这样我们就可以在与原始结构相同的计算预算下产生与ACNet相同的输出。更正式地,对于第 jjj 个卷积核,F′(j)\boldsymbol{F}^{\prime(j)}F′(j) 表示融合后的卷积核,bjb_{j}bj​ 代表偏置,Fˉ(j)\bar{\boldsymbol{F}}^{(j)}Fˉ(j) 和 F^(j)\hat{\boldsymbol{F}}^{(j)}F^(j) 分别代表 1×31×31×3 和 3×13×13×1 卷积核的输出,融合后的结果可以表示为:

F′(j)=γjσjF(j)⊕γˉjσˉjFˉ(j)⊕γ^jσ^jF^(j)bj=−μjγjσj−μˉjγˉjσˉj−μ^jγ^jσ^j+βj+βˉj+β^j(6)\begin{array}{c}{\boldsymbol{F}^{\prime(j)}=\frac{\gamma_{j}}{\sigma_{j}} \boldsymbol{F}^{(j)} \oplus \frac{\bar{\gamma}_{j}}{\bar{\sigma}_{j}} \bar{\boldsymbol{F}}^{(j)} \oplus \frac{\hat{\gamma}_{j}}{\hat{\sigma}_{j}} \hat{\boldsymbol{F}}^{(j)}} \\\\ {b_{j}=-\frac{\mu_{j} \gamma_{j}}{\sigma_{j}}-\frac{\bar{\mu}_{j} \bar{\gamma}_{j}}{\bar{\sigma}_{j}}-\frac{\hat{\mu}_{j} \hat{\gamma}_{j}}{\hat{\sigma}_{j}}+\beta_{j}+\bar{\beta}_{j}+\hat{\beta}_{j}}\end{array}\tag{6} F′(j)=σj​γj​​F(j)⊕σˉj​γˉ​j​​Fˉ(j)⊕σ^j​γ^​j​​F^(j)bj​=−σj​μj​γj​​−σˉj​μˉ​j​γˉ​j​​−σ^j​μ^​j​γ^​j​​+βj​+βˉ​j​+β^​j​​(6) 然后我们可以很容易地验证对于任意滤波器 jjj
O:,i,j+Oˉ:,i,j+O^:,i,j=∑k=1CM:,k∗F:,k(j)+bj(7)\boldsymbol O_{:, i, j}+\bar{\boldsymbol O}_{:, i, j}+\hat{\boldsymbol O}_{:, i, j}=\sum_{k=1}^{C} \boldsymbol M_{:, k} * \boldsymbol F_{:, k}^{(j)}+b_{j}\tag{7} O:,i,j​+Oˉ:,i,j​+O^:,i,j​=k=1∑C​M:,k​∗F:,k(j)​+bj​(7) 其中 O:,i,j,Oˉ:,i,j,O^:,i,j\boldsymbol O_{:, i, j},\bar{\boldsymbol O}_{:, i, j},\hat{\boldsymbol O}_{:, i, j}O:,i,j​,Oˉ:,i,j​,O^:,i,j​ 代表原始 3×3,1×33 \times 3, 1 \times 33×3,1×3 and 3×13 \times 13×1 三个分支的输出。Figure3展示了这个过程。

值得注意的是,尽管可以将ACB等价地转换为标准层,但是等效值仅在推理时才成立,因为训练动态是不同的,从而导致不同的性能。训练过程的不等价性是由于内核权重的随机初始化,以及由它们参与的不同计算流得出的梯度

五. 实验部分

4.1节和4.2节,论文在CIFAR10和CIFAR100数据集,ImageNet数据集进行对比测试,结果如Table1,Table2,Table3所示:

六. 代码实现

待更新~~~~~~~

参考文献

本文主要参考了下面作者,这里表示感谢!

  • 3×3卷积+1×3卷积+3×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

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

  4. 轻量级网络论文: 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 ...

  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. rep论文阅读1:ACNet_Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks

    ACNet:通过非对称卷积模块增强CNN的卷积核骨架 paper:https://arxiv.org/abs/1908.03930 code:https://github.com/DingXiaoH/ ...

  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. 『论文笔记』TensorFlow1.6.0+Keras 2.1.5+Python3.5+Yolov3训练自己的数据集!

    TensorFlow1.6.0+Keras 2.1.5+Python3.5+Yolov3训练自己的数据集! 文章目录 前期准备 一. Yolov3简要介绍 1.1. Yolov3网络结构图 1.2. ...

  9. 『论文笔记』Two Causal Principles for Improving Visual Dialog

    Two Causal Principles for Improving Visual Dialog 一句话总结 从因果图角度审视视觉对话任务,切断对话历史与答案的直接因果效应,添加混杂因子[用户偏好] ...

最新文章

  1. android 蓝牙找不到电脑,Android6.0 蓝牙搜索不到设备原因
  2. c语言gga字符串校验和代码,NMEA-0183协议解析(示例代码)
  3. zookeeper的名词复盘-会话
  4. Redis 持久化之RDB和AOF
  5. 可能是最简单的同步fifo 的设计
  6. asp.net core mvc剖析:KestrelServer
  7. 图灵机器人调用数据恢复_机器人也能撩妹?python程序员自制微信机器人,替他俘获女神芳心...
  8. 前端学习(2587):权限控制的分类和意义
  9. python解析response的json_python:解析requests返回的response(json格式)说明
  10. 2013吉林通化邀请赛 1004 D-City 并查集求连通分支数
  11. 镁光ssd管理工具 linux,镁光C400固态硬盘08TH固件及升级软件
  12. ICRoute 语音识别芯片/声控芯片 用声音去沟通 LD332X系列语音识别芯片
  13. 一起谈.NET技术,C#中的lock关键字
  14. mouseover和mouseenter的区别?
  15. 一年级语文四季心田花开专项练习题
  16. 解决Uncaught TypeError Cannot read properties of undefined (reading ‘props‘)
  17. 苹果新品发布会?看美维公司的小伙伴如何评论!
  18. 【HCIP题库哪里买?】
  19. RxJava 2.x入门教程
  20. 【思否编程公开课】限时免费 网络安全之 Kali 渗透入门实战

热门文章

  1. 【Oracle问题】Oracle12c安装问题:INS-30014
  2. DG主库控制文件丢失处理方法
  3. python爬虫——使用bs4爬取链家网的房源信息
  4. Karhunen-Loeve Transform (KLT) 原理及PCA应用(转载)
  5. 一个月!新站从降权到百度权重1全过程
  6. NC资金管理的银行对账下的余额调节表显示帐面余额不平,如何检查?
  7. 织梦DedeCMS简略标题字数限制的修改方法
  8. SpringMvc简略运行流程
  9. Android上的linux终端模拟器
  10. 域名证书类型多不多?域名证书类型有哪些?