如何在Keras中使用张量的可变切片索引?

时间:2019-08-04 16:21:01

标签: image tensorflow keras slice tensor

我想从角膜的图像张量中切出一个矩形区域。该图像作为形状(128,128,3)的一个输入给出,矩形区域由固定的宽度和高度定义,另外一个形状为(2,)的第二个输入定义,以提供矩形在图像中的位置。因此,当width = height = 32时,目标张量具有(32,32,3)形状。

某些背景:我想通过自动编码器提供带有遮罩区域的图像,以希望此生成模型可以填充缺失的(归零)区域。之后,我要切出该填充区域。该掩蔽区域的位置在批次之间有所不同,因此我需要能够利用第二个输入

    # first input of shape (128, 128, 3)
    masked_img = Input(shape=self.input_shape)
    # second input of shape (2,) or (4,)
    mask_pos = Input(shape=(2,), dtype="int32", name="input-mask-position")

    # feed masked image through autoencoder
    filled_img = self.generator(masked_img)

    # cut out the fill-in region of the output
    fill_in = ???

在伪代码中,我确实需要执行以下操作:

    fill_in = extract_fill_in_region(filled_img, region_x, region_y)
    or
    fill_in = extract_fill_in_region(filled_img, region_x, region_y, region_width, 
    region_height)

取决于区域的大小是否固定。

第一个参数由第一个输入(masked_img)给出。所有其他信息都隐藏在第二个输入(mask_pos)中。

在固定所有参数的情况下很容易做到这一点:

    fill_in = Lambda(lambda img: img[:, 0:self.box_height, 0:self.box:width,:])(filled_image)

但这不是我需要的。

请帮助我:)预先感谢...

0 个答案:

没有答案