Применение стилизации к партиям вызывает проблему

В настоящее время я использую модуль стилизации TF-Hub для ряда экспериментов, в которых я произвольно применяю стилизацию к набору изображений.

После стилизации изображения выглядят следующим образом:

Я использую набор данных Cats-vs.-Dogs и загружаю его, используя следующий листинг кода:

train_ds, validation_ds = tfds.load(
    'cats_vs_dogs',
    split=['train[:85%]', 'train[85%:]'],
    as_supervised=True
)

После этого я создаю служебную функцию для применения модуля стилизации к данному изображению, и я отображаю эту служебную программу следующим образом:

train_ds = (
    train_ds
    .map(preprocess_image, num_parallel_calls=AUTO)
    .shuffle(1024)
    .map(apply_random_stylization, num_parallel_calls=AUTO)
    .batch(BATCH_SIZE)
    .prefetch(AUTO)
)

apply_random_stylization определяется как -

def apply_random_stylization(image, label):
    image = random_apply(stylize_image, image, p=0.8)
    return (image, label)

def random_apply(func, x, p):
        return tf.cond(
          tf.less(tf.random.uniform([], minval=0, maxval=1, dtype=tf.float32),
                  tf.cast(p, tf.float32)),
          lambda: func(x),
          lambda: x)

def stylize_image(image):
    stylized_image = HUB_MODULE(tf.expand_dims(image, 0), tf.constant(STYLE_IMG))[0]
    stylized_image = tf.squeeze(stylized_image)
    return tf.clip_by_value(stylized_image, 0., 1.)

Вот Colab Gist, в котором воспроизводится эта проблема.

Любая помощь будет оценена. Благодарность!

1 ответ

На странице модели говорится, что изображение содержимого и изображение стиля необходимо нормализовать до [0, 1]. Разделение переданных изображений на parse_single а также preprocess_image на 255 дает следующие результаты:

Другие вопросы по тегам