Разделение изображения на части с помощью керас - PullRequest
0 голосов
/ 04 февраля 2020

Я хотел бы сделать реализацию этой статьи .

Чтобы сделать это, я хотел бы разделить изображение на площадь квадрата размером 64x64, как показано на этом рисунке. (например, изображение размером 256x256 будет разделено на 16 частей размером 64x64.)

Я уже могу сделать это в качестве этапа предварительной обработки, но Я хотел бы, чтобы эта работа была сделана во время вывода. Я провел некоторые исследования, и кажется, что это можно сделать с помощью лямбда-слоя. Однако я до сих пор не могу этого понять. Я должен признаться, что мне все еще трудно понять, как все это работает.

1 Ответ

0 голосов
/ 04 февраля 2020

Вы можете сделать это, используя функцию 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 : Тем не менее, я думаю, что вы можете достичь этого, используя конвейер обработки данных. Ничто не должно мешать вам использовать конвейер обработки данных во время вывода, который вы использовали для обучения.

...