【问题标题】:What's the purpose of using a max pooling layer with stride 1 on object detection在对象检测中使用步幅为 1 的最大池化层的目的是什么
【发布时间】:2025-12-12 09:05:01
【问题描述】:

我正在使用 Single Shot Detector (SSD),更具体地说是 keras 中的 this implementation

当我检查 SSD300 时(尽管我注意到这也适用于 SSD512),我注意到在每个卷积组之后,会出现一个减少特征图维度的最大池化。到目前为止一切都很好,但在 conv 组 5 之后(准确地说是在 conv5_3 层之后),应用的最大池化使用步幅 1。我无法在 SSD 的original work 上验证这一点,因为它是用 caffe 编写的,我不是熟悉那个。这意味着(使用添加的填充)没有特征图大小减小。此外,最大池化层中的过滤器数量与之前相同,内核大小增加到(3,3)(来自(2,2)

据我所知,这意味着这个最大池化层既不用于删除维度,也不用于减少(或无论如何更改)过滤器的数量。因此,它仅用于在特征图中应用最大池化过滤器。有谁知道为什么这是必要的?或者为了让它更正确,这样一层的目的是什么?我的猜测是可以完全删除它,我预计性能不会有太大差异,但老实说我还没有检查过。

关于我可能在这里遗漏的任何想法?

【问题讨论】:

标签: python keras object-detection


【解决方案1】:

这样的过滤器会突出最强的特征并丢弃弱的特征,但不会降低其维度。意义取决于以下层中发生的情况。 从理论上讲,会出现冗余......

根据输入的大小,可能不需要降维,因为您可能会丢失任何特征。

【讨论】: