专栏首页新智元【干货】CNN 感受野首次可视化:深入解读及计算指南

【干货】CNN 感受野首次可视化:深入解读及计算指南

【新智元导读】作为目前的研究和应用热点,图形识别使用 CNN 模型架构。感受野则是 CNN 中最为重要的概念之一,但此前还没有任何关于如何计算和可视化 CNN 感受野信息的完整指南。本文引入一种新的方式来显示 CNN 中的特征图,揭示了感受野信息,并附上可用于任何 CNN 架构的完整的感受野计算,填补了这个空白。作者还提供了一个简单的程序来做计算演示。

感受野可能是卷积神经网络(CNN)中最重要的概念之一,其相关文献值得关注。所有最先进的对象识别方法的模型架构都是围绕这一想法设计的。然而,据我所知,目前还没有任何关于如何计算和如何可视化 CNN 感受野信息的完整指南。本文引入一种新的方式来显示 CNN 中的特征图,揭示了感受野信息,并附上可用于任何 CNN 架构的完整的感受野计算,填补了这个空白。我还用了一个简单的程序来做计算演示,以便任何人都可以开始计算感受野,并获得更好的有关 CNN 架构的知识。

作为读懂本文的前提,我假设你熟悉 CNN 的概念,特别是卷积和池化操作。你可以阅读“深度学习卷积运算指南”这篇论文(A guide to convolution arithmetic for deep learning),来更新你的 CNN 知识。这篇文章实际上就是受到该论文的启发,并使用了类似的符号。

固定大小的CNN特征图可视化

感受野被定义为特定 CNN 特征正在“看”(即受其影响)的输入空间中的区域。特征的感受野可以通过其中心位置及其大小进行充分描述。图1 显示了一些感受野的实例。通过应用卷积 C (它在5x5 输入图上 Kernel size k= 3×3,paddingsize p = 1x1,stride s = 2x2),我们将得到输出 3x3 特征图(绿色图)。将相同的卷积应用在 3x3 特征图上,我们将获得一个 2x2 的特征图(橙色图)。可以使用以下公式计算每个维度中的输出特征数。

请注意,在本文中,为了简化说明,我假设 CNN 架构是对称的,并且输入图像是正方形的。因此,所有变量的两个维度都具有相同的值。如果 CNN 架构或输入图像不对称,则可以为每个维度分别计算特征图属性。

图1:可视化 CNN 特征图的两种方式。在各种情况下,我们都使用内核 size k = 3×3,paddingsize p = 1x1,stride s = 2x2 的卷积C 。(上排)在5x5 的输入图上产出 3x3

的绿色特征图。(下排)在绿色特征图的顶部应用同样的卷积,产生2x2的橙色特征图。(左列)可视化 CNN 特征图的一般方法。只看特征图,我们不知道特征在“看”哪里(感受野的中心位置)以及该区域的大小(感受野的大小)。在深度 CNN 中无法追踪感受野的信息。(右列)固定大小的 CNN 特征图可视化,其中每个特征图的大小是固定的,特征位于感受野的中心。

图1的左列显示了可视化 CNN 特征图的常见方式。在该可视化中,虽然通过观察特征图,我们可以知道它包含多少个特征,但不可能知道每个特征所“看”的区域(感受野的中心位置)以及该区域的大小(其感受野大小)。图1的右栏显示了固定大小 CNN 的可视化,其问题是通过保持所有特征图的大小不变并等于输入图来解决的。每个特征在其感受野的中心位置被标记。由于特征图中的所有特征都具有相同的感受野大小,因此我们可以简单地绘制围绕一个特征的边界框来表示其感受野大小。我们不必将该边界框映射到输入层,因为特征图已经表示为和输入层相同的大小。图2显示了另一个示例,使用了相同卷积但应用于较大输入图(7x7)。我们可以在 3D(左)或 2D (右)中绘制固定大小的CNN 特征图。注意,图2中感受野的大小非常快速地升高,以致第二特征层的中心特征的感受野覆盖了几乎整个输入图。这对于改进深度CNN 的设计有非常重要的参考意义。

图2:另一个固定大小的 CNN 特征图表征。同样的卷积 C 应用于更大的输入图( i = 7x7)。我在中心特征周围画出了感受野的边界框,为了看得更清楚,去掉了填充网格。固定大小的 CNN 特征图可以用 3D (左)或 2D (右)表示。

感受野计算

为了计算每一层的感受野,除了每个维度中的特征数 n 之外,我们还需要跟踪每层的一些额外信息,包括当前感受野大小r,两个相邻(或跳跃)特征之间的距离j,以及左上部特征(第一个特征)的中心坐标 Start。注意,特征的中心坐标被定义为其感受野的中心坐标,如上文中固定大小 CNN 特征图所示。当应用 Kernel 大小为 k,padding 大小为 p 和 stride 大小为 s 的卷积时,输出层的属性可以通过以下方程计算:

  • 第一个方程根据输入特征数量和卷积属性计算 number of output futures 的数量。
  • 第二个方程计算输出特征图中的 jump,其等于输入图中的jump 乘以您在应用卷积时 jump over 的 number of input features(stride大小)。
  • 第三个方程计算输出特征图的感受野大小,其等于由 k 个输入特征(k-1)*j_in 所覆盖的区域加上由输入特征的感受野覆盖的边界上的额外区域。
  • 第四方程计算第一输出特征的感受野的中心位置,其等于第一输入特征的中心位置加上从第一输入特征的位置到第一卷积的中心的距离(k-1)/ 2 * j_in 减去 padding space p * j_in。请注意,这两种情况下,我们都需要乘以输入特征图的 jump ,以获得实际的距离/空间。

第一层是输入层,总有 n= image size, r = 1,j = 1 以及 start = 0.5。请注意,在图 3 中,我使用了输入层第一个特征的中心为0.5的坐标系。通过递归地应用上述四个方程,我们可以计算 CNN 中所有特征图的感受野信息。图 3 显示了这些方程是如何工作的。

我还创建了一个小型的 python 程序,它可以计算给定 CNN 架构中所有层的感受野信息,还允许你输入任何特征图的名称和该图中特征的索引,并返回相应的感受野的大小和位置。下图显示了使用 AlexNet 时的输出示例。该代码在本文末尾提供。

原文地址:https://medium.com/@nikasa1889/a-guide-to-receptive-field-arithmetic-for-convolutional-neural-networks-e0f514068807

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-04-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【重磅】深度学习难以加冕算法之王 3 大根本原因

    【新智元导读】New Frontiers in Computing 2016 日前在斯坦福举行, 探讨视觉、NPL、人机界面等认知和计算前沿问题。本文是参会笔记...

    新智元
  • 【珍藏】了解CNN这一篇就够了:卷积神经网络技术及发展

    【新智元导读】深度学习很火,说起深度学习中一个很重要的概念——卷积神经网络(CNN)似乎也人人皆知。不过,CNN究竟是什么,涉及哪些概念,经过如何发展,真正要有...

    新智元
  • 【华为曝光智能世界产业版图】2025 年全球智能终端将达400亿,智能助理普及率超90%

    新智元
  • 简洁平凡的PC清理工具——CCleaner

    课代表
  • 牛!何恺明包揽2项ICCV 2017最佳论文奖!这位高考状元告诉你什么是开挂的人生

    大神终究是大神! 刚刚,AI 科技大本营获悉,继两次荣获 CVPR 最佳论文奖之后,何恺明参与的两篇最新论文又分别摘下 ICCV 2017 的最佳论文奖(Bes...

    AI科技大本营
  • JavaWeb开发中的文件访问路径

    服务端的地址指的是相对于你的Web应用的地址,这个地址是在服务器端解析的(不同于HTML和JavaScript中的地址,他们是在浏览器端解析的),也就是说这时候...

    卡尔曼和玻尔兹曼谁曼
  • Centos安装jdk1.8出现-bash: //usr/local/soft/jdk1.8.0_191/bin/javac: /lib/ld-linux.so.2: bad ELF interpre

    1、从来没有这么郁闷,之前安装都是好好的,自从将Centos升级到7.0版本,安装了jdk报了这个错误,也是郁闷的一毛,参考了一下百度的,记录一下。使用java...

    别先生
  • 遵循面向对象设计原则,设计出高内聚低耦合可扩展模块

    所谓易,“变易”,“简易”,“不易”,就是要告诉我们如何从变化中 抽出 不变的 —— 选择一个正确的抽象视角。七大基本原则介绍完毕,很空洞,需要联系代码仔细体会...

    wuweixiang
  • 为博客添加可切换的暗色和亮色主题

    发布于 2018-05-19 13:42 更新于 2018-08...

    walterlv
  • c++ 数组

    数组就是一组元素的内存位置,各个内存位置可以存储相同数据类型的数据项,而我们可以用相同的变量名引用所有的内存地址 初始化数组 int myA[5]={1,2,3...

    lpxxn

扫码关注云+社区

领取腾讯云代金券