1.感受野(Receptive Field)

Receptive field 是啥?看看网上的大佬们怎么说。

  • The receptive field is defined as the region in the input space that a particular CNN’s feature is looking at (i.e. be affected by). ——Dang Ha The Hien
  • 在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。 ——博客园
  • 在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小。 ——蓝荣祎

个人理解某网络模型有4层,输入为3224224,输出为1*12,输出层中的一个特征点映射到输入数据的范围就是感受野;

1.1 举例子

参考链接:https://zhuanlan.zhihu.com/p/31004121
原始图像为 [公式] ,卷积核(Kernel Size)为 [公式] ,padding 为 [公式] ,stride为 [公式] ,依照此卷积规则,连续做两次卷积。熟悉卷积过程的朋友都知道第一次卷积结果是 [公式] 大小的feature map,第二次卷积结果是 [公式] 大小的feature map。整个过程如图所示:

第一次卷积得到3*3的 feature map,RF为3*3

第二次卷积得到2*2的 feature map


第一层卷积结束后,感受野是3* 3。在第二层卷积结束了,感受野是7 *7

1.2 计算RF

公式一:这个算法从top往下层层迭代直到追溯回input image,从而计算出RF。

(N-1)_RF = f(N_RF, stride, kernel) = (N_RF - 1) * stride + kernel

其中,RF是感受野。N_RF和RF有点像,N代表 neighbour,指的是第n层的 a feature在n-1层的RF,记住N_RF只是一个中间变量,不要和RF混淆。 stride是步长,ksize是卷积核大小。

我来解释一下这个公式。(图片有点丑,不过不影响理解。)首先,我们的问题是右一的红叉叉映射到左一中,应该是什么size?自然思路就是右一的红叉叉映射到中间是什么size?因为卷积核是33,所以右一的红叉叉映射到中间是33. 那么接下来我们如果算出来中间33的红框框映射到左一是什么size,不就解决了我们的问题嘛。聪明的我们就发现了从中间映射到左边的size是kernel_size+stride(3-1). 抽象一下就是kernel_size +stride*(N_RF-1)嘛。接下来就很简单了,一层又一层的迭代下去直到迭代到第一层,就求出了RF。Note: kernel_size和stride是左一的,而N_RF是中间的。

举一个小小的例子:

一个输入随意,第一层卷积核参数为ksize = 3, stride = 2,第二层ksize =3,stride=2,第三层ksize=3,stride=1.写一段代码计算RF,matlab代码如下:

ksize = 3;
strides = [1 2 2];
N_RF = 1;
for i = 1:3N_RF = (N_RF -1)*strides(i) + ksize;end
fprintf('The RF is: %d \n',N_RF)

结果:15

1.3 检验你的RF

看到这里的,奖励你认真好学,送福利了。不知道自己RF算得对不对?看下面这个网站。

FOMORO AI :

2.Dilated Convolutions

2.1 背景

Deep CNN 有一些致命性的缺陷。较为著名的是 up-sampling 和 pooling layer 的设计。这个在 Hinton 的演讲里也一直提到过。
主要问题有:

  • Up-sampling / pooling layer (e.g. bilinear interpolation) is deterministic. (a.k.a. not learnable)
  • 内部数据结构丢失;空间层级化信息丢失。
  • 小物体信息无法重建 (假设有四个pooling layer 则 任何小于 2^4 = 16 pixel 的物体信息将理论上无法重建。)

在这样问题的存在下,语义分割问题一直处在瓶颈期无法再明显提高精度, 而 dilated convolution 的设计就良好的避免了这些问题。

(1)标准卷积

使用卷积核大小为33、填充为1,步长为2的卷积操作对输入为55的特征图进行卷积生成3*3的特征图,如下图所示。

Standard Convolution with a 3 x 3 kernel (and padding) 使用卷积核大小为3*3、空洞率(dilated rate)为2、卷积步长为1的空洞卷积操作对输入为7*7的特征图进行卷积生成3*3的特征图,如下图所示。

Dilated Convolution with a 3 x 3 kernel and dilation rate 2

我们从上图中可以看出,标准的卷积操作中,卷积核的元素之间都是相邻的。但是,在空洞卷积中,卷积核的元素是间隔的,间隔的大小取决于空洞率。

2.2 思考:为什么空洞卷积能够扩大感受野并且保持分辨率呢?


以空洞卷积图为例,红色圆点为卷积核对应的输入“像素”,绿色为其在原输入中的感受野。

(a)图对应3x3的扩张率为1的卷积,和普通的卷积操作一样;

(b)图对应3x3的扩张率为2的卷积,实际的卷积核还是3x3,但是空洞率为2,也就是对于一个7x7的图像块,只有9个红色的点也就是3x3的卷积核发生卷积操作,其余的点略过。也可以理解为卷积核的大小为7x7,但是只有图中的9个点的权重不为0,其余都为0。可以看到虽然卷积核的大小只有3x3,但是这个卷积的感受野已经增大到了7x7。如果考虑到这个2-dilated convolution的前一层有一个1-dilated convolution的话,那么每个红点就是1-dilated的卷积输出,感受野为3x3,所以1-dilated和2-dilated合起来就能达到7x7的卷积;

©图是4-dilated convolution操作,同理跟在1-dilated和2-dilated convolution的后面,能达到15x15的感受野。

对比传统的卷积操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1)*layer+1=7的感受野,也就是和层数layer成线性关系,而dilated conv的感受野是指数级的增长。

补充:dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者语音文本需要较长的sequence信息依赖的问题中,都能很好的应用dilated conv,比如图像分割、语音合成WaveNet、机器翻译ByteNet中。

2.3 通向标准化设计:Hybrid Dilated Convolution (HDC)

ref: https://www.zhihu.com/question/54149221

潜在问题 1: The Gridding Effect假设我们仅仅多次叠加 dilation rate 2 的 3 x 3 kernel 的话,则会出现这个问题:

我们发现我们的 kernel 并不连续,也就是并不是所有的 pixel 都用来计算了,因此这里将信息看做 checker-board 的方式会损失信息的连续性。这对 pixel-level dense prediction 的任务来说是致命的。

潜在问题 2: Long-ranged information might be not relevant.我们从 dilated convolution 的设计背景来看就能推测出这样的设计是用来获取 long-ranged information。然而光采用大 dilation rate 的信息或许只对一些大物体分割有效果,而对小物体来说可能则有弊无利了。如何同时处理不同大小的物体的关系,则是设计好 dilated convolution 网络的关键。

对于上个 section 里提到的几个问题,图森组的文章对其提出了较好的解决的方法。他们设计了一个称之为 HDC 的设计结构。

  • 第一个特性是,叠加卷积的 dilation rate 不能有大于1的公约数。比如 [2, 4, 6] 则不是一个好的三层卷积,依然会出现 gridding effect。
  • 第二个特性是,我们将 dilation rate 设计成 锯齿状结构,例如 [1, 2, 5, 1, 2, 5] 循环结构。
  • 第三个特性是,我们需要满足一下这个式子:

    其中 是 i 层的 dilation rate 而 是指在 i 层的最大dilation rate,那么假设总共有n层的话,默认 。假设我们应用于 kernel 为 k x k 的话,我们的目标则是 ,这样我们至少可以用 dilation rate 1 即 standard convolution 的方式来覆盖掉所有洞。

一个简单的例子: dilation rate [1, 2, 5] with 3 x 3 kernel (可行的方案)而这样的锯齿状本身的性质就比较好的来同时满足小物体大物体的分割要求(小 dilation rate 来关心近距离信息,大 dilation rate 来关心远距离信息)。这样我们的卷积依然是连续的也就依然能满足VGG组观察的结论,大卷积是由小卷积的 regularisation 的 叠加。

Dilated Convolution + Receptive Field相关推荐

  1. 有效感受野--Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

    Understanding the Effective Receptive Field in Deep Convolutional Neural Networks NIPS 2016 本文主要分析了 ...

  2. 膨胀卷积(Dilated convolution)

    Dilated conv,中文叫做空洞卷积或者扩张卷积,起源于语义分割,大部分文章也用于语义分割,具体能否对其他应用有价值姑且还不知道,但确实是一个不错的探究方向. 感受野(receptive fie ...

  3. 【目标检测】Receptive Field Block Net for Accurate and Fast Object Detection论文理解

    摘要   目标检测器现状:   (1)目前性能最好的目标检测器依赖于深度CNN骨干,如ResNet-101和Inception,拥有强大的特征表示,但承受着高计算成本.   (2)一些基于轻量级模型的 ...

  4. ECCV2018论文RBNet:Receptive Field Block Net for Accurate and FastObject Detection

    论文下载:https://arxiv.org/abs/1711.07767 源码下载:https://github.com/ruinmessi/RFBNet Abstract: 目前性能最好的目标检测 ...

  5. 《Understanding the Effective Receptive Field in Deep Convolutional Neural Networks》理解深卷积神经网络中的有效感受野

    前言 论文推荐来自B站UP-启释科技,该up对感受野和卷积有深刻的理解 推荐感受野视频讲解: 深度理解感受野(一) 深度理解感受野(二) 深度理解感受野(三) 深度理解感受野(四) 深度理解感受野(五 ...

  6. 论文阅读:Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

    文章目录 论文总述 2.感受野的定义 3.理论感受野大小的计算 4.3种增加感受野的操作 5.感受野中心像素的值对输出feature map 的response影响比边缘的像素更大 6.如何知道fea ...

  7. 论文解读 Receptive Field Block Net for Accurate and Fast Object Detection

    其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 PDF全 ...

  8. dilated convolution

    首先是诞生背景,在图像分割领域,图像输入到CNN(典型的网络比如FCN[3])中,FCN先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel ...

  9. 空洞卷积(dilated convolution)

    目录 一.dialated convolution的发展由来 二.对dialated convolution的理解 三.重新思考卷积: Rethinking Convolution 四.空洞卷积的拯救 ...

最新文章

  1. LeetCode 375. Guess Number Higher or Lower II
  2. php 实现的n,php 实现数据N等分。
  3. ECharts柱状图图形标签间隔显示
  4. 10 个用于 Linux 的开源轻量级 Web 浏览器
  5. macd java 源代码_炒股知识一MACD详解
  6. 计算机基础知识学习顺序
  7. PDMS二次开发之PML开发一些常见查询语句
  8. 操作系统硬件介绍-处理器(CPU)
  9. 大脑构造图与功能解析_大脑结构与功能
  10. Hexo个人博客搭建教程
  11. 首款宇宙星际探索类卡牌游戏震撼上线
  12. SpringBoot bean解析之refresh方法(一)
  13. 浏览器协商缓存与强制缓存经典版
  14. Android包体积优化上篇- 资源混淆优化
  15. win10下java环境变量设置 不要再错啦
  16. PrimeNG之TreeTable
  17. 互联网「病人」:不加班,就很慌
  18. maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...
  19. dota 火猫TC二连技巧
  20. java共享内存_Java进程通信之映像文件共享内存

热门文章

  1. 项目经理与技术经理的区别
  2. 区块链+游戏:未来真的有未来吗?
  3. 跟我学药物设计 | 药物研发的过程和药物设计的意义
  4. 关于Github项目DCRNN运行问题小结(1)——tables模块包
  5. 开热点给电脑消耗大吗_手机开启WiFi热点,提供流量给电脑上网,可行吗?
  6. 常用的企业邮箱有哪些?企业邮箱有哪几种?
  7. amcharts教程
  8. python的文件操作:文件定位读写,重命名,删除等操作
  9. Python入门之基本语法
  10. Android开发框架大全