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

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


前言

对CNN结构的设计,之前的工作主要关注层间的连接方式,如 VGG 简单地把层堆叠在一起,ResNet 通过 identity mapping 把 block 的输入和输出加在一起,DenseNet 用 densely connecting 把每一层的输出拼接起来…而这篇文章提出的 ACNet 是通过寻找卷积核的权重与空间位置之间的关系设计的,实质上是一个即插即用模块,可以与其他网络方便地结合,达到 SOTA 性能。


Asymmetric Convolution Block (ACB)

在这里插入图片描述
一般 CNN 的卷积层都是用一个正方形的核,假设为 d × d d \times d d×d,而这里的 ACB ,还另外用了 1 × d 1 \times d 1×d d × 1 d \times 1 d×1 两个核来对方形核的 skeletons (中心十字架)位置进行加强。
训练的时候(上左图)ACB 有三个并行的卷积分支,而测试的时候(上右图)可以把三个分支融合成一个正方形核,不需要额外的计算开销。

卷积分支的融合

每个分支融合conv和BN

在这里插入图片描述
设原来的 kernel 为 F = [ F 1 , F 2 , . . . , F C o u t ] ∈ R C i n × d × d × C o u t F=[F_1, F_2, ..., F_{C_{out}}] \in R^{C_{in} \times d \times d \times C_{out}} F=[F1,F2,...,FCout]RCin×d×d×Cout ,BN层的均值 μ = [ μ 1 , μ 2 , . . . , μ C o u t ] \mu=[\mu_1, \mu_2, ..., \mu_{C_{out}}] μ=[μ1,μ2,...,μCout],标准差 σ = [ σ 1 , σ 2 , . . . , σ C o u t ] \sigma=[\sigma_1, \sigma_2, ..., \sigma_{C_{out}}] σ=[σ1,σ2,...,σCout],拟合均值 β = [ β 1 , β 2 , . . . , β C o u t ] \beta=[\beta_1, \beta_2, ..., \beta_{C_{out}}] β=[β1,β2,...,βCout],拟合标准差 γ = [ γ 1 , γ 2 , . . . , γ C o u t ] \gamma=[\gamma_1, \gamma_2, ..., \gamma_{C_{out}}] γ=[γ1,γ2,...,γCout]
进行融合之后,等价于一个卷积层,核 F f u s i o n 1 F_{fusion}^1 Ffusion1
F f u s i o n 1 = [ γ 1 σ 1 F 1 , γ 2 σ 2 F 2 , . . . , γ C o u t σ C o u t F C o u t ] F_{fusion}^1=[\frac{\gamma_1}{\sigma_1} F_1, \frac{\gamma_2}{\sigma_2}F_2, ..., \frac{\gamma_{C_{out}}}{\sigma_{C_{out}}}F_{C_{out}}] Ffusion1=[σ1γ1F1,σ2γ2F2,...,σCoutγCoutFCout]
偏置 b f u s i o n 1 = [ b 1 1 , b 2 1 , . . . , b C o u t 1 ] b_{fusion}^1=[b_1^1, b_2^1, ..., b_{C_{out}}^1] bfusion1=[b11,b21,...,bCout1]中第 i i i 个分量为
b i 1 = − μ i γ i σ i + β i b_i^1=-\frac{\mu_i\gamma_i}{\sigma_i}+\beta_i bi1=σiμiγi+βi

并行分支融合

在这里插入图片描述
如上图所示,把三个卷积分支合并,得到的仍是一个卷积层,核 F f u s i o n 2 F_{fusion}^2 Ffusion2
F f u s i o n 2 = F f u s i o n 1 ⊕ F ˉ f u s i o n 1 ⊕ F ^ f u s i o n 1 F_{fusion}^2= F_{fusion}^1 \oplus \bar{F}_{fusion}^1 \oplus \hat{F}_{fusion}^1 Ffusion2=Ffusion1Fˉfusion1F^fusion1
其中第 i i i 个分量为
F i 2 = γ i σ i F i ⊕ γ ˉ i σ ˉ i F ˉ i ⊕ γ ^ i σ ^ i F ^ i F_i^2= \frac{\gamma_i}{\sigma_i} F_i \oplus \frac{\bar{\gamma}_i}{\bar{\sigma}_i} \bar{F}_i \oplus \frac{\hat{\gamma}_i}{\hat{\sigma}_i} \hat{F}_i Fi2=σiγiFiσˉiγˉiFˉiσ^iγ^iF^i
偏置 b f u s i o n 2 b_{fusion}^2 bfusion2
b f u s i o n 2 = b f u s i o n 1 + b ˉ f u s i o n 1 + b ^ f u s i o n 1 b_{fusion}^2=b_{fusion}^1+\bar{b}_{fusion}^1+\hat{b}_{fusion}^1 bfusion2=bfusion1+bˉfusion1+b^fusion1
其中第 i i i 个分量为
b i 2 = − μ i γ i σ i − μ ˉ i γ ˉ i σ ˉ i − μ ^ i γ ^ i σ ^ i + β i + β ˉ i + β ^ i b_i^2=-\frac{\mu_i\gamma_i}{\sigma_i}-\frac{\bar \mu_i \bar \gamma_i}{\bar \sigma_i}-\frac{\hat \mu_i \hat \gamma_i}{\hat \sigma_i}+\beta_i+\bar \beta_i+\hat \beta_i bi2=σiμiγiσˉiμˉiγˉiσ^iμ^iγ^i+βi+βˉi+β^i

最后相当于把三个分支等价融合成了一个方形核卷积层,测试的时候不需要额外的时间和计算开销。


实验

ACNet 在 Cifar 和 ImageNet 上都取得了很好的效果,这个不多说。值得一提的是,为了证明 skeleton 处的权重更重要,作者在卷积核的不同位置抹掉一些参数,得到了下图的结果
在这里插入图片描述
在这里插入图片描述
在 ResNet 和 ACNet 上的实验都表明,抹掉 skeleton 的参数,对性能造成的损害更大,这就说明了卷积核中不同位置确实有不同的重要性,而 skeleton 的权重相对来说更重要。这也是为什么 ACNet 采用两个条状卷积核对原始方形卷积核进行加强能获得提升的原因。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值