使用 Conv2D Transpose 对图像进行上采样时的滤波器大小和步幅

Filter size and stride when upsampling image using Conv2D Transpose

我正在使用 Conv2D Transpose 按因子 18、9、6、3 对图像进行上采样。 我的图像大小为 (1,1)、(2,2)、(3,3)、(6,6)。目标是将它们上采样到大小 (18,18)。

我遇到的问题是选择正确的过滤器大小、步幅和填充来实现这一点。我已经阅读了有关使用不当尺寸时可能出现的棋盘图案的文章,但我仍然没有找到关于选择哪种尺寸的任何解决方案。

对于图像 (1,1) -> (18,18),我选择了 (18,18) 的过滤器大小,没有步幅和填充。这对我来说很有意义,因为这个像素完全负责整个上采样图像的外观。

但是其他三个给我带来了问题。 我想到的一种解决方案是,对于 (2,2) -> (18,18),我使用步幅为 (9,9) 的过滤器大小 (9,9)。这将导致每个像素 (2,2) 提供 9,9 个上采样像素。

这是正确的方法还是您会推荐其他方法。

看看Keras docs。您可以在那里找到计算输出形状的公式:

new_rows = ((rows - 1) * strides[0] + kernel_size[0] - 2 * padding[0] + output_padding[0])
new_cols = ((cols - 1) * strides[1] + kernel_size[1] - 2 * padding[1] + output_padding[1])