Understand how ImageDataGenerator labels images

Dans le cas d’images multi-label il faut être astucieux avec Keras.

Lire à ce sujet : A simple trick about multi-label image classification with ImageDataGenerator in Keras et aussi How to manually specify class labels in keras flow_from_directory?

Dans les cas d’apprentissage supervisé, multi-classe les répertoires de stockage des données définissent l’organisation des données.

CodeExplication du Code

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import tensorflow as tf
import PIL.Image

Tout d’abord on définit les augmentations à effectuer.

datagen = ImageDataGenerator(
        rotation_range=40,
        width_shift_range=0.2,
        height_shift_range=0.2,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest')

Exemple avec une image.

image_path = tf.keras.utils.get_file("cat.jpg", "https://storage.googleapis.com/download.tensorflow.org/example_images/320px-Felis_catus-cat_on_snow.jpg")
PIL.Image.open(image_path)
image_string=tf.io.read_file(image_path)
image=tf.image.decode_jpeg(image_string,channels=3)
image.shape
TensorShape([213, 320, 3])
img = tf.expand_dims(image, 0)
i = 0
for batch in datagen.flow(img, batch_size=1, save_to_dir='.', save_prefix='cat', save_format='jpeg'):
    i += 1
    if i > 20:
        break  # otherwise the generator would loop indefinitely
!ls -al

total 280
drwxr-xr-x 1 root root  4096 May 27 17:31 .
drwxr-xr-x 1 root root  4096 May 27 17:29 ..
-rw-r--r-- 1 root root 11505 May 27 17:31 cat_0_1217.jpeg
-rw-r--r-- 1 root root 10779 May 27 17:31 cat_0_1807.jpeg
-rw-r--r-- 1 root root 11573 May 27 17:31 cat_0_2549.jpeg
-rw-r--r-- 1 root root 11113 May 27 17:31 cat_0_2916.jpeg
-rw-r--r-- 1 root root 12403 May 27 17:31 cat_0_2961.jpeg
-rw-r--r-- 1 root root 11183 May 27 17:31 cat_0_3303.jpeg
-rw-r--r-- 1 root root 11813 May 27 17:31 cat_0_3464.jpeg
-rw-r--r-- 1 root root 11906 May 27 17:31 cat_0_3562.jpeg
-rw-r--r-- 1 root root 11253 May 27 17:31 cat_0_3869.jpeg
-rw-r--r-- 1 root root 12114 May 27 17:31 cat_0_4343.jpeg
-rw-r--r-- 1 root root 11860 May 27 17:31 cat_0_4669.jpeg
-rw-r--r-- 1 root root 12070 May 27 17:31 cat_0_4956.jpeg
-rw-r--r-- 1 root root 12104 May 27 17:31 cat_0_5296.jpeg
-rw-r--r-- 1 root root 12116 May 27 17:31 cat_0_6003.jpeg
-rw-r--r-- 1 root root 10763 May 27 17:31 cat_0_7401.jpeg
-rw-r--r-- 1 root root 11530 May 27 17:31 cat_0_7717.jpeg
-rw-r--r-- 1 root root 12346 May 27 17:31 cat_0_7784.jpeg
-rw-r--r-- 1 root root 11956 May 27 17:31 cat_0_9652.jpeg
-rw-r--r-- 1 root root 12004 May 27 17:31 cat_0_9658.jpeg
-rw-r--r-- 1 root root 12306 May 27 17:31 cat_0_9772.jpeg
-rw-r--r-- 1 root root 11180 May 27 17:31 cat_0_9851.jpeg
drwxr-xr-x 1 root root  4096 May 20 16:14 .config
drwxr-xr-x 1 root root  4096 May 13 16:29 sample_data
PIL.Image.open("cat_0_1217.jpeg")
PIL.Image.open("cat_0_2549.jpeg")
PIL.Image.open("cat_0_2916.jpeg")
PIL.Image.open("cat_0_9851.jpeg")
[su_tabs style= »default » active= »1″ vertical= »no » mobile= »stack »