senet: https://arxiv.org/abs/1709.01507
sknet: http://arxiv.org/abs/1903.06586

TL, DR

Selective Kernel Networks 启发自皮质神经元根据不同的刺激可动态调节其自身的receptive field, 从而在CNN每一个 stage, 增加不同尺寸 filter 分支。 总体网络结构和 SENet 相似(几乎一致), 相对于大网络, 对小网络的性能提升比较明显.

SENet

abstract

卷积神经网络建立在一系列卷积操作之上, 通过层叠卷积操作, 可以逐渐增大感受野.
卷积操作可以复用空间和通道信息, 但却限制在一个局部感受野上.
为了促进网络的特征表示能力, 一些工作通过加强空间编码从而提升了网络性能, 如 Inception. SENet 关注点在通道关系上, 提出的 SE-Block, 通过整合通道全局感受野信息, embedding 通道之间的重要性关系, 关注有用特征, 抑制无用特征.

SE-Block 使用 Global Average Pooling 处理该层 feature map得到一个 channel descriptor, 该 descriptor 包含每个通道特征强度(feature response)信息, 从而使得 CNN 的 底部的 layer可以利用到全局感受野的信息.

## network arch

sigmoid 函数

\[
\begin{align*}
\sigma(x) &= \frac{1}{1+e^{-x}} \\
\end{align*}
\]

逻辑斯谛回归函数

\[
\begin{align*}
P(Y=1|x) &= \frac{e^{w \cdot x}}{1+e^{w \cdot x}}\\
&= \frac{1}{1+e^{-w \cdot x}}\\
&=\sigma (w \cdot x)\\
P(Y=0|x) &= \frac{1}{1+e^{w \cdot x}} \\
&=1 - \sigma (w \cdot x)\\
\end{align*}
\]

Excitation操作为了利用 Squeeze 操作中的聚合的信息, 从而获取不同 channel 之间的依赖性. gating 函数必须满足两个条件

  1. 首先,它必须是灵活的(特别是,它必须能够学习通道之间的非线性关系),
  2. 其次,它必须学习非互斥关系.

为了满足这些标准,Excitation 选择使用 sigmoid 函数执行 gating mechanism.

SE-Inception Block

添加 SE Block 的网络的计算量大约提高1%, 参数量提高2%

experiment result

SKNet

与 SENet 相比, 就是每个 stage 增加了不同的尺寸大小的 filter的分支, 在做 gating 的时候, sigmoid 函数使用下面函数代替, 用于对不同尺寸的 filter 给予权重, 从而达到可适应调节感受野的作用.

experiment result

在大网络结果

在小网络上结果

总体而言, 在小网络上提点比较明显

Selective Kernel Network的更多相关文章

  1. 论文阅读笔记六十一:Selective Kernel Networks(SKNet CVPR2019)

    论文原址:https://arxiv.org/pdf/1903.06586.pdf github: https://github.com/implus/SKNet 摘要 在标准的卷积网络中,每层网络中 ...

  2. Selective Kernel Networks

    摘要:在标准的卷积神经网络(CNNs)中,每一层的人工神经元的感受野被设计成具有相同的大小.众所周知,视觉皮层神经元的感受野大小受刺激的调节,但在构建cnn时却很少考虑到这一点.我们在神经网络中提出了 ...

  3. [dpdk][kni] dpdk kernel network interface

    文档:https://doc.dpdk.org/guides/prog_guide/kernel_nic_interface.html 摘要: The KNI kernel loadable modu ...

  4. STGAN: A Unified Selective Transfer Network for Arbitrary Image Attribute Editing 阅读笔记和pytorch代码解读

    一.论文采用的新方法 1.AttGan中skip connect的局限性 由于encoder中对特征的下采样实际上可能损失部分特征,我们在decoder中进行上采样和转置卷积也无法恢复所有特征,因此A ...

  5. Windows Kernel Security Training Courses

    http://www.codemachine.com/courses.html#kerdbg Windows Kernel Internals for Security Researchers Thi ...

  6. Kernel boot options

    There are three ways to pass options to the kernel and thus control its behavior: When building the ...

  7. TensorFlow Lite demo——就是为嵌入式设备而存在的,底层调用NDK神经网络API,注意其使用的tf model需要转换下,同时提供java和C++ API,无法使用tflite的见后

    Introduction to TensorFlow Lite TensorFlow Lite is TensorFlow’s lightweight solution for mobile and ...

  8. 深度学习笔记(十一)网络 Inception, Xception, MobileNet, ShuffeNet, ResNeXt, SqueezeNet, EfficientNet, MixConv

    1. Abstract 本文旨在简单介绍下各种轻量级网络,纳尼?!好吧,不限于轻量级 2. Introduction 2.1 Inception 在最初的版本 Inception/GoogleNet, ...

  9. Android官方文档

    下面的内容来自Android官方网站,由于访问这个网站需要FQ,不方便,所以我把部分内容copy下来了,不保证内容是最新的. Source Overview    Codelines, Branche ...

随机推荐

  1. vmware workstation安装教程以及其中出现的错误解决方法

    VMware Workstation 安装教程   1 下载好虚拟机,然后运行,点击下一步 2 选择我接受,下一步 3 选择安装的位置,可以自己选择,也可以默认不更改,这个无影响(图中I:\下面的VM ...

  2. protobuf使用详解

    https://blog.csdn.net/skh2015java/article/details/78404235 原文地址:http://blog.csdn.net/lyjshen/article ...

  3. Delphi 获取DataSet传入参数后的SQL命令

    ClientDataSet1.CommandText := sSQL;   ClientDataSet1.Params.Clear; ClientDataSet1.CommandText :='SEL ...

  4. Python——内置函数

    一.min函数 取当前字符串的最小字符串 s1 = min(strs) 二.max函数 取当前字符串的最大字符串 s1 = max(strs) 三.enumerate函数 函数用于将一个可遍历的数据对 ...

  5. Linux下一些简单常用命令的总结

    Cent os常用命令 查看当前目录信息: l s a:显示所有包括隐藏文件 l :列表显示数据 h:显示数据大小 查看命令帮助: XXX --help[比如:l shel p] 清除控制台信息: c ...

  6. python学习day19 面向对象(一)封装/多态/继承

    面向对象 封装思想:将同一类的函数函数封装到同一个py文件中,方便调用 面向对象也有封装的作用,将同一类的函数封装到一个类中 多态(鸭子模型):多种类型/多种形态 #,什么事鸭子模型 对于一个函数,p ...

  7. JavaScript中数据类型判断

    做判断前先来了解下 JavaScript 中的基本数据类型 一.七大数据类型 基本类型:存储在栈( stack )中 Number(包括整型和浮点型) String. Boolean. Symbol ...

  8. 20175206迭代与JDB测试

    迭代与JDB测试 C(n,m)组合数的判定 实验要求 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 实验案例 ...

  9. spring Boot 入门--为什么用spring boot

    为什么用spring boot 回答这个问题不得不说下spring 假设你受命用Spring开发一个简单的Hello World Web应用程序.你该做什么? 我能想到一些 基本的需要.  一个项目 ...

  10. python11 函数的定义,调用,分类

    ## 复习 #一.什么是函数:具体特定功能的代码块 - 特定功能代码块作为一个整体,并给该整体命名,就是函数 # 二.函数的优点:# 1.减少代码的冗余# 2.结构清晰,可读性强# 3.具有复用性,开 ...