#tensorflow #keras #deep-learning #tensorflow-datasets #preprocessor
#tensorflow #keras #глубокое обучение #tensorflow-наборы данных #препроцессор
Вопрос:
Я использую функцию tf.keras.preprocessing.image_dataset_from_directory(), и когда я проверяю содержимое загруженного изображения, я вижу, что оно содержит случайные значения пикселей, несовместимые с исходным изображением.
Вот как я называю функцию:
ds = tf.keras.preprocessing.image_dataset_from_directory(
images_path,
label_mode=None,
shuffle=False,
seed=None,
image_size=(input_height, input_width),
batch_size=batch_size
)
Затем я выбираю первый элемент набора данных следующим образом:
it = iter(ds)
img = next(it).numpy()
Результирующее изображение содержит значения типа 164.3462, что не имеет смысла, поскольку исходный файл изображения содержит только целые числа в качестве значений пикселей. Если есть преобразование в float32, я бы ожидал, что все пиксели будут иметь .0 в качестве десятичной части их значения.
Я что-то упускаю? Я просто хотел бы загрузить свои изображения с исходными значениями или с исходными значениями, за которыми следует .0 в случае, если требуется float32.
Что не так?
Ответ №1:
Чтобы использовать исходные значения, используйте «ближайший» в качестве интерполяции для изменения размера изображения.
ds = tf.keras.preprocessing.image_dataset_from_directory(
images_path,
label_mode=None,
shuffle=False,
seed=None,
interpolation='nearest',
image_size=(input_height, input_width),
batch_size=batch_size
)
Ответ №2:
Это потому image_dataset_from_directory
bilinear
, что при попытке изменить размер изображения используется интерполяция (input_height, input_width)
по умолчанию. Проверьте эту ссылку для других вариантов методов интерполяции.
Комментарии:
1. Спасибо! Я поддержу это, как только у меня будет достаточно репутации для этого.