SKNet的全称是“Selective Kernel Network”,它和SENet都是一个团队提出来的,SENet是对通道执行注意力机制,而SKNet则是对卷积核执行注意力机制,即让网络自己选择合适的卷积核。
论文地址
SKNet的核心模块如下图所示。
在这里插入图片描述
在该模块中,作者使用了多分支卷积网络组卷积空洞卷积以及注意力机制

多分支卷积网络

多分支卷积网络,如字面意思,含有多于一个分支的卷积网络,下图所示的网络模块均属于多分支卷积网络。
该图
该模块是经典的残差网络模块,使用了双分支结构,跨层连接的那条分支是一条单纯的恒等映射分支。
在这里插入图片描述
该模块是Inception模块,也是一个多分支卷积网络,与残差网络的多分支不同的是,该模块的每个分支都进行了卷积处理,并不是一个恒等映射。

组卷积

组卷积相比于标准卷积,减少了一些参数量。假设feature map的尺寸大小为W×H×C1,卷积核的尺寸为w×h×C1,生成的feature map的尺寸大小为W×H×C2,那么标准卷积的参数量为w×h×C1×C2;如果换为分组卷积,假设分为g组,原feature map和生成的feature map尺寸同上,,那么每组卷积的参数量为w×h×(C1/g)×(C2/g),共有g组,那么总参数量为w×h×C1×C2/g,参数量与标准卷积相比,减少为原来的1/g。

空洞卷积

空洞卷积与标准卷积相比,增大了感受野。一般情况下,卷积之后的池化操作缩小feature map的尺寸也能达到增加感受野的效果,但是池化过程会导致信息的丢失,所以引入了空洞卷积操作。下图为Dilation=2时的卷积效果图,当Dilation=2时,3×3的卷积核的感受野为5×5。空洞卷积与标准卷积相比,在不增加参数量的同时增大了感受野。
在这里插入图片描述

注意力机制

下图所示为SENet中的注意力机制模块。
在这里插入图片描述
该通道注意力机制模块很好理解,上图中的Ftr函数表示标准卷积,Fsq函数表示一个全局平均池化,通过该函数,生成1×1×C的feature map。然后将该feature map送入Fex函数(该函数由两个全连接层组成),输出1×1×C的feature map。将该feature map通过sigmoid函数将值控制到(0,1)之间,然后与最开始的H×W×C的feature map对应相乘,即实现了对各个通道的权重控制,实现了注意力机制。

SKNET

在这里插入图片描述
SKNet模块如上图所示。Split操作是将原feature map分别通过一个3×3的分组/深度卷积和3×3的空洞卷积(感受野为5×5)生成两个feature map :U1(图中黄色)和U2(图中绿色)。然后将这两个feature map进行相加,生成U。生成的U通过Fgp函数(全局平均池化)生成1×1×C的feature map(图中的s),该feature map通过Ffc函数(全连接层)生成d×1的向量(图中的z),公式如图中所示(δ表示ReLU激活函数,B表示Batch Noramlization,W是一个d×C的维的)。d的取值是由公式d = max(C/r,L)确定,r是一个缩小的比率(与SENet中相似),L表示d的最小值,实验中L的值为32。生成的z通过ac和bc两个函数,并将生成的函数值与原先的U1和U2相乘。由于ac和bc的函数值相加等于1,因此能够实现对分支中的feature map设置权重,因为不同的分支卷积核尺寸不同,因此实现了让网络自己选择合适的卷积核(ac和bc中的A、B矩阵均是需要在训练之前初始化的,其尺寸均为C×d)

以上就是SKNet的核心模块的解读,其本质就是在网络中使用多尺寸的卷积核,与Inception网络中的多尺度不同,SKNet是让网络自己选择合适的尺度。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐