Keras:自适应最大池化

时间:2018-10-22 17:32:39

标签: python machine-learning keras

我正在使用CNN,图像的尺寸和纵横比不同,因此在预处理步骤中对图像进行大小调整和中心裁切可能会丢失一些有价值的信息(特别是边缘,右侧,左侧,上侧和下侧) )。 我认为,更好的方法是应用自适应最大池化(给定目标输出尺寸),以便在将图像传递到最终层之前调整图像的大小。 在keras中,我可以添加一个简单的最大池化层,但是在keras中有没有办法告诉/限制最大池化层的输出大小?例如:如果一张图片的尺寸为800x1520,但所需的输出为200x200,则会应用最大缓冲池,并将图片的尺寸调整为200x200

1 个答案:

答案 0 :(得分:1)

Keras中没有“自适应池化层”,但是有GlobalMaxPooling层家族。它们可以处理未定义的输入形状(即一维可以为None),但始终具有相同的输出形状。

但是,请注意,在一个批次中,所有输入都必须具有完全相同的尺寸。如果所有图像的大小都不同,则意味着您只能将批处理大小限制为1,这将使训练和推理变得非常缓慢。

我建议您首先尝试查看将所有图像调整为相同大小时的模型效果如何,或者填充较小的图像以使其达到与最大图像相同的尺寸。这两个选项中哪个更好,显然取决于图像和您的特征检测体系结构,但是由于上述限制,使用可变输入大小应该是最后一个选择。