#python #tensorflow #keras #tf.keras #resnet
#python #тензорный поток #keras #tf.keras #resnet
Вопрос:
У меня есть 3-канальные tif-изображения (16-разрядные). Теперь я хотел бы использовать их в качестве обучающих образов на предварительно обученном ResNet50V2 от keras. Я понял, что я должен вызывать tf.keras.applications.resnet_v2.preprocess_input
функцию предварительной обработки as при использовании ImageDataGenerators. Я просмотрел документацию функции (preprocess_input), и она говорит мне, по крайней мере, что она ожидает 8-битные данные. Есть ли какой-либо способ передать 16-разрядные изображения в ImageDataGenerator?
Или мне нужно преобразовать мои изображения в 8-разрядные, прежде чем отправлять их в ImageDataGenerator?
Я рад любому совету!
Комментарии:
1. Я отредактировал ваш вопрос, чтобы он был посвящен только одному вопросу, в соответствии с рекомендациями сайта.
Ответ №1:
Я не вижу никаких ссылок на 8-битные данные в документации, на которую вы ссылались.
И да, он может принимать 16-разрядные:
import tensorflow as tf
import numpy as np
x = np.random.randint(0, 256, (1, 224, 224, 3), dtype=np.uint16)
tf.keras.applications.resnet_v2.preprocess_input(x)
array([[[[ 0.43529415, -0.24705881, -0.23137254],
[-0.81960785, 0.3411765 , -0.5921569 ],
[-0.7882353 , 0.58431375, 0.0196079 ],
...,
[-0.60784316, -0.4980392 , 1. ],
[-0.654902 , 0.99215686, -0.38039213],
[ 0.03529418, -0.7411765 , -0.8901961 ]]]], dtype=float32)
Комментарии:
1. В документации указано, что для аргумента ‘x’: numpy.array с плавающей запятой или tf. Тензорный, 3D или 4D с 3 цветовыми каналами, со значениями в диапазоне [0, 255]. Предварительно обработанные данные записываются поверх входных данных, если типы данных совместимы. Чтобы избежать такого поведения, можно использовать numpy.copy(x) .
2. Наверное, я должен был упомянуть, что мои изображения имеют значения полного 16-битного диапазона (0,65535)
3. Разделить их на 65535?
4. Но тогда они все еще не используют диапазон [0,255]. И я вообще не знаю, что должна делать эта функция предварительной обработки — масштабирование от -1 до 1? Если это все, мне пришлось бы масштабировать изображения до [0,255] раньше. Но в какой момент это возможно?
5. Разделите на 65535, затем умножьте на 255