FCN 中 Conv2DTranspose 层的问题

Problem with Conv2DTranspose layer in FCN

我正在尝试使用 keras 实现 FCN,但是当我尝试对特征图进行上采样时遇到了问题。上采样后特征图的大小与输入大小不同。我发现这个问题的发生是因为特征图的大小是奇数,并且在池化层之后它的大小除以 2.

例如:输入大小为 (95,95,3),通道数为 3,应用最大池化后大小将为 (47,47,3)。因此,当我尝试对特征图 x2 进行上采样时,形状将为 (94,94,3)....

您需要使用填充才能解决您的问题。

如果在下采样期间的某个点达到奇数,则通过普通 upsampling/transposed 卷积,您将无法保持输入图像的高度和宽度。

解决方法是padding;查看此文档:https://www.tensorflow.org/api_docs/python/tf/keras/layers/ZeroPadding2D

实际上,当您以 2 为因子进行下采样并得到一个奇数 (54/2 = 27) 时,您将得到大小 (27,27),并且通过 ZeroPadding2D 可以将图像调整为例如 (28,28)。

在遇到此 'odd number' 问题的每个步骤中应用填充将帮助您解决问题。