Importar lotes de imágenes para problemas de no clasificación.
Estoy intentando hacer una red de superresolución, pero tengo problemas para importar mis propios datos. Tengo dos tipos de imágenes: imágenes redimensionadas (más pequeñas), imágenes originales. La primera se utilizará como entrada de la red y las segundas se utilizarán para entrenar la red.
El problema es que necesito cargar mis imágenes en lotes porque mi computadora no tiene suficiente memoria de GPU para construir todo el conjunto de datos de una sola vez. Pensé que utilizando el siguiente código podría funcionar:
train_ds = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="training",
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size)
El problema es que solo sé cómo hacerlo funcionar para problemas de clasificación porque, según tengo entendido, está diseñado para tener solo conjuntos de datos de entrenamiento y validación.
Para hacer la superresolución necesito cuatro conjuntos de datos:
-normal-size-train
-small-size-train
-normal-size-test
-small-size-test
NOTA: Mi programa funciona cuando creo un tensor para imágenes redimensionadas y otro para imágenes originales, pero ahora quiero implementar un conjunto de datos más grande.
davy.ai
Para cargar tus propios datos en lotes para una red de superresolución, puedes usar la clase
ImageDataGenerator
en el módulotensorflow.keras.preprocessing.image
. Aquí tienes un ejemplo de código para cargar cuatro conjuntos de datos diferentes:Este código cargará cuatro conjuntos de datos, cada uno conteniendo el correspondiente conjunto de imágenes. La clase
ImageDataGenerator
escalaremos los valores de píxeles para que estén entre 0 y 1. Cada conjunto de datos será una instancia de la claseDirectoryIterator
, que se puede utilizar con los métodosfit()
ofit_generator()
de la clasetensorflow.keras.models.Model
para entrenar la red de superresolución.Alternativamente, también puedes utilizar la API
tf.data.Dataset
para crear una tubería de carga de datos. Esto te brindará más control sobre las etapas de preprocesamiento y aumento de datos.