Какова новая библиотека вместо устаревшего tensorflow.keras.preprocessing.image.ImageDataGenerator?

Вопрос или проблема

Библиотека ImageDataGenerator устарела.

dataGen= ImageDataGenerator(width_shift_range=0.1,   # 0.1 = 10%     ЕСЛИ БОЛЬШЕ 1, НАПРИМЕР 10, ТО ЭТО ОТНОСИТСЯ К КОЛИЧЕСТВУ ПИКСЕЛЕЙ, НАПРИМЕР 10 ПИКСЕЛЕЙ
    height_shift_range=0.1,
    zoom_range=0.2,  # 0.2 ОЗНАЧАЕТ, ЧТО МОЖНО ИЗМЕНЯТЬ ОТ 0.8 ДО 1.2
    shear_range=0.1,  # ВЕЛИЧИНА УГЛА ИСКРЕЖЕНИЯ
    rotation_range=10)  # ГРАДУСЫ
dataGen.fit(X_train)
batches= dataGen.flow(X_train,y_train,batch_size=20)  # ЗАПРОС БИБЛИОТЕКИ ДЛЯ ГЕНЕРАЦИИ ИЗОБРАЖЕНИЙ, РАЗМЕР ПАКЕТА = КОЛИЧЕСТВО СОЗДАННЫХ ИЗОБРАЖЕНИЙ КАЖДЫЙ РАЗ, КОГДА ЭТО ЗОВЕТСЯ
X_batch,y_batch = next(batches)

Я наткнулся на этот фрагмент кода и мне нужно переписать его на основе новых библиотек. Можете кто-нибудь указать мне правильные библиотеки? И если возможно, переписать этот фрагмент с использованием новой библиотеки?

Ответ или решение

С недавними обновлениями TensorFlow, библиотека tensorflow.keras.preprocessing.image.ImageDataGenerator была признана устаревшей, и теперь рекомендуется использовать tf.keras.utils.image_dataset_from_directory и tf.keras.preprocessing.image.ImageDataGenerator в более современном множественном формате через подмодули. Эти новые методы позволяют упростить поток данных и упрощают процесс работы с изображениями при обучении моделей глубокого обучения.

Новая библиотека

В качестве основной замены можно использовать библиотеку tf.keras.utils. В частности, метод image_dataset_from_directory предназначен для загрузки изображений из каталогов. Однако, если вам нужно выполнять такие операции, как аугментация изображений, то вы все еще можете использовать класс tf.keras.layers.experimental.preprocessing.ImageDataGenerator для создания аналогичного функционала.

Переписывание кода

Вот как можно переписать ваш код с использованием новой библиотеки:

import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential

# Создание генератора данных с помощью tf.keras.layers.experimental.preprocessing
data_augmentation = Sequential([
    layers.RandomWidth(factor=0.1),  # Массштабируем по ширине до 10%
    layers.RandomHeight(factor=0.1),  # Массштабируем по высоте до 10%
    layers.RandomZoom(height_factor=0.2, width_factor=0.2),  # Зум 20%
    layers.RandomShear(shear_factor=0.1),  # Сдвиг
    layers.RandomRotation(10)  # Поворот на 10 градусов
])

# Применение аугментации к входным данным
X_augmented = data_augmentation(X_train)

# Создание батчей с использованием tf.data
batch_size = 20
train_dataset = tf.data.Dataset.from_tensor_slices((X_augmented, y_train))
train_dataset = train_dataset.batch(batch_size)

# Извлечение одного батча
for X_batch, y_batch in train_dataset.take(1):
    print(X_batch.shape, y_batch.shape)

Пояснения к коду

  1. Импорт библиотек: Мы импортируем необходимые слои и классы из TensorFlow.
  2. Генератор аугментации: Мы создаем последовательную модель с уровнями аугментации, такими как RandomWidth, RandomHeight, RandomZoom, RandomShear и RandomRotation, которые выполняют операции аналогичные тем, что вы использовали в ImageDataGenerator.
  3. Применение аугментации: Мы применяем созданный генератор к набору данных.
  4. Создание батчей из tf.data.Dataset: Мы создаем набор данных из тензоров X_augmented и y_train, и разбиваем их на батчи.
  5. Извлечение батча: Мы берем первый батч из нашего датасета и выводим его размеры.

Заключение

С переходом на современные подходы в TensorFlow, важно адаптироваться к изменениям в API. Использование новых библиотек делает рабочие процессы более интуитивными и эффективными. Управление аугментацией и подготовкой данных стало более гибким и удобным для современных приложений в области машинного обучения.

Оцените материал
Добавить комментарий

Капча загружается...