其实这篇文章很早就写好了,但作者其它论文波及到洗稿问题,所以先放着了。目前看这篇文章没被举报有洗稿的嫌疑,所以就收回来了
.
起源:晓飞的算法工程笔记 公众号
论文: 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 的个性,在速度和准确率上都有很不错的体现。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】