问题描述
我正在使用Conv2D转置以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])