Полное руководство по методу flow_from_directory ImageDataGenerator в Python

ImageDataGenerator — это мощный инструмент в библиотеке Python Keras, который помогает увеличивать изображения и предварительно обрабатывать данные для моделей глубокого обучения. Одним из ключевых методов ImageDataGenerator является flow_from_directory, который позволяет удобно загружать изображения из структуры каталогов и применять различные преобразования. В этой статье мы рассмотрим метод flow_from_directoryи приведем примеры кода для нескольких полезных методов, которые он предлагает.

Понимание flow_from_directory:
Метод flow_from_directoryгенерирует пакеты дополненных/обработанных данных изображения из каталога. Предполагается, что каталог содержит подкаталоги, представляющие разные классы, причем каждый подкаталог содержит соответствующие изображения. Этот метод можно использовать как для обучения, так и для оценки моделей глубокого обучения.

  1. Базовое использование:
    Вот пример использования flow_from_directoryс минимально необходимыми параметрами:
from keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator()
train_generator = datagen.flow_from_directory(
    directory='path/to/train_directory',
    target_size=(224, 224),
    batch_size=32,
    class_mode='categorical'
)

<старый старт="2">

  • Изменение масштаба изображений.
    Параметр rescaleпозволяет нормализовать значения пикселей изображений. Вот как можно применить масштабирование:
  • datagen = ImageDataGenerator(rescale=1.0/255.0)
    1. Увеличение изображения.
      ImageDataGenerator предоставляет множество возможностей для увеличения изображения, таких как вращение, масштабирование, сдвиг, переворот и многое другое. Вот пример, в котором применяется случайное вращение и масштабирование:
    datagen = ImageDataGenerator(rotation_range=30, zoom_range=0.2)
    1. Перемешивание данных.
      Вы можете перемешать порядок изображений с помощью параметра shuffle. Это полезно для введения случайности во время обучения:
    datagen = ImageDataGenerator(shuffle=True)
    1. Создание меток.
      По умолчанию flow_from_directoryгенерирует метки для изображений на основе структуры каталогов. Однако вы также можете предоставить свои собственные метки, используя параметры class_modeи classes:
    datagen = ImageDataGenerator(class_mode='binary', classes=['cat', 'dog'])
    1. Пользовательская предварительная обработка.
      Вы можете применить к изображениям пользовательские функции предварительной обработки с помощью параметра preprocessing_function. Вот пример применения пользовательской функции под названием preprocess_image:
    def preprocess_image(image):
        # Custom preprocessing logic
        return image
    datagen = ImageDataGenerator(preprocessing_function=preprocess_image)
    1. Обработка дисбаланса данных.
      В сценариях, когда количество изображений в каждом классе несбалансировано, вы можете использовать параметр class_weight, чтобы назначить разные веса каждому классу во время обучения:
    datagen = ImageDataGenerator(class_weight={0: 1.0, 1: 2.0, 2: 0.5})