如何在非正方形图像上运行Keras网络



我在tf.keras中训练了一个基于UNet的图像分割模型,该模型预测对象在给定图像中的位置。我以(None, 256, 256, 1)的输入形状进行训练并输出(None, 256, 256, 3)形状的预测。

我现在想预测更大的图像(例如(520, 696)(,并希望使用相同的模型。我知道可以将模型的输入形状更改为大小(None, None, None, 1)。然而,现在它仍然只能预测正方形图像——对于上面提到的图像,由于形状不匹配,它返回Dimensionality Error(520!=696(。

有人知道如何避免这种情况吗?或者有工作功能将较小的正方形输出缝合在一起吗?

错误步骤:

img = skimage.io.imread(X)  # shaped (520, 696)
pred = model.predict(img[None,...,None])

InvalidArgumentError:_MklConcatOp:输入的维度应该匹配:shape[0][1]=64 vs.shape[1][1]=65[[{node concatenate_4/concat}}]]

我找到了一个解决方案——由于我训练了一个UNet(在上采样后具有级联层(,它只能组合2的幂(例如256/512(。因此,我必须在预测之前添加填充,使其达到二次方,并从输出中删除填充。

最新更新