Применение стилизации к партиям вызывает проблему
В настоящее время я использую модуль стилизации 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 дает следующие результаты: