卷积神经网络:每个过滤器将覆盖多少像素?

Convolutional Neural Networks: How many pixels will be covered by each of the filters?

如何计算网络中每个过滤器覆盖的区域(在原始图像中)?

例如 可以说图像的大小是 WxW 像素。 我正在使用以下网络:

layer 1 : conv :  5x5
layer 2 : pool :  3x3
layer 3 : conv :  5x5
.....
layer N : conv :  5x5

我想计算每个滤镜将覆盖原始图像中的多少区域。

例如第 1 层中的过滤器将覆盖原始图像中的 5x5 像素。

类似的问题是,每次激活会覆盖多少像素?这与输入图像必须有多大才能在一层中产生恰好一个激活基本相同?

假设一个层的过滤器大小和步幅为ks,输入的大小为x*x,我们有(((x-k1+1)/s1-k2+1)/s2.../sn)=1,并且x可以轻松解决。

原来的问题相当于,在不考虑最后一层的步幅的情况下,输入图像必须有多大才能在一层中产生恰好一个激活?

所以答案是x/sn,应该由下面的伪代码计算

x = layer[n].k
from i = n-1 to 1
   x = x*layer[i].s + layer[i].k - 1

总像素数为x*x

在你的例子中,第一层的sum_1d是5,第二层是5*1+3-1=7,第三层是5*3+2+4=21(我假设池化层是非重叠的,s=3)..

你可以反过来验证一下,假设输入是21*21,第一层之后是17*17,pooling之后是(17-2)/3=5(实际上是16*16和 15*15 将给出相同的结果),这正好适合第三层的一个过滤器。