无痛理解CNN中的感受野receptive field

CNN中感受野的计算

从直观上讲,感受野就是视觉感受区域的大小。在卷积神经网络中,感受野的定义是决定某一层输出结果中一个元素所对应的输入层的区域大小

感受野计算时有下面的几个情况需要说明:

a)第一层卷积层的输出特征图像素的感受野的大小等于滤波器的大小;

b)深层卷积层的感受野大小和它之前所有层的滤波器大小和步长有关系;

c)计算感受野大小时,忽略了图像边缘的影响,即不考虑padding的大小。

至于如何计算感受野,我的建议是top to down的方式,即从网络的最后向前推

感受野的大小是由kernel size(filter)和stride size(步长)一起决定的,公式:

rfsize = f(out, stride, ksize) = (out - 1) * stride + ksize,其中out是指上一层感受野的大小,stride是当前层stride

最后一层不带入公式,它的ksize是前一层的out

理解:

Feature Map的尺寸=(input_size + 2 * padding_size − ksize)/stride+1

根据定义 感受野是决定某一层输出结果中一个元素所对应的输入层的区域大小

这里指的是要求解的那层的一个元素也就是最初输入的out=1:

rfsize = f(out, stride, ksize) = (out - 1) * stride + ksize

感受野近似于用feature map反推input_size ,只是不考虑padding

例1:

以VGG16为例:

vgg16构造模型图:http://ethereon.github.io/netscope/#/gist/dc5003de6943ea5a6b8b

一个元素,所以out=1

pool2: rfsize= (1-1)*2+2=2

conv1_2: rfsize=(2-1)*1+3=4

conv1_1: rfsize= (4-1)*1+3=6

 例2:

r指感受野 s:stride,p:padding,k:filter

layer1对layer0:

out=1

(1-1)*2+3=3

layer2对layer0:

out=1

(1-1)*2+3=3

(3-1)*2+3=7

CNN感受野计算的更多相关文章

  1. 转载 - CNN感受野(receptive-fields)RF

    本文翻译自A guide to receptive field arithmetic for Convolutional Neural Networks(可能需要FQ才能访问),方便自己学习和参考.若 ...

  2. 对CNN感受野一些理解

    对CNN感受野一些理解 感受野(receptive field)被称作是CNN中最重要的概念之一.为什么要研究感受野呐?主要是因为在学习SSD,Faster RCNN框架时,其中prior box和A ...

  3. CNN 参数计算

    CNN 时间计算复杂度与空间复杂度 即,连续个数与参数个数, 每一个连接都意味着一个计算, 每一个参数都意味一个存储单元. 只计算主要部分. CNN局部连接与权值共享 如图所示: 全连接:如左图所示, ...

  4. 经典CNN模型计算量与内存需求分析

    表1 CNN经典模型的内存,计算量和参数数量对比 AlexNet VGG16 Inception-v3 模型内存(MB) >200 >500 90-100 参数(百万) 60 138 23 ...

  5. CNN中计算量FLOPs的计算

    1.FLOPs的概念:全称是floating point operations per second,意指每秒浮点运算次数,即用来衡量硬件的计算性能:在CNN中用来指浮点运算次数: 2.计算过程: 如 ...

  6. CNN卷积核计算

    作者:十岁的小男孩 目录 单层卷积核计算 三维卷积核计算 Padding=Valid&&Same 总结

  7. vgg16 感受野计算

    code: vgg_16 = [ [3, 1], [3, 1], [2, 2], [3, 1], [3, 1], [2, 2], [3, 1], [3, 1], [3, 1], [2, 2], [3, ...

  8. CNN网络结点计算总结(1998)

    图 来源:Gradient-Based Learning Applied to Document Recognition 参阅CSDN:https://blog.csdn.net/dcxhun3/ar ...

  9. CNN中感受野大小的计算

    1 感受野的概念 从直观上讲,感受野就是视觉感受区域的大小.在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小. 2 感受野 ...

随机推荐

  1. MySQL连接中出现大量的 init 状态问题

    最怕的就是睡一觉醒来,系统出了问题. 大早系统无法登陆,以前没有经验的同学code的代码,竟然 try catch 没有记录异常日志信息. 查的问题一点头绪都没有,一直锁定在公司公共网关接口出了问题. ...

  2. IOS-RunTime(刨根问底)

    方法调用 让我们看一下方法调用在运行时的过程(参照前文类在runtime中的表示) 如果用实例对象调用实例方法,会到实例的isa指针指向的对象(也就是类对象)操作.如果调用的是类方法,就会到类对象的i ...

  3. Activiti快速入门

    1.什么是Activiti 在解释activiti之前我们看一下什么是工作流.工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照 ...

  4. angular js jquery中post请求的一点小区别

    这也是最近遇到的坑,还是之前那个项目,现在要实现登录功能. 背景:注册功能之前已经跑通了.前端用的是jquery后台是springMVC.鉴于注册和登录有些接口功能是类似的(比如注册确保邮箱是没有注册 ...

  5. 下载并安装Prism5.0库(纯汉语版)

    Prism5.0中包含了文档,WPF代码示例,程序集.本篇告诉你从哪里获取程序集和代码示例,还有NuGet包的内容. 对于新功能,资产,和API的更改信息,请看Prism5.0新内容. 文档 Pris ...

  6. LeetCode OJ :Move Zeroes (移动0)

    Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...

  7. Android中轻松使用线程

     当你第一次启动一个Android程序的时候,一个被 称为"main"的线程就被自动创建了.它被称为主线程或者UI线程,它是非常重要的因为负责分发事件给对应的widget,还包含画 ...

  8. 常用algorithm及其Python实现

    冒泡排序 def bubble_sort(li): for i in range(len(li)-1): # i表示第几趟 for j in range(len(li)-i-1): # j表示图中的箭 ...

  9. html display和visibility在资源加载上的区别

    想要把一个html里的UI组件设置为可见/不可见,可以用两个属性,display=none/block, visibility=hidden/visible, 网上的解释是display虽然可以让一个 ...

  10. LeetCode Replace Words

    原题链接在这里:https://leetcode.com/problems/replace-words/description/ 题目: In English, we have a concept c ...