Genera un tf.data.Dataset desde archivos de imagen en un directorio.

tf.keras.preprocessing.image_dataset_from_directory(
    directory, labels='inferred', label_mode='int',
    class_names=None, color_mode='rgb', batch_size=32, image_size=(256,
    256), shuffle=True, seed=None, validation_split=None, subset=None,
    interpolation='bilinear', follow_links=False
)

Si su estructura de directorio es:

main_directory/
...class_a/
......a_image_1.jpg
......a_image_2.jpg
...class_b/
......b_image_1.jpg
......b_image_2.jpg

Entonces llamando image_dataset_from_directory(main_directory, labels="inferred") devolverá un tf.data.Dataset que produce lotes de imágenes de los subdirectorios class_a y class_b, junto con las etiquetas 0 y 1 (0 correspondiente a class_a y 1 correspondiente a class_b).

Formatos de imagen admitidos: jpeg, png, bmp, gif. Los gifs animados se truncan al primer fotograma.

Argumentos
directory Directorio donde se encuentran los datos. Si labels es “inferido”, debe contener subdirectorios, cada uno con imágenes para una clase. De lo contrario, se ignora la estructura del directorio.
labels O “inferido” (las etiquetas se generan a partir de la estructura del directorio), o una lista / tupla de etiquetas enteras del mismo tamaño que el número de archivos de imagen encontrados en el directorio. Las etiquetas deben clasificarse de acuerdo con el orden alfanumérico de las rutas del archivo de imagen (obtenidas a través de os.walk(directory) en Python).
label_mode
  • ‘int’: significa que las etiquetas están codificadas como enteros (por ejemplo, para sparse_categorical_crossentropy pérdida).
  • ‘categórico’ significa que las etiquetas están codificadas como un vector categórico (por ejemplo, para categorical_crossentropy pérdida).
  • ‘binario’ significa que las etiquetas (solo pueden haber 2) están codificadas como float32 escalares con valores 0 o 1 (p. ej. para binary_crossentropy).
  • Ninguno (sin etiquetas).
class_names Solo es válido si “etiquetas” se “infiere”. Esta es la lista explícita de nombres de clases (debe coincidir con los nombres de los subdirectorios). Se usa para controlar el orden de las clases (de lo contrario, se usa el orden alfanumérico).
color_mode Uno de “escala de grises”, “rgb”, “rgba”. Predeterminado: “rgb”. Si las imágenes se convertirán para tener 1, 3 o 4 canales.
batch_size Tamaño de los lotes de datos. Predeterminado: 32.
image_size Tamaño para cambiar el tamaño de las imágenes después de que se lean del disco. Predeterminado a (256, 256). Dado que la canalización procesa lotes de imágenes que deben tener el mismo tamaño, se debe proporcionar.
shuffle Ya sea para mezclar los datos. Predeterminado: Verdadero. Si se establece en False, ordena los datos en orden alfanumérico.
seed Semilla aleatoria opcional para barajar y transformaciones.
validation_split Flotador opcional entre 0 y 1, fracción de datos para reservar para validación.
subset Uno de “entrenamiento” o “validación”. Solo se usa si validation_split Está establecido.
interpolation Cadena, el método de interpolación utilizado al cambiar el tamaño de las imágenes. Predeterminado a bilinear. Apoyos bilinear, nearest, bicubic, area, lanczos3, lanczos5, gaussian, mitchellcubic.
follow_links Si visita subdirectorios apuntados por enlaces simbólicos. El valor predeterminado es Falso.
Devoluciones
A tf.data.Dataset objeto.

  • Si label_mode es Ninguno, cede float32 tensores de forma (batch_size, image_size[0], image_size[1], num_channels), codificación de imágenes (consulte a continuación las reglas relativas a num_channels).
  • De lo contrario, produce una tupla. (images, labels), dónde images tiene forma (batch_size, image_size[0], image_size[1], num_channels), y labels sigue el formato que se describe a continuación.

Normas sobre el formato de las etiquetas:

  • si label_mode es int, las etiquetas son un int32 tensor de forma (batch_size,).
  • si label_mode es binary, las etiquetas son un float32 tensor de unos y ceros de forma (batch_size, 1).
  • si label_mode es categorial, las etiquetas son un float32 tensor de forma (batch_size, num_classes), que representa una codificación one-hot del índice de clase.

Reglas sobre el número de canales en las imágenes obtenidas:

  • si color_mode es grayscale, hay 1 canal en los tensores de imagen.
  • si color_mode es rgb, hay 3 canales en los tensores de imagen.
  • si color_mode es rgba, hay 4 canales en los tensores de imagen.