查看原文
其他

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

2017-04-22 新智元

  新智元编译  

来源:medium.com

作者: Đặng Hà Thế Hiển

编译:张易

新智元启动 2017 最新一轮大招聘: COO、总编、主笔、运营总监、视觉总监等8大职位全面开放


新智元为COO和执行总编提供最高超百万的年薪激励;为骨干员工提供最完整的培训体系、高于业界平均水平的工资和奖金。加盟新智元,与人工智能业界领袖携手改变世界。

简历投递:jobs@aiera.com.cn    HR 微信:13552313024


【新智元导读】作为目前的研究和应用热点,图形识别使用 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


 

新智元招聘


新智元日前宣布,获6家顶级机构总额达数千万元的PreA轮融资,蓝驰创投领投,红杉资本中国基金、高瓴智成、蓝湖资本 、蓝象资本跟投。本轮融资将用于新智元团队规模扩充并增加新产品服务线,目标打造 To B 的人工智能全产业链服务平台。


职位:COO


职位年薪:70 - 100 万(工资+奖金+期权)
工作地点:北京-海淀区
所属部门:运营部
汇报对象:CEO
下属人数:28 人
年龄要求:30 岁至 45 岁
性别要求:不限
工作年限:5 年
语  言:英语 + 普通话
学历要求:硕士以上


职位描述:


  1. 热爱人工智能事业,对行业及市场有深入的了解和人脉资源;

  2. 主持公司经营系统总体设计方案 ,负责全公司经营投资预算方案;

  3. 密切关注国际国内 AI 产业动向和趋势,评估重大信息技术的影响,为公司引进人才、技术以及开拓合作伙伴提出意见和建议;

  4. 定期为公司提出企业经营状况分析和前景预测报告,为重大决策事项提供数据支持和专项研究报告;

  5. 负责组织完善各部门制定与其专业管理相关的各项管理制度;

  6. 审查各部门工作汇报,评估工作效率并对存在的问题加以处理;

  7. 有知名企业或知名媒体机构工作经验者优先。


应聘邮箱:jobs@aiera.com.cn 

 HR微信:13552313024

新智元欢迎有志之士前来面试,更多招聘岗位请点击阅读原文查看。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存