完全卷积网络的感受野

关于感受野的计算有许多问题。这在StackOverflow上解释得很好,这里可以找到详细的说明。

然而,关于如何在完全卷积层中计算感受野,即在包含残差块、特征图拼接和上采样层(如特征金字塔网络)的情境下,目前还没有相关的博客或教程。

  1. 据我所知,残差块和跳跃连接不会影响感受野,可以忽略。答案可以在这里找到。

  2. 上采样层如何处理?例如,如果我们有一个有效感受野为900的层,之后跟随一个上采样层,感受野会减半吗?

  3. 当与前层特征图拼接时,感受野会发生变化吗?

提前感谢!


回答:

为了逐一回答你的问题,我们首先从这个上下文中感受野的定义开始:

单个感觉神经元的感受野是指在感觉空间的特定区域(例如,身体表面或视野),在这个区域内刺激会改变该神经元的放电情况。

如从维基百科所述。这意味着我们正在寻找输入中所有影响当前输出的像素。逻辑上,如果你进行卷积操作——例如,使用一个3×3的滤波核——单个像素的感受野就是在该特定步骤中卷积的输入区域中对应的3×3图像区域。

从视觉上看,在这个图形中,底部的较暗区域标记了输出中特定像素的感受野:感受野的视觉描述

现在,回答你的第一个问题:残差当然仍然会影响感受野!我们将残差块表示如下:

  • F(X):残差块
  • g_i(X):单个卷积块

然后我们可以将残差块表示为F(X) = g_3(g_2(g_1(X))) + X,因此在这个例子中我们将堆叠3个卷积(作为示例)。当然,这个卷积的每一层仍然会改变感受野,因为这与开头解释的一样。简单地再次加上X当然不会改变感受野。但仅此加法并不会构成一个残差块。

同样,跳跃连接不会以跳过层的方式影响感受野,因为跳过层几乎总是会导致不同的(通常是较小的)感受野。正如你在链接的答案中所解释的,如果你的跳跃连接具有更大的感受野,那将会有所不同,因为感受野是通过你的流程图中不同路径的不同区域的最大值(更具体地说,是并集)。

关于上采样层的问题,你可以通过问自己以下问题来猜测答案:输入图像的区域是否在图像内的任何地方受到上采样的影响?

答案应该是“显然没有”。本质上,你仍然在查看输入区域的相同区域,尽管现在你有了更高的分辨率,类似的像素实际上可能在查看相同的区域。回到上面的GIF图:如果你在绿色区域中拥有4倍的像素数,每个像素仍然必须查看蓝色区域中特定的大小不变的输入区域。所以,不,上采样不影响这一点。

对于最后一个问题:这与第一个问题非常相关。实际上,感受野查看所有影响输出的像素,因此根据你拼接的特征图,它可能会发生变化。

同样,结果的感受野是你拼接的特征图的感受野的并集。如果它们彼此包含(要么A是B的子集,要么B是A的子集,其中AB是要拼接的特征图),那么感受野不会改变。否则,感受野将是A并B

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注