引入动态卷积,即根据多个卷积核对每个输入的关注程度,动态地对它们进行聚合。与静态算法(每层只有一个卷积核)相比,该算法显著提高了网络的表示能力,但增加了大量的计算开销,对高效的网络神经网络更加友好。并且可以很容易地集成到现有的CNN架构中路
论文名称:Dynamic Convolution: Attention over Convolution Kernels
作者:Yinpeng Chen ,Xiyang Dai, Mengchen Liu, Dongdong Chen, Lu Yuan, Zicheng Liu
Code:https://github.com/kaijieshi7/Dynamic-convolution-Pytorch(非官方)
摘要
-
相比高性能深度网络,轻量型网络因其低计算负载约束(深度与通道方面的约束)导致其存在性能降低,即比较有效的特征表达能力。为解决该问题,作者提出动态卷积:它可以提升模型表达能力而无需提升网络深度与宽度。。
-
不同于常规卷积中的单一核,动态卷积根据输入动态的集成多个并行的卷积核为一个动态核,该动态核具有数据依赖性。多核集成不仅计算高效,而且具有更强的特征表达能力(因为这些核通过注意力机制以非线性形式进行融合)。
-
通过简单地使用动态卷积的最新架构MobilenetV3-Small,在ImageNet分类中排名前1的精度提高了2.3%,仅增加了4%的错误,而在COCO keypoint检测中实现了2.9 AP增益。
Dynamic Convolution
生成方法
动态卷积将SE Block生成的注意力对卷积核进行加权求和,最终得到一个随着输入变化的动态卷积核,其生成方法而下:
- 使用SE Block生成注意力,需要注意的是,这里的输出通道数不再是原通道,而是 K K K,表示后面的 c o n v 1 ⋯ c o n v K conv_1\cdots conv_K conv1⋯convK
- 使用一个 s o f t m a x softmax softmax将注意力进行归一化
- 将得到的注意力与相应的静态卷积核进行广播相乘,加权求和得到最终的动态卷积
为什么要约束注意力输出
约束注意力输出可以促进注意力模型πk(x)的学习。
具体来说,通过约束其和为1,使得动态卷积核 W ~ = ∑ k π k W ~ k \tilde{W}=\sum_k{\pi_k\tilde{W}_k} W~=∑kπkW~k保持在核空间中 { W ~ k } \{\tilde{W}_k\} {W~k}的凸包中,下面给出一个例子
在一个拥有三个卷积核的空间内,限制 0 < π k ( x ) < 1 0<\pi_k(x)<1 0<πk(x)<1只能将动态核限制在这两个三角锥内,而限制 π k ( x ) = 1 \pi_k(x)=1 πk(x)=1可以使动态核限制在中间的三角形区域,在上图中动态核被压缩在这一红点。显而易见,归一化使得 π k ( x ) \pi_k(x) πk(x)的学习更加简化。
训练早期的近似均匀注意力
在训练早期,近乎均匀的注意力可以促进所有内核 { W k ~ } \{\tilde{W_k}\} {Wk~} 的学习,这个观点在 中也有体现
作者在最初使用 s o f t m a x softmax softmax并没有获得很好的效果,甚至相较于原网络还有一定程度上的精度损失
这主要是因为
s
o
f
t
m
a
x
softmax
softmax的性质,详细可以见此,对于方差较大的输入,其输出接近
o
n
e
−
h
o
t
one-hot
one−hot编码,这使得注意力分布极其不均匀,因此使用了参数temperature
减小输入的方差,从而获得了更加优秀的效果。
总结
总的来说,本文为增加网络的复杂性提出了一种新的思路,不同与普通卷积,动态卷积会根据输入动态的调整卷积核的参数,而不是对所有输入一视同仁
不一视同仁是最近注意力机制方面都在强调的东西,也是其所追求的目标
本文在增加极少运算量的情况下,显著的提高的轻量级网络的性能,对轻量级网络性能的提升有一定的帮助
虽然其运算量几乎没有变化,但是动态卷积网络所需要的参数量是大幅增加的
并且在训练时,也是一个二阶优化问题,相较于普通卷积更难以训练