- 论文:Involution: Inverting the Inherence of Convolution for Visual Recognition
- 链接:https://link.zhihu.com/target=https%3A//arxiv.org/abs/2103.06255
- 代码:https://link.zhihu.com/target=https%3A//github.com/d-li14/involution
- 维度推导:https://blog.youkuaiyun.com/full_adder/article/details/117128909
- 贡献:
1.重新考虑了卷积的特性,从通道冗余出发,提出了一种新的神经网络算子involution,它比convolution更轻量更高效,形式上比self-attention更加简洁,可以用在各种视觉任务的模型上取得精度和效率的双重提升。
2.通过involution的结构设计,能够以统一的视角来理解经典的卷积操作和近来流行的自注意力操作。
3.通过该算子搭建的网络RedNet在多种任务上均具有更好的表现。
本文主要提出了一种不同于卷积的操作算子,在此翻译为内卷,其核心思想如下:
1. 卷积算子
首先我们考虑卷积算子,其核心思想在于,每个通道中的像素共享参数相同的核,不同通道中的核不同,公式如下:
即输入大小为
H
×
W
×
C
i
H\times W \times C_i
H×W×Ci,核
F
F
F有
C
o
C_o
Co组,每组核的大小为
C
i
×
K
×
K
C_i\times K \times K
Ci×K×K。上述公式1则代表第
k
k
k组核的输出。理解原理,卷积核的两个性质就很容易理解了。(深度卷积更进一步,
C
o
C_o
Co直接省去,通道间不进行累加)
- 空间不变性:空间上参数共享,平移不变
- 通道特异性:不同通道参数不同
如此,存在以下两个问题:
- 为避免参数过多, K K K通常取的较小,使得卷积的范围非常窄,无法获得距离更远的像素间的联系
- 通道间参数不共享,时常存在参数冗余
2.内卷算子
核心思想在于,就是要反着来,通道参数共享,空间内的核不同。公式如下:
G
=
1
G=1
G=1时示意图如下:
即,每个内卷核由固定位置的所有通道像素产生,步骤如下:
1.提取该位置像素,即红色长方形
2.
ϕ
(
X
)
\phi(X)
ϕ(X)函数生成
1
∗
1
∗
K
2
G
1*1*K^2G
1∗1∗K2G大小的核,并将其展开为
K
×
K
×
G
K\times K\times G
K×K×G
3.与输入特征进行相乘加和操作获得结果
1
×
1
×
C
1\times 1\times C
1×1×C
现在,需要注意的是内卷算子的生成函数
ϕ
\phi
ϕ,本文的选择如下:
为什么要从特征出发生成核,文中给出的原因是确保kernel size和input feature size在空间维度上能够自动对齐,以便在不同大小的图像间进行迁移。也就是说,严格来讲,虽然空间各点核不一样,但都是通过
W
0
,
W
1
W_0,W_1
W0,W1产生的,又是另一种不变与共享(如果W像素不同就变了那就谈不上迁移了.jpg)。
3.与注意力机制关系
本文机制与多头注意力机制有些相似,可视为其简化版本,关于多头注意力机制建议看https://zhuanlan.zhihu.com/p/48508221
写的太好了真的,愿世间多一些照顾我这样小傻子的详细讲解。
参考
【1】https://cloud.tencent.com/developer/article/1806725
【2】https://zhuanlan.zhihu.com/p/356960359
【3】https://www.jiqizhixin.com/articles/2021-03-26-6
【4】https://zhuanlan.zhihu.com/p/357408252