Selective Kernel Networks(SKNet)解析,附Pytorch实现代码

背景:       

       在神经科学界,视皮层神经元的感受野大小受刺激的调节,即对不同刺激,感受野的大小应该不同。目前很多卷积神经网络的相关工作都只是通过改进网络的空间结构来优化模型,如Inception模块通过引入不同大小的卷积核来获得不同感受野上的信息。或inside-outside网络参考空间上下文信息,等等。但在构建传统CNN时一般在同一层只采用一种卷积核,也就是说对于特定任务特定模型,卷积核大小是确定的,很少考虑多个卷积核的作用。

inception module

那么我们针对标红的两点提出两个问题:

1.那么是否可以在网络中加入特征维度信息呢?

基于这一想法,诞生了SENet(Squeeze-and-Excitation Networks),2017ImageNet分类比赛冠军模型,论文发表于2018年CVPR,目前是CVPR2018引用量最多的论文。Paper : Sequeeze-and-excitation networks

2.那么是否可以使网络可以根据输入信息的多个尺度自适应的调节接受域大小呢?

SKNet(Selective Kernel Networks)是2019CVPR的一篇文章。也是本篇文章着重要讲解的。Paper : Selective Kernel Networks

SENet:

        SENet和SKNet,听这名字就知道,这两个是兄弟。SENet提出了Sequeeze and Excitation block,而SKNet提出了Selective Kernel Convolution. 二者都可以很方便的嵌入到现在的网络结构,比如ResNet、Inception、ShuffleNet,实现精度的提升。但因为之前写的一篇博客《CBAM: Convolutional Block Attention Module论文代码解析》,对SENet已经有了一个比较详细的讲述,故在此不再展开讲,感兴趣的读者朋友可以看一下这篇博客。

SKNet:

       文章关注点主要是不同大小的感受野对于不同尺度的目标有不同的效果,而我们的目的是使得网络可以自动地利用对分类有效的感受野捕捉到的信息。所以如何做到这一点呢?因为网络训练好了之后参数就固定了,大多数的设计都是多尺度的信息就直接全部应用了,在segmentation领域尤为明显。
       为了解决这个问题,作者提出了一种在CNN中对卷积核的动态选择机制,该机制允许每个神经元根据输入信息的多尺度自适应地调整其感受野(卷积核)的大小。其灵感来源是,我们在看不同尺寸不同远近的物体时,视觉皮层神经元接受域大小是会根据刺激来进行调节的。具体是设计了一个称为选择性内核单元(SK)的构建块,其中,多个具有不同内核大小的分支在这些分支中的信息引导下,使用SoftMax进行融合。由多个SK单元组成SKNet,SKNet中的神经元能够捕获不同尺度的目标物体。

       这个网络主要分为Split,Fuse,Select三个操作。Split算子产生多条不同核大小的路径,上图中的模型只设计了两个不同大小的卷积核,实际上可以设计多个分支的多个卷积核。fuse运算符结合并聚合来自多个路径的信息,以获得用于选择权重的全局和综合表示。select操作符根据选择权重聚合不同大小内核的特征图。

(1)Split:如模型图所示,使用

  • 8
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值