其实这篇文章很早就写好了,但作者其它论文波及到洗稿问题,所以先放着了。目前看这篇文章没被举报有洗稿的嫌疑,所以就收回来了
.
起源:晓飞的算法工程笔记 公众号
论文: Involution: Inverting the Inherence of Convolution for Visual Recognition
- 论文地址:https://arxiv.org/abs/2103.06255
- 论文代码:https://github.com/d-li14/involution
Introduction
论文认为卷积操作有三个问题:
- 空间不变(spatial-agnostic)的计算形式尽管节俭参数以及带来平移不变性,却也剥夺了卷积从不同地位挖掘不同特色的能力。
- 罕用的卷积核大小为$3\times 3$,过小的感触野会束缚与长距离特色的互动,限度特征提取能力。
- 卷积核的冗余性曾经被宽泛地发现。
为了解决上述的问题,论文提出了与卷积有相同属性的操作involution,核参数在空间下面特异,而在通道下面共享,次要有以下两个长处:
- 通道共享缩小了大量参数,使得involution能够应用更大的核,从而可能捕获长距离特色。
- 因为involution是空间特异的,雷同的网络不同的输出会产生不同大小的特色图,对应的核大小也不一样,所以involution依据输出特色动静生成核参数,可能自适应地提取更多的视觉信息,达到相似attention的成果。
Design of Involution
一组involution核可示意为$\mathcal{H}\in \mathbb{R}^{H\times W\times K\times K\times G}$,这里的分组与卷积相同,减少分组是为了减少核的复杂性。对于像素$X_{i,j}\in \mathbb{R}^C$,其involution核为$\mathcal{H}_{i,j,\cdot,\cdot,g}\in \mathbb{R}^{K\times K}$,$g=1,2,\cdots,G$为involtion核的分组,组内核共享。involution的特色图输入通过对输出特色进行Multiply-Add操作失去:
$k$为通道编号,involution核的大小取决于输出特色图的大小,通过核生成函数$\phi$动静生成:
$\Psi_{i,j}$为$\mathcal{H}_{i,j}$对应的输出像素合集。
Implementation Details
为了简洁,论文间接从单个像素$X_{i,j}$生成对应的involution核$\mathcal{H}_{i,j}$,更简单的构造兴许能带来更好的性能,但不是以后次要的工作。定义核生成函数$\phi$:$\mathbb{R}^C\mapsto\mathbb{R}^{K\times K\times G}$,$\Psi_{i,j}=\{(i,j)\}$:
$W_0\in\mathbb{R}^{\frac{C}{r}\times C}$和$W_1\in\mathbb{R}^{(K\times K\times G)\times\frac{C}{r}}$为线性变换,独特形成一个bottleneck构造,$r$为压缩因子,$\sigma$为BN+非线性激活。
公式4和公式6可示意为算法1和图1,在每个地位$(i,j)$通过核生成函数生成对应的involution核,再对该地位进行计算失去输入。
在构建残缺的网络时,以ResNet作为根底,将stem(结尾)的bottleneck中的$3\times 3$卷积替换成$3\times 3$或$7\times 7$的involution,将trunk(后续)的bottleneck中的$3\times 3$卷积替换成$7\times 7$的involution,$1\times 1$卷积保留用作通道交融与扩大。
Involution的劣势在于通道信息在核生成时利用了起来,并且后续应用较大的感触野取得更大的空间信息。另外在应用时,前后的$1\times 1$卷积也减少了通道交互,从而晋升了整体的性能。
In Context of Prior Literature
上面别离对involution进行两方面的探讨,别离是参数量降落的起源以及性能晋升的起源。
Convolution and Variants
Involution的思维非常简洁,从卷积的通道特异、空间共享转换成通道共享、空间特异,咱们从参数量和计算量两块来进行剖析(不思考bias和involution的G):
- 参数量方面,卷积和involution别离为$C\times K\times K\times C$和$H\times W\times K\times K\times C$,因为网络后续的特色图较小特点,involution可能节俭大量的参数。
- 计算量方面,不思考核生成局部,卷积和involtion别离为$H\times W \times C\times K\times K\times C$和$H\times W\times K\times K\times C$,因为involution在输入单像素后果时不须要像卷积那样综合多通道输出,计算量减少了一个量级。
因为规范卷积实际上会交融多个输出通道进行输入,而且通道不共享,导致参数量和计算量都很高。而分组卷积缩小了规范卷积中输入通道与输出通道之间的大量关联,和invlotion在参数量和计算量上有十分相似的中央:
- 参数量方面,分组卷积和involution别离为$\frac{C}{G}\times K\times K\times C$和$H\times W\times K\times K\times G$,而$G=C$的分组卷积和$G=1$的involution的参数量别离为$K\times K\times C$和$H\times W\times K\times K$,两者非常靠近。
- 计算量方面,不思考核生成局部,分组卷积和involution别离为$\frac{C}{G}\times H\times W \times K\times K\times C$和$H\times W\times K\times K\times C$,而$G=C$的分组卷积和$G=1$的involtion别离为$H\times W\times K\times K\times C$和$H\times W\times K\times K\times C$,两者完全一致。
$G=C$的分组卷积即depthwise卷积,$G=1$的involution和depthwise卷积两者在结构上也能够认为是齐全对抗的,一个则通道共享、空间独立,另一个通道独立、空间共享,而在depthwise卷积上加上空间特异的属性即$G=C$的involution。但在之前很多的钻研中,depthwise卷积个别都只用于轻量化网络的搭建,会就义局部准确率,而involution却能在缩小局部参数量的同时晋升准确率。我感觉除了空间特异带来大量参数之外,次要得益于两个局部设计:1)核大小减少到$7\times 7$。 2) 依据输出特色动静生成核参数。如果将depthwise卷积按相似的设置替换卷积核,不晓得是否达到相似的后果。
Attention Mechanism
self-attention起源于nlp工作,目前在视觉上的利用非常炽热,有不错的性能体现。将输出向量线性转化成查问项$Q$、关键词项$K$以及值项$V$后,先用$QK^{T}$计算出相似性,再对值项加权后输入,大抵的公式为:
如果将involution的核生成函数$\mathcal{H}$看成是$QK^{T}$的话,则可认为involution在某种意义上等同于self-attention,position encoding的信息也可认为是暗藏在了核生成函数外面,与生成的地位相干。文章花了很多篇幅去阐明involution是self-attention的高层定义,有趣味的能够去看看。不过咱们只有了解,involution在特色图的不同地位动静生成了不同的核参数,性能上相似于self-attention中的attention即可,这也是involution可能晋升准确率的要害。
Experiment
从试验后果来看,由involution搭建的ReaNet可能在准确率晋升的状况下缩小大量的参数,从理论速度来看,GPU速度与ResNet差不多,CPU速度则晋升很大。
Conclusion
论文翻新地提出了与卷积个性齐全相同的根底算子Involution,该算子在通道上共享,而在空间上特异,不仅可能大幅缩小参数量,还集成了attention的个性,在速度和准确率上都有很不错的体现。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】