使用keras将图像分成子部分

Dividing an image into subparts using keras

我想执行 this paper

为此,我想将图像划分为 64x64 的子方形区域,如图所示。(例如,尺寸为 256x256 的图像将被划分为尺寸为 64x64 的 16 个部分。)

我已经能够将此作为预处理的一个步骤来执行,但我希望这项工作在推理时完成。 我做了一些研究,似乎可以使用 lambda 层来做到这一点。但是,我仍然无法意识到这一点。 我必须承认,我仍然无法理解这一切是如何工作的。

您可以使用 tf.image.extract_patches 函数执行此操作。

out = Lambda(
    lambda x: tf.split(
        tf.image.extract_patches(x, [1,16,16,1], [1,16,16,1], [1,1,1,1], padding="VALID"),
        256, axis=3)
    )(inp)

这将产生 256(即 16 x 16),[batch_size, 16, 16, 3] 个补丁。

PS:但是,我认为您也可以使用数据处理管道来实现这一点。不应该有任何东西阻止您在推理期间使用您用于训练的数据处理管道。