理解CNN中的感受野(receptive-field)
1. 阅读论文:Understanding the Effective Receptive Field in Deep Convolutional Neural Networks 理解感受野

- 定义:receptive field, or field of view (感受野)
A unit in convolutional networks only depends on a region of the input. This region in the input is the receptive field for that unit. (一个神经节点只从输入中的一个局部区域中获取信息,这个局部区域称为当前神经节点的感受野)。由于输入中感受野之外的区域不影响当前神经节点的值,所以要合理地控制感受野的大小,让感受野覆盖整个相关的区域,特别是在一些密集预测的任务上,比如:语义分割,深度估计和光流估计等任务。
定义--补充:
在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。 ——博客园
在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小。 ——蓝荣祎
大家知道现在CNN深度学习越来越深,为了压缩计算量,越到后面的层数往往feature size越来越小,但参与“决策”往往是最后几层网络(当然有FPN等神迹)因此如何保证小的网络仍然具有全局性是构建CNN网络的一个重要依据,感受野便是一个考量feature map中每个神经元具有多少全局性的指标。
- 增大感受野的操作:
- 增加网络的层数,加深网络深度。理论上可以线性地增大感受野,每一层产生的感受野的增量为卷积核的大小。
- 下采样: 下采样可以成倍地增大感受野。
- dilate :dilate操作可以成倍地增大感受野。
注:VGG和ResNet等使用了1,2。 deeplab系列额外使用了3。
- 论文的主要观点:
- 感受野中的像素对神经节点输出的贡献是不一样的,更具体一些是:感受野中心的像素的贡献更大些。理由:Forward pass过程:中心像素有更多的路径将该像素的信息传递给神经节点,边缘的像素有较少的路径将其像素信息传递给神经节点。相似地, Backward pass过程:感受野中心像素从相应的神经节点获取的梯度也更多。
- 理论感受野区域中的像素的贡献符合Gaussian分布。由于Gaussian分布从中心高边快速衰减,有效感受野只是是理论感受野的一部分。
- 结论:
- 卷积核权重均匀分布和随机分布时,有效感受野服从(近似服从)Gaussian分布。
- ReLU操作的加入也会使得有效感受野服从(近似服从)Gaussian分布。
- dropout的加入不会改变有效感受野的Gaussian分布
- 下采样和dilation 会增加有效感受野的大小,下采样效果更明显。
- skip-connections会减小有效感受野的大小。
- 只包含卷积层的情况下,随着卷积层数
的增加有效感受野
倍增加。与理论感受野相比,有效感受野
缩小。
- 减弱有效感受野Gaussian分布带来的损失的方法(增大有效感受野的方法)
(1)修改权重的初始化:减少卷积核中心的参数初始化的scale,增大卷积核边缘参数初始化的scale。不论scale策略如何,有效感受野Gaussian分布的情况仍不能解决。
- (2)改变CNN结构:使用dilation操作稀疏连接输入和卷积核,使用非矩形(no grid-like)的稀疏连接。
理论感受野大小的计算

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

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

黄色feature map对应的感受野是7*7大小
如图所示,第一层卷积结束后,感受野是3*3。在第二层卷积结束了,感受野是7*7。
--理论感受野大小的计算公式
1)这种方式为从后往前推,即计算哪层的感受野,就把它当做网络的最后一层,然后往前推导:

【注】:
最后一层(卷积层或池化层)输出特征图感受野的大小等于卷积核的大小。
第i层卷积层的感受野大小和第i层的卷积核大小和步长有关系,同时也与(i+1)层感受野大小有关。
计算感受野的大小时忽略了图像边缘的影响,即不考虑padding的大小。
2)这种是从前往后推,逐层计算感受野的大小(还计算了神经元中心坐标):

2. 验证RF Size计算
三个高级工程师搞的网站,可以简单的输入网络参数,就直接把你的感受野计算出来。

参考:
理解CNN中的感受野(receptive-field)的更多相关文章
- 神经网络中的感受野(Receptive Field)
在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小.神经元之所以无法对原始图像的所有信息进行感知,是因为在这些网络结构中普遍使用卷积层和po ...
- 关于感受野 (Receptive field) 你该知道的事
Receptive field 可中译为“感受野”,是卷积神经网络中非常重要的概念之一. 我个人最早看到这个词的描述是在 2012 年 Krizhevsky 的 paper 中就有提到过,当时是各种不 ...
- 理解CNN中的通道 channel
在深度学习的算法学习中,都会提到 channels 这个概念.在一般的深度学习框架的 conv2d 中,如 tensorflow .mxnet ,channels 都是必填的一个参数. channel ...
- 基于TensorFlow理解CNN中的padding参数
1 TensorFlow中用到padding的地方 在TensorFlow中用到padding的地方主要有tf.nn.conv2d(),tf.nn.max_pool(),tf.nn.avg_pool( ...
- Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
Understanding the Effective Receptive Field in Deep Convolutional Neural Networks 理解深度卷积神经网络中的有效感受野 ...
- Deep Visualization:可视化并理解CNN(转)
转载地址:https://zhuanlan.zhihu.com/p/24833574 一.前言 CNN作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没 ...
- Deep Visualization:可视化并理解CNN
原文地址:https://zhuanlan.zhihu.com/p/24833574 一.前言 CNN作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没 ...
- Receptive Field Block Net for Accurate and Fast Object Detection
Receptive Field Block Net for Accurate and Fast Object Detection 作者:Songtao Liu, Di Huang*, and Yunh ...
- CNN中感受野的理解
本文摘自看完还不懂卷积神经网络“感受野”?那你来找我 作者:程序_小白链接:https://www.jianshu.com/p/9305d31962d8 一.到底什么是“感受野”(接受野Recepti ...
随机推荐
- moya与网络编程思想:网络请求的生命周期
请求数据管理的集中化: 请求配置的标注化: 请求管理的函数式参量化: 几个端点: target代表应用端的原始数据; endpoint代表应用端到网络端的中间数据,这个数据可以编辑公用数据header ...
- export default 和 export 的主要区别
export default 和 export 的主要区别 在于对应的import的区别:export 对应的 import 需要知道 export抛出的变量名或函数名 import{a,b}expo ...
- EJS的个人总结
什么是模板引擎? 用于Web开发的模板引擎是为了使用用户界面与业务数据(内容)分离而产生的,使用模板语法编写的模板代码通常放在具有特的格式的文档中,经过模板引擎编译之后就会生成一个标准的HTML文档. ...
- 开发(二) ardunio批量固件上传地址
https://blog.csdn.net/Naisu_kun/article/details/84958561 批量烧录固件到模块中上面讲了如何编写上传程序,接下来讲讲如何量产.相比<Ardu ...
- linux学习9 运维基本功-Linux常用基础命令实战应用
一.文件系统知识回顾 1.Linux文件系统: a.文件名称严格区分字符大小写 b.文件可以使用除/以外任意字符 c.文件名长度不能超过255个字符 d.以.开头的文件为隐藏文件: . :当前目录 . ...
- vue基于iview树状表格,封装完善
先安装iview后在使用 完善按钮不显示问题 ,当children过多时,点击不动问题等 封装 <template> <div :style="{width:tableWi ...
- [RN] React Native 打包时 减少 Apk 的大小
React Native 打包时 减少 Apk 的大小 主要有两个方法: 在打包前设置 android\app\build.gradle 文件中 1) def enableProguardInRele ...
- 【CF55D】Beautiful numbers
[CF55D]Beautiful numbers 题面 洛谷 题解 考虑到如果一个数整除所有数那么可以整除他们的\(lcm\),而如果数\(x\)满足\(x\bmod Lcm(1,2...,9)=r\ ...
- 内置函数— — eval、exec、compile
字符串类型代码:eval.exec.compile eval() 执⾏字符串类型的代码,并返回最终结果 print(eval("2+2")) # 4 n=8 def func() ...
- jmeter通过cookie获取图片验证码实现登录2
在登录时有一张图片验证码,需要获取验证码用于后续登录,见图 1.找到图片验证码接口写入jmeter 2.正则表达式提取cookie 3.Fiddler抓取登录成功的响应cookie,并设置成全局 4. ...