CNN中感受野的理解
作者:程序_小白
链接:https://www.jianshu.com/p/9305d31962d8
一、到底什么是“感受野”(接受野Receptive Field)
感受野是一个神经元对原始图像的连接
通常说:第几层对输入数据(即原始图像)的感受野
二、图解说明
为了更好地说明整个卷积神经网络的工作过程,下面以一个例子说明,原始图像的大小为10x10,一共设计了5个网络层,前面4个是卷积层,卷积核的大小为3x3,最后一个是池化层,大小为2x2,为了较简单的说明,本次所有的步幅stride均为1.
注意:感受野在计算的时候不考虑“边界填充”,因为填充的边界已经不是原始图像本身的内容了,感受野描述的是输出特征到原始图像的映射关系,故而不考虑padding 。实际建模过程中可能需要填充边界,原理一样,只是计算稍微复杂点。
1、第一次卷积运算

从上面可以看出:第一层网络输出的图像中,输出结果为8x8,output1输出的每一个特征(即每一个像素)受到原始图像的3x3区域内的影响,故而第一层的感受野为3,用字母表示为
RF1=3 (每一个像素值与原始图像的3x3区域有关)
2、第二次卷积运算

从上图可以看出,经历两次卷积运算之后,最终的输出图像为6x6,output2输出的每一个特征(即每一个像素)受到output1的范围影响为3x3,而output1中的这个3x3又收到原始图像的5x5的范围的影响,故而第二层的感受野为5,即
RF2=5 (每一个像素值与原始图像的5x5区域有关)
3、第三次卷积运算

从上图可以看出,经历三次卷积运算之后,最终的输出图像为4x4,output3输出的每一个特征(即每一个像素)受到output2的范围影响为3x3,而output2中的这个3x3又受到output1的5x5的范围的影响,而output1中的这个5x5又受到原始图像的7x7的范围的影响,故而第三层的感受野为7,即
RF3=7 (每一个像素值与原始图像的7x7区域有关)
4、第四次卷积运算

从上图可以看出,经历四次卷积运算之后,最终的输出图像为2x2,output4输出的每一个特征(即每一个像素)受到output3的范围影响为3x3,而output3中的这个3x3又受到output2的5x5的范围的影响,而output2中的这个5x5又受到output1的7x7的范围的影响,而output1中的这个7x7又受到原始图形的9x9的范围的影响,故而第四层的感受野为9,即
RF4=9 (每一个像素值与原始图像的9x9区域有关)
5、第五次池化运算

从上图可以看出,经历四次卷积运算和一次池化运算之后,最终的输出图像为1x1,output5输出的每一个特征(即每一个像素)受到output4的范围影响为2x2,而output4中的这个2x2又受到output3的4x4的范围的影响,而output3中的这个4x4又受到output2的6x6的范围的影响,而output2中的这个6x6受到output1的8x8的范围的影响,而output1中的这个8x8受到原始图像的10x10的范围的影响,故而第五层的感受野为10,即
RF5=10 (每一个像素值与原始图像的10x10区域有关)
三、递推公式推导
从上面的过程可以看出,感受野的推导是一个递推的过程,下面将展示这一过程。
RF1=3 k1(第一层的感受野,永远等于第一个卷积核的尺寸大小)k表示第几个卷积层
RF2=5 k1 + (k2-1) RF1+ (k2-1)
RF3=7 k1 + (k2-1) + (k3-1) RF2+ (k3-1)
RF4=9 k1 + (k2-1) + (k3-1) + (k4-1) RF3+ (k4-1)
RF4=10 k1 + (k2-1) + (k3-1) + (k4-1) + (k5-1) RF4+ (k5-1)
总结:从上面可以看出,感受野的大小的求解是一个不断第一的过程,因为第一层的每一个像素的感受野始终是第一个卷积核的大小,故而RF1总是最先确定,然后以此类推,逐步求出RF2、RF3、RF4、RF5……
但是上面的所有步长均为 1 ,如果每一次卷积运算的步长 stride 不为1呢,同理,这里直接给出递推公式:
RFn=RFn-1 + (kn-1)*stride_n
其中stride_n表示的是第n次卷积的移动步幅stride。
求解过程是从RF1开始的。
CNN中感受野的理解的更多相关文章
- CNN中感受野大小的计算
1 感受野的概念 从直观上讲,感受野就是视觉感受区域的大小.在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小. 2 感受野 ...
- CNN中的卷积理解和实例
卷积操作是使用一个二维卷积核在在批处理的图片中进行扫描,具体的操作是在每一张图片上采用合适的窗口大小在图片的每一个通道上进行扫描. 权衡因素:在不同的通道和不同的卷积核之间进行权衡 在tensorfl ...
- (转)关于CNN中平移不变性的理解
https://www.quora.com/Why-and-how-are-convolutional-neural-networks-translation-invariant https://st ...
- 理解CNN中的感受野(receptive-field)
1. 阅读论文:Understanding the Effective Receptive Field in Deep Convolutional Neural Networks 理解感受野 定义:r ...
- 对CNN感受野一些理解
对CNN感受野一些理解 感受野(receptive field)被称作是CNN中最重要的概念之一.为什么要研究感受野呐?主要是因为在学习SSD,Faster RCNN框架时,其中prior box和A ...
- 理解CNN中的通道 channel
在深度学习的算法学习中,都会提到 channels 这个概念.在一般的深度学习框架的 conv2d 中,如 tensorflow .mxnet ,channels 都是必填的一个参数. channel ...
- CNN网络中的不变性理解
神经网络中的不变性 原文:https://blog.csdn.net/voxel_grid/article/details/79275637 个人认为cnn中conv层对应的是“等变性”(Eq ...
- CNN中的卷积核及TensorFlow中卷积的各种实现
声明: 1. 我和每一个应该看这篇博文的人一样,都是初学者,都是小菜鸟,我发布博文只是希望加深学习印象并与大家讨论. 2. 我不确定的地方用了"应该"二字 首先,通俗说一下,CNN ...
- CNN中减少网络的参数的三个思想
CNN中减少网络的参数的三个思想: 1) 局部连接(Local Connectivity) 2) 权值共享(Shared Weights) 3) 池化(Pooling) 局部连接 局部连接是相对于全连 ...
随机推荐
- P1399 [NOI2013]快餐店
传送门 基环树的题当然先考虑树上怎么搞,直接求个直径就完事了 现在多了个环,先把非环上的直径(设为 $ans$)和环上节点 $x$ 到叶子的最大距离(设为 $dis[x]$)求出来 考虑到对于某种最优 ...
- 学习WPF-1
学习WPF-1 最近到新公司,需要使用WPF来做界面开发,我原先是使用WinForm来做界面开发的,所以对于现在使用WPF来开发,需要先学习一段时间了,考核的内容目前也还没定下来做什么, 但终归是使用 ...
- npm学习(二)之如何防止权限错误
如何防止权限错误 如果您在尝试全局安装包时看到EACCES错误,请阅读本章.如果更改安装npm的目录,通常可以避免此错误.要做到这一点,要么使用版本管理器重新安装npm(推荐)或手动更改npm的默认目 ...
- 企业面试题|最常问的MySQL面试题集合(一)
问题1:char.varchar的区别是什么?varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么?DEL ...
- linux复习4:文件和目录
7一.linux文件 1.linux文件的扩展名:文件扩展名是文件名最后一个点之后的部分,下面列出了其中一部分 (1)压缩文件和归档文件 压缩和归档的文件扩展名及其含义如下. .bz2:使用bzip2 ...
- N4复习考试总结
一つ(ひとつ) 半分(はんぶん) 煙草(たばこ)を吸う(すう) 玄関(げんかん) ナイフ(刀) 財布(さいふ) 浅い(あさい) 薄い(うすい) 牛乳(ぎゅうにゅう) 皿(さら) 七日(なのか) ...
- unittest装饰器:只执行一次方法
@classmethod def setUpClass(cls): print "start!" @classmethod def tearDownCla ...
- ubuntu apache https设置
上篇文章已经描述过怎么生成证书,点击这里,直接写怎么设置 1.apache加载ssl模块, # a2enmod ssl 2.启动ssl站点 #a2ensite default-ssl 3.加入监听端口 ...
- python子进程模块subprocess详解
subprocess--子进程管理器一.subprocess 模块简介subprocess最早是在2.4版本中引入的.subprocess模块用来生成子进程,并可以通过管道连接它们的输入/输出/错误, ...
- spring中spEL常用应用场景
spEL表达式表示:#{} 一.基本类型值运算操作 {}可以放置数字,字符串,布尔型,表达式(运算,正则,逻辑).这个应用场景和EL表达式一样的,实际中用的也不多. 注意:在XML中表示==,> ...