如何计算感受野(Receptive Field)
一、感受野的概念
感受野指的是一个特定的 CNN 特征(特征图上的某个点)在输入空间所受影响的区域。
感受野计算时有下面的几个情况需要说明:
a)第一层卷积层的输出特征图像素的感受野的大小等于滤波器的大小;
b)深层卷积层的感受野大小和它之前所有层的滤波器大小和步长有关系;
c)计算感受野大小时,忽略了图像边缘的影响,即不考虑padding的大小。
二、感受野计算公式
1.公式一:
从原始input出发,逐层迭代到最后输出:
l k = l k − 1 + [ ( f k − 1 ) ∗ ∏ i = 1 k − 1 s i ] l_{k} = l_{k-1}+ \left [ (f_{k}-1)*\prod_{i=1}^{k-1}s_{i} \right ] lk=lk−1+[(fk−1)∗i=1∏k−1si]
其中 l k − 1 l_{k-1} lk−1 为第 k − 1 k-1 k−1 层对应的感受野大小, f k f_k fk 为第 k k k 层的卷积核大小,或者是池化层的池化尺寸大小。
举个例子
感受野的计算是逐层进行的,以下表中的网络结构为例。
No. | Layers | Kernel Size | Stride |
---|---|---|---|
1 | Conv1 | 3*3 | 1 |
2 | Pool1 | 2*2 | 2 |
3 | Conv2 | 3*3 | 1 |
4 | Pool2 | 2*2 | 2 |
5 | Conv3 | 3*3 | 1 |
6 | Conv4 | 3*3 | 1 |
7 | Pool3 | 2*2 | 2 |
感受野初始值 l 0 = 1 l_0 = 1 l0=1,每层的感受野计算过程如下:
l 0 = 1 l_0 = 1 l0=1
l 1 = 1 + ( 3 − 1 ) = 3 l_1 = 1 + (3-1) = 3 l1=1+(3−1)=3
l 2 = 3 + ( 2 − 1 ) ∗ 1 = 4 l_2 = 3 + (2-1)*1 = 4 l2=3+(2−1)∗1=4
l 3 = 4 + ( 3 − 1 ) ∗ 1 ∗ 2 = 8 l_3 = 4 + (3-1)*1*2 = 8 l3=4+(3−1)∗1∗2=8
l 4 = 8 + ( 2 − 1 ) ∗ 1 ∗ 2 ∗ 1 = 10 l_4 = 8 + (2-1)*1*2*1 = 10 l4=8+(2−1)∗1∗2∗1=10
l 5 = 10 + ( 3 − 1 ) ∗ 1 ∗ 2 ∗ 1 ∗ 2 = 18 l_5 = 10 + (3-1)*1*2*1*2 = 18 l5=10+(3−1)∗1∗2∗1∗2=18
l 6 = 18 + ( 3 − 1 ) ∗ 1 ∗ 2 ∗ 1 ∗ 2 ∗ 1 = 26 l_6 = 18 + (3-1)*1*2*1*2*1 = 26 l6=18+(3−1)∗1∗2∗1∗2∗1=26
l 7 = 26 + ( 2 − 1 ) ∗ 1 ∗ 2 ∗ 1 ∗ 2 ∗ 1 ∗ 1 = 30 l_7 = 26 + (2-1)*1*2*1*2*1*1 = 30 l7=26+(2−1)∗1∗2∗1∗2∗1∗1=30
2.公式二:
根据top to down的方式,即从网络的最后向前推
感受野的大小是由kernel size(filter)和stride size(步长)一起决定的,
公式:
rfsize = f(out, stride, ksize) = (out - 1) * stride + ksize,其中out是指上一层感受野的大小,stride是当前层stride
最后一层可带也可不带入公式,它的out是前一层的ksize
举刚才那个例子:
out7 = (1-1)*2 +2 =2
out6 = (2-1)*1 + 3 = 4
out5 = (4-1)*1 + 3 = 6
out4 = (6-1)*2 + 2 = 12
out3 = (12-1)*1 + 3 = 14
out2 = (14-1)*2 + 2 = 28
out1 = (28-1)*1 + 3 = 30
out7是第7层输出相对于第7层输入也就是第6层输出的感受野,out6是第7层输出相对于第6层输入也就是第5层输出的感受野,以此类推,out1是第7层输出相对于第1层输入也就是第0层输出的感受野,也就是相对于input_image的感受野。
参考文献
- CNN 感受野计算公式
- CNN感受野计算
- 如何计算感受野(Receptive Field)——原理
如何计算感受野(Receptive Field)相关推荐
- 如何计算感受野(Receptive Field)——原理
本文转载自知乎专栏:https://zhuanlan.zhihu.com/p/31004121 写这篇文章的初衷是自己需要计算感受野,但是在今天之前只对感受野有感性认识,并不知道如何定量计算.所以在网 ...
- 深度CNN感受野(Receptive Field)的计算
参考 如何计算感受野(Receptive Field)--原理 FOMORO AI -> 可视化计算感受野的网站,可以用来验证自己计算的结果 Python代码 这里使用的是从后向前的计算方法,简 ...
- 深度学习之学习(1-2)感受野(receptive field)
参见:原始图片中的ROI如何映射到到feature map? - 知乎 1 感受野的概念 在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像 ...
- 感受野(receptive field)
学习RCNN系列论文时, 出现了感受野(receptive field)的名词, 感受野的尺寸大小是如何计算的,在网上没有搜到特别详细的介绍, 为了加深印象,记录下自己对这一感念的理解,希望对理解基于 ...
- 感受野-Receptive Field的理解
之前在阅读yolov1的论文时,发现yolov1用到了Resnet,于是找到了Resnet论文,在研究Resnet的时候,发现自己对卷积的相关操作理解还不够深刻,于是研究卷积,发现其中一个比较重要的概 ...
- 什么是感受野 Receptive Field 感受野是什么意思
有一个人写的很好,放上他写的文章 彻底搞懂感受野的含义与计算 - 知乎 然后嘞,如果你点进去不想看,那你就适合看我写的哈哈 比较浮躁,那就我来吧 首先我们得知道感受野的英文名字哈 洋气 感受野 Rec ...
- 深度学习笔记~感受野(receptive field)的计算
以前对CNN中的感受野(receptive field)已经有了一些认识,基本上是从概念理解上得到的. 本篇文章给出了receptive field的计算过程和相应的python代码,对recepti ...
- 池化层(pooling layer) 感受野(Receptive Field) 神经网络的基本组成
目录 (1)本文涉及的函数 (2)池化层 (3)感受野 (4)代码示例(含注释) 承接上两篇博客:卷积层(空洞卷积对比普通卷积).激活函数层 (1)本文涉及的函数 import torch impor ...
- 神经网络中的感受野(Receptive Field)
在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小.神经元之所以无法对原始图像的所有信息进行感知,是因为在这些网络结构中普遍使用卷积层和po ...
最新文章
- 在leangoo项目里怎么批量导入成员,更改项目成员权限,移除项目成员?
- DLT645规约学习笔记
- centos7数据库mysql+mariadb
- Oracle编程入门经典 第4章 新9i示例模式
- 用泛型来实现编译时期的类型推断
- 朵唯机器人怎么连网_平遥古城推出机器人导游 可伴游还可骑行
- python3汉字转unicode_Python3 编码问题: 怎么将Unicode转中文,以及GBK乱码ÖйúÉÙÊýÃñ×åÌØÉ«´åÕ¯...
- 两台计算机怎样共享一台打印机共享文件夹,两台电脑怎么共享文件和打印机
- 2345浏览器网址导航_2345导航,曾被网民吐槽劫持浏览器主页
- 使用Microsoft数据迁移助手将Oracle数据库迁移到SQL Server –安装过程和简短概述
- javaweb实训第五天下午——xml配置文件约束报错问题
- CentOS系统找回MySQL数据库root登录密码
- 2021年度训练联盟热身训练赛第四场,签到题CDF
- 【游戏开发】游戏开发书籍汇总
- Sniffer Pro 4.7.530 SP5下载地址
- EasyUI入门—Layout布局
- android usb 摄像头 驱动开发,自制USB摄像头硬件的驱动编写_修改UVC
- JS阻止默认行为和Vue阻止默认行为
- Telnet远程和tracert跟踪命令
- 大数据之路——数据挖掘