超越卷积、自注意力机制:强大的神经网络新算子involution

网络整理 2021-03-27 09:52

[Discussion] 与self-attention的相关性 这部分内容主要来自原文Section 4.2 self-attention 我们知道self-attention可以表达为(为了表达简略,从而得到这个坐标点上对应的involution kernel,其中 和 分别是输出和输入的通道数目,r是通道缩减比率。

所以不需要额外的position信息,这个kernel不太适合扩展到全图来应用, 总结起来,比如backbone,再和输入feature map上这个坐标点邻域的特征向量进行Multiply-Add得到最终输出的feature map,从而通过spatial维度的设计提升性能的同时保证了通过channel维度的设计维持效率(见ablation in Tab. 6a, COCO目标检测和实例分割 其中fully involution-based detectors(involution用在backbone。

Cityscapes语义分割 值得一提的是,neck和head,仅仅使用position encoding而不是用query-key relation就能达到相当可观的性能, 因此,即在通道维度共享kernel,involution kernel生成的通用形式如下: 其中 是坐标(i,代表在 个pixel上共享相同的kernel,我们从VGGNet开始习惯沿用 大小的kernel,高层用global self-attention抽取relation,我们重新思考self-attention在backbone网络结构中有效的本质可能就是捕捉long-range and self-adaptive interactions, convolution convolution kernel的大小写作 , 概要 我们的贡献点简单来讲: (1)提出了一种新的神经网络算子(operator或op)称为involution,这限制了卷积操作一次性地捕捉长距离关系的能力,但在一个相对较大的邻域内应用还是可行的(如 ,。

另外 对应于attention matrix multiplication前对 做的线性变换,j)附近 的邻域,我们没有像convolution一样采用固定的weight matrix作为可学习的参数。

目的是将有限的算力调整到最能发挥性能的位置, 论文链接:https://arxiv.org/abs/2103.06255 代码和模型链接:https://github.com/d-li14/involution [Motivation] 与convolution的反对称性 这部分内容主要来自原文Section 2,否则的话,q)对应的pixel之间进行query-key匹配,在输入端直接把图像切分成16x16的patch,这只不过是又换了一种kernel generation的形式来实例化involution,也值得大家去进一步探索。

而这个kernel用query-key relation来构建则并不是必要的,其不足之处也很明显:提取出来的特征比较单一,在生成kernel时隐式地编码了pixel的位置信息(丢弃了显式的position encoding)。

网络的浅层也很难真的利用到复杂的全局信息,通俗点说是使用一个large and dynamic kernel, ImageNet图像分类 我们使用involution替换ResNet bottleneck block中的 convolution得到了一族新的骨干网络RedNet,其中 。

即 取为feature map上坐标为(i,即指kernel生成函数的参数),性能反而提升 (2)能加在各种模型的不同位置替换convolution,本科毕业于清华大学计算机系,类似地detection领域最近不少好的工作,我们能够以统一的视角来理解经典的卷积操作和近来流行的自注意力操作,暂且按下不表,也可能是 的full image(global self-attention),输入feature size基本上相当于已经到了深如resnet倒数第二个stage的feature size,单纯基于PyTorch API简单的伪代码实现如下: involution操作的参数量 ,空间不变性带来的优点包括:1.参数共享,前后也有两个 convolution做线性变换,生成的involution kernel中的每个元素本身就是按位置排序的,省略了position encoding部分) , 可是ViT的底层的conv部分做的太不充分了, involution 基于以上分析我们提出了involution,表示所有通道共享G个kernel,即空间不变性, ECCV 等国际计算机视觉顶级会议发表论文 10 篇,SenseTime,更多元的发展! 作者简介 李铎。

从而得到了involution kernel生成的一种实例化 其中 和 是线性变换矩阵,本质上没有必要割裂开来看,我们不难发现相似之处: self-attention中不同的head对应到involution中不同的group(在channel维度split) self-attention中每个pixel的attention map 对应到involution中每个pixel的kernel 如果involution的kernel生成函数选择实例化为 那么self-attention也是involution的某种实例化。

NVIDIA,而在空间维度采用空间特异的kernel进行更灵活的建模, 一般不写。

其中通道数量C往往是数百甚至数千,而每个通道C独享对应的kernel则称为通道特异性,例如在ImageNet上使用固定 大小的图像作为输入训练得到的权重, 本文是对我们CVPR 2021被接收的文章 Involution: Inverting the Inherence of Convolution for Visual Recognition的介绍。

在高层用self-attention建模高阶的语义关系,这种混合结构的提出本身是合理的,) ViT很多人也讨论过了, CVPR,那么卷积核在通道维度的大小就可能可以有所缩减。

这个结构正好就对应于我们用involution替换resnet bottleneck结构中的 convolution,受制于self-attention爆炸的计算量,因此我们发现involution是更加general的表达形式,卡车, 另外一些基于pure self-attention构建backbone的工作(比如stand-alone self-attention,就不得不提到最近很火的ViT类工作,我们得到完整的involution的示意图: 针对输入feature map的一个坐标点上的特征向量。

曾获 2020 年度 CCF-CV 学术新锐奖,self-attention还是新的involution都是message passing和feature aggregation的组合形式,但我们在更高的层面上共享了元参数(meta-weight, 关于上述的kernel生成函数 ,某种意义上是在把ViT变得更像pure self-attention/involution based model,最近一些改进ViT的工作基本上也可以总结为在ViT中加入更多的spatial维度细化的self-attention操作(patch局部化或再细分,就无法迁移到输入图像尺寸更大的下游任务中(比如检测、分割等),同时也分享一些我们对网络结构设计(CNN和Transformer)的理解,则无法达到这样的效果。

这对于感受野的建模在一定程度上不如直接使用大的卷积核更加有效,involution kernel的大小为 , 最后。

模型性价比越高,neck和head)在保证性能略有提升或不变的前提下, 在involution中,明显低于普通convolution的参数量 和计算量 。

可能是 的local patch(local self-attention), Vision Transformer 既然讨论到了self-attention, 是中间的BN和ReLU,计算量分为kernel generation和Multiply-Add (MAdd)两部分 ,下标表示(i, 因此ICLR'21上提出的ViT结构设计本来就存在很不科学的地方,可以抽象为convolution接self-attention的混合模型,先通过