在某些情况下,在 CNN 中省略池化层是否有意义?

T.P*_*Poe 5 machine-learning computer-vision neural-network conv-neural-network max-pooling

我知道通常的 CNN 由卷积层和池化层组成。池化层使输出更小,这意味着更少的计算,并且它们还以某种方式使其变换不变,因此内核滤波器的特征位置可以在原始图像中稍微移动。

但是当我不使用池化层时会发生什么?原因可能是我想要原始图像中每个像素的特征向量,因此卷积层的输出必须与图像大小相同,只是具有更多通道。这有道理吗?这些特征向量中是否仍然存在有用的信息,或者 CNN 中是否需要池化层?或者是否有一些方法可以通过池化层获取各个像素的特征向量?

Max*_*xim 1

卷积特征图,无论是早期的还是后来的,都包含很多有用的信息。许多有趣的应用程序完全基于预先训练的 CNN 的特征图,例如Google Deep DreamNeural Style。由于其简单性,预训练模型的常见选择是 VGGNet。

另请注意,某些 CNN(例如All Convolutional Net)用卷积层替换池化层。他们仍然通过跨步进行下采样,但完全避免 maxpool 或 avgpool 操作。这个想法已经流行并应用于许多现代 CNN 架构中。

唯一的困难是没有下采样的 CNN 可能更难训练。您需要足够的训练数据,其中标签是图像(我假设您有),并且您还需要一些用于反向传播的巧妙损失函数。当然,您可以从像素差异的 L2 范数开始,但这实际上取决于您要解决的问题。

我的建议是采用现有的预训练 CNN(例如用于张量流的 VGGNet)并仅保留前两个卷积层,直到第一次下采样。这是尝试这种架构的快速方法。