Spec-Zone.ru › TensorFlow 2.9

tf.keras.preprocessing.image.ImageDataGenerator

Просмотреть исходный код на GitHub

Генерирует пакеты тензорных изображений с реальной динамической аугментацией данных.

Просмотр псевдонимов

Псевдонимы для миграции

См. руководство по миграции для получения дополнительной информации.

tf.compat.v1.keras.preprocessing.image.ImageDataGenerator

tf.keras.preprocessing.image.ImageDataGenerator(
    featurewise_center=False,
    samplewise_center=False,
    featurewise_std_normalization=False,
    samplewise_std_normalization=False,
    zca_whitening=False,
    zca_epsilon=1e-06,
    rotation_range=0,
    width_shift_range=0.0,
    height_shift_range=0.0,
    brightness_range=None,
    shear_range=0.0,
    zoom_range=0.0,
    channel_shift_range=0.0,
    fill_mode='nearest',
    cval=0.0,
    horizontal_flip=False,
    vertical_flip=False,
    rescale=None,
    preprocessing_function=None,
    data_format=None,
    validation_split=0.0,
    interpolation_order=1,
    dtype=None
)
Устарело: tf.keras.preprocessing.image.ImageDataGenerator не рекомендуется для нового кода. Предпочтительнее загружать изображения с помощью tf.keras.utils.image_dataset_from_directory и преобразовывать выходные данные tf.data.Dataset с помощью слоёв предобработки. Для получения дополнительной информации см. руководства по загрузке изображений https://www.tensorflow.org/tutorials/load_data/images и аугментации изображений https://www.tensorflow.org/tutorials/images/data_augmentation, а также руководство по слоям предобработки https://www.tensorflow.org/guide/keras/preprocessing_layers.

Данные будут циклически обрабатываться (по пакетам).

Аргументы
featurewise_center Булево. Устанавливает среднее значение ввода в 0 по всему набору данных, по признакам.
samplewise_center Булево. Устанавливает среднее значение каждого образца в 0.
featurewise_std_normalization Булево. Делит входные данные на стандартное отклонение набора данных, по признакам.
samplewise_std_normalization Булево. Делит каждый вход на его стандартное отклонение.
zca_epsilon epsilon для ZCA-выбеливания. По умолчанию 1e-6.
zca_whitening Булево. Применить ZCA-выбеливание.
rotation_range Целое число. Диапазон градусов для случайных поворотов.
width_shift_range Вещественное число, 1-мерный массив или целое число
  • вещественное число: доля общей ширины, если < 1, или пикселей, если >= 1.
  • 1-мерный массив: случайные элементы из массива.
  • целое число: целое число пикселей из интервала (-width_shift_range, +width_shift_range) - С width_shift_range=2 возможные значения являются целыми числами [-1, 0, +1], как и с width_shift_range=[-1, 0, +1], в то время как с width_shift_range=1.0 возможные значения являются числами с плавающей запятой в интервале [-1.0, +1.0).
height_shift_range Вещественное число, 1-мерный массив или целое число
  • вещественное число: доля общей высоты, если < 1, или пикселей, если >= 1.
  • 1-мерный массив: случайные элементы из массива.
  • целое число: целое число пикселей из интервала (-height_shift_range, +height_shift_range) - С height_shift_range=2 возможные значения являются целыми числами [-1, 0, +1], как и с height_shift_range=[-1, 0, +1], в то время как с height_shift_range=1.0 возможные значения являются числами с плавающей запятой в интервале [-1.0, +1.0).
  • brightness_range Кортеж или список из двух вещественных чисел. Диапазон для выбора значения смещения яркости.
    shear_range Вещественное число. Интенсивность сдвига (угол сдвига против часовой стрелки в градусах)
    zoom_range Вещественное число или [нижняя, верхняя]. Диапазон для случайного масштабирования. Если вещественное число, [lower, upper] = [1-zoom_range, 1+zoom_range].
    channel_shift_range Вещественное число. Диапазон для случайных смещений каналов.
    fill_mode Одно из {"constant", "nearest", "reflect" или "wrap"}. По умолчанию 'nearest'. Точки за пределами границ входных данных заполняются в соответствии с заданным режимом:
    • 'constant': kkkkkkkk|abcd|kkkkkkkk (cval=k)
    • 'nearest': aaaaaaaa|abcd|dddddddd
    • 'reflect': abcddcba|abcd|dcbaabcd
    • 'wrap': abcdabcd|abcd|abcdabcd
    cval Вещественное или целое число. Значение, используемое для точек за пределами границ при fill_mode = "constant".
    horizontal_flip Булево. Случайно отразить входные данные по горизонтали.
    vertical_flip Булево. Случайно отразить входные данные по вертикали.
    rescale Коэффициент масштабирования. По умолчанию None. Если None или 0, масштабирование не применяется, в противном случае данные умножаются на предоставленное значение (после применения всех других преобразований).
    preprocessing_function Функция, которая будет применяться к каждому входу. Функция будет выполнена после изменения размера изображения и его аугментации. Функция должна принимать один аргумент: одно изображение (массив NumPy с рангом 3), и должна возвращать массив NumPy с той же формой.
    data_format Формат данных изображения, либо "channels_first", либо "channels_last". Режим "channels_last" означает, что изображения должны иметь форму (samples, height, width, channels), режим "channels_first" означает, что изображения должны иметь форму (samples, channels, height, width). По умолчанию используется значение, найденное в файле конфигурации Keras по адресу ~/.keras/keras.json. Если вы его никогда не устанавливали, он будет "channels_last".
    validation_split Вещественное число. Доля изображений, резервируемых для проверки (строго между 0 и 1).
    dtype Тип данных для использования с сгенерированными массивами.
    Возбуждения
    ValueError Если значение аргумента data_format отличается от "channels_last" или "channels_first".
    ValueError Если значение аргумента validation_split > 1 или validation_split < 0.

    Примеры:

    Пример использования .flow(x, y):

    (x_train, y_train), (x_test, y_test) = cifar10.load_data()
    y_train = utils.to_categorical(y_train, num_classes)
    y_test = utils.to_categorical(y_test, num_classes)
    datagen = ImageDataGenerator(
        featurewise_center=True,
        featurewise_std_normalization=True,
        rotation_range=20,
        width_shift_range=0.2,
        height_shift_range=0.2,
        horizontal_flip=True,
        validation_split=0.2)
    # compute quantities required for featurewise normalization
    # (std, mean, and principal components if ZCA whitening is applied)
    datagen.fit(x_train)
    # fits the model on batches with real-time data augmentation:
    model.fit(datagen.flow(x_train, y_train, batch_size=32,
             subset='training'),
             validation_data=datagen.flow(x_train, y_train,
             batch_size=8, subset='validation'),
             steps_per_epoch=len(x_train) / 32, epochs=epochs)
    # here's a more "manual" example
    for e in range(epochs):
        print('Epoch', e)
        batches = 0
        for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32):
            model.fit(x_batch, y_batch)
            batches += 1
            if batches >= len(x_train) / 32:
                # we need to break the loop by hand because
                # the generator loops indefinitely
                break
    

    Пример использования .flow_from_directory(directory):

    train_datagen = ImageDataGenerator(
            rescale=1./255,
            shear_range=0.2,
            zoom_range=0.2,
            horizontal_flip=True)
    test_datagen = ImageDataGenerator(rescale=1./255)
    train_generator = train_datagen.flow_from_directory(
            'data/train',
            target_size=(150, 150),
            batch_size=32,
            class_mode='binary')
    validation_generator = test_datagen.flow_from_directory(
            'data/validation',
            target_size=(150, 150),
            batch_size=32,
            class_mode='binary')
    model.fit(
            train_generator,
            steps_per_epoch=2000,
            epochs=50,
            validation_data=validation_generator,
            validation_steps=800)
    

    Пример преобразования изображений и масок вместе.

    # we create two instances with the same arguments
    data_gen_args = dict(featurewise_center=True,
                         featurewise_std_normalization=True,
                         rotation_range=90,
                         width_shift_range=0.1,
                         height_shift_range=0.1,
                         zoom_range=0.2)
    image_datagen = ImageDataGenerator(**data_gen_args)
    mask_datagen = ImageDataGenerator(**data_gen_args)
    # Provide the same seed and keyword arguments to the fit and flow methods
    seed = 1
    image_datagen.fit(images, augment=True, seed=seed)
    mask_datagen.fit(masks, augment=True, seed=seed)
    image_generator = image_datagen.flow_from_directory(
        'data/images',
        class_mode=None,
        seed=seed)
    mask_generator = mask_datagen.flow_from_directory(
        'data/masks',
        class_mode=None,
        seed=seed)
    # combine generators into one which yields image and masks
    train_generator = zip(image_generator, mask_generator)
    model.fit(
        train_generator,
        steps_per_epoch=2000,
        epochs=50)
    

    Методы

    apply_transform

    Просмотреть исходный код

    apply_transform(
        x, transform_parameters
    )
    

    Применяет преобразование к изображению в соответствии с заданными параметрами.

    Аргументы
    x 3D тензор, одно изображение.
    transform_parameters Словарь со строками - парами параметров, описывающими преобразование. В настоящее время используются следующие параметры из словаря:
    • 'theta': Вещественное число. Угол поворота в градусах.
    • 'tx': Вещественное число. Смещение по оси x.
    • 'ty': Вещественное число. Смещение по оси y.
    • 'shear': Вещественное число. Угол сдвига в градусах.
    • 'zx': Вещественное число. Масштабирование по оси x.
    • 'zy': Вещественное число. Масштабирование по оси y.
    • 'flip_horizontal': Булево. Горизонтальное отражение.
    • 'flip_vertical': Булево. Вертикальное отражение.
    • 'channel_shift_intensity': Вещественное число. Интенсивность сдвига канала.
    • 'brightness': Вещественное число. Интенсивность смещения яркости.
    Возвращаемое значение
    Преобразованная версия входных данных (такая же форма).

    fit

    Просмотреть исходный код

    fit(
        x, augment=False, rounds=1, seed=None
    )
    

    Подстраивает генератор данных к некоторым образцам данных.

    Это вычисляет внутренние статистические данные, связанные с преобразованиями, зависящими от данных, на основе массива образцов данных.

    Требуется только если featurewise_center или featurewise_std_normalization или zca_whitening установлены в True.

    Когда rescale установлено в значение, масштабирование применяется к образцам данных перед вычислением внутренних статистических данных.

    Аргументы
    x Образцы данных. Должен иметь ранг 4. В случае данных в оттенках серого ось каналов должна иметь значение 1, в случае данных RGB - 3, а в случае данных RGBA - 4.
    augment Булево (по умолчанию: False). Нужно ли подстраивать под случайные увеличенные образцы.
    rounds Целое число (по умолчанию: 1). Если используется аугментация данных (augment=True), это количество проходов аугментации по данным.
    seed Целое число (по умолчанию: None). Случайное семя.

    flow

    Просмотреть исходный код

    flow(
        x,
        y=None,
        batch_size=32,
        shuffle=True,
        sample_weight=None,
        seed=None,
        save_to_dir=None,
        save_prefix='',
        save_format='png',
        ignore_class_split=False,
        subset=None
    )
    

    Принимает массивы данных и меток, генерирует пакеты увеличенных данных.

    Аргументы
    x Данные ввода. Массив NumPy ранга 4 или кортеж. Если кортеж, первый элемент должен содержать изображения, а второй — другой массив NumPy или список массивов NumPy, который передается на выход без каких-либо изменений. Может использоваться для подачи в модель дополнительных данных вместе с изображениями. В случае с данными в оттенках серого ось каналов массива изображений должна иметь значение 1, в случае с RGB-данными — значение 3, а в случае с RGBA-данными — значение 4.
    y Метки.
    batch_size Целое число (по умолчанию: 32).
    shuffle Булево значение (по умолчанию: True).
    sample_weight Веса образцов.
    seed Целое число (по умолчанию: None).
    save_to_dir None или строка (по умолчанию: None). Это позволяет по желанию указать директорию, в которую будут сохраняться генерируемые измененные изображения (полезно для визуализации того, что вы делаете).
    save_prefix Строка (по умолчанию: ''). Префикс для использования в именах файлов сохранённых изображений (актуально только если save_to_dir установлено).
    save_format Один из "png", "jpeg", "bmp", "pdf", "ppm", "gif", "tif", "jpg" (актуально только если save_to_dir установлено). По умолчанию: "png".
    ignore_class_split Булево значение (по умолчанию: False), игнорировать разницу в количестве классов в метках между тренировочным и проверочным наборами (полезно для задач, не связанных с классификацией)
    subset Подмножество данных ("training" или "validation") если validation_split установлено в ImageDataGenerator.
    Возвращаемые значения
    Генератор, возвращающий кортежи из (x, y), где x — массив NumPy с данными изображения (в случае одиночного входного изображения) или список массивов NumPy (в случае с дополнительными входами), а y — массив NumPy соответствующих меток. Если 'sample_weight' не None, возвращаемые кортежи имеют вид (x, y, sample_weight). Если y равно None, возвращается только массив NumPy x.
    Исключения
    ValueError Если значение аргумента subset отличается от "training" или "validation".

    flow_from_dataframe

    Просмотреть исходный код

    flow_from_dataframe(
        dataframe,
        directory=None,
        x_col='filename',
        y_col='class',
        weight_col=None,
        target_size=(256, 256),
        color_mode='rgb',
        classes=None,
        class_mode='categorical',
        batch_size=32,
        shuffle=True,
        seed=None,
        save_to_dir=None,
        save_prefix='',
        save_format='png',
        subset=None,
        interpolation='nearest',
        validate_filenames=True,
        **kwargs
    )
    

    Принимает фрейм данных и путь к директории + генерирует пакеты.

    Сгенерированные пакеты содержат изменённые/нормализованные данные.

    **Простой учебник можно найти** здесь.

    Аргументы
    dataframe Фрейм данных Pandas, содержащий пути к файлам, относящиеся к directory (или абсолютные пути, если directory равно None), изображений в строковом столбце. Он должен включать другие столбцы/столбцы в зависимости от class_mode:
    • если class_mode равно "categorical" (значение по умолчанию), он должен включать столбец y_col с классом/классами каждого изображения. Значения в столбце могут быть строкой/списком/кортежем, если класс один, или списком/кортежем, если классов несколько.
    • если class_mode равно "binary" или "sparse", он должен включать указанный столбец y_col со значениями класса в виде строк.
    • если class_mode равно "raw" или "multi_output", он должен содержать столбцы, указанные в y_col.
    • если class_mode равно "input" или None, дополнительные столбцы не нужны.
    directory Строка, путь к директории для чтения изображений. Если None, данные в столбце x_col должны быть абсолютными путями.
    x_col Строка, столбец в dataframe, содержащий имена файлов (или абсолютные пути, если directory равно None).
    y_col Строка или список, столбец/столбцы в dataframe содержащий целевые данные.
    weight_col Строка, столбец в dataframe содержащий веса образцов. По умолчанию: None.
    target_size Кортеж целых чисел (height, width), по умолчанию: (256, 256). Размер, на который будут изменены все найденные изображения.
    color_mode Один из "grayscale", "rgb", "rgba". По умолчанию: "rgb". Будут ли изображения преобразованы, чтобы иметь 1 или 3 цветовых канала.
    classes Необязательный список классов (например, ['dogs', 'cats']). По умолчанию None. Если не указан, список классов будет автоматически выведен из y_col, который будет сопоставляться с индексами меток (будет буквенно-цифровым). Словарь, содержащий сопоставление имен классов с индексами классов, можно получить через атрибут class_indices.
    class_mode Один из "binary", "categorical", "input", "multi_output", "raw", sparse" или None. По умолчанию: "categorical". Режим вывода целей:
  • "binary": одномерный массив NumPy бинарных меток,
  • "categorical": двумерный массив NumPy меток в формате one-hot. Поддерживает многоклассовый вывод.
  • "input": изображения, идентичные входным изображениям (в основном используется для работы с автоэнкодерами),
  • "multi_output": список со значениями различных столбцов,
  • "raw": массив NumPy значений в столбце/столбцах y_col,
  • "sparse": одномерный массив NumPy целочисленных меток, - None, цели не возвращаются (генератор будет возвращать только пакеты данных изображений, что полезно для использования в model.predict()).
  • batch_size Размер пакетов данных (по умолчанию: 32).
    shuffle Перемешивать данные (по умолчанию: True).
    seed Необязательное случайное семя для перемешивания и преобразований.
    save_to_dir None или строка (по умолчанию: None). Это позволяет по желанию указать директорию, в которую будут сохраняться генерируемые изменённые изображения (полезно для визуализации того, что вы делаете).
    save_prefix Строка. Префикс для использования в именах файлов сохранённых изображений (актуально только если save_to_dir установлено).
    save_format Один из "png", "jpeg", "bmp", "pdf", "ppm", "gif", "tif", "jpg" (актуально только если save_to_dir установлено). По умолчанию: "png".
    subset Подмножество данных ("training" или "validation") если validation_split установлено в ImageDataGenerator.
    interpolation Метод интерполяции, используемый для повторной выборки изображения, если размер цели отличается от размера загруженного изображения. Поддерживаемые методы — "nearest", "bilinear", и "bicubic". Если установлена версия PIL 1.1.3 или новее, поддерживается также "lanczos". Если установлена версия PIL 3.4.0 или новее, поддерживаются также "box" и "hamming". По умолчанию используется "nearest".
    validate_filenames Булево значение, проверять ли имена файлов изображений в x_col. Если True, невалидные изображения будут игнорироваться. Отключение этой опции может ускорить выполнение этой функции. По умолчанию True.
    **kwargs Аргументы устаревшего стиля для вывода предупреждений об устаревании.
    Возвращаемые значения
    Генератор, возвращающий кортежи из (x, y), где x — массив NumPy, содержащий пакет изображений с формой (batch_size, *target_size, channels), а y — массив NumPy соответствующих меток.

    flow_from_directory

    Просмотреть исходный код

    flow_from_directory(
        directory,
        target_size=(256, 256),
        color_mode='rgb',
        classes=None,
        class_mode='categorical',
        batch_size=32,
        shuffle=True,
        seed=None,
        save_to_dir=None,
        save_prefix='',
        save_format='png',
        follow_links=False,
        subset=None,
        interpolation='nearest',
        keep_aspect_ratio=False
    )
    

    Принимает путь к директории и генерирует пакеты изменённых данных.

    Аргументы
    directory строка, путь к целевой директории. Она должна содержать одну поддиректорию на класс. Любые изображения PNG, JPG, BMP, PPM или TIF внутри каждого из подкаталогов древовидной структуры каталога будут включены в генератор. Подробнее см. этот скрипт.
    target_size Кортеж целых чисел (height, width), по умолчанию (256, 256). Размеры, до которых будут масштабироваться все найденные изображения.
    color_mode Один из "grayscale", "rgb", "rgba". По умолчанию: "rgb". Будут ли изображения преобразовываться, чтобы иметь 1, 3 или 4 канала.
    classes Необязательный список подкаталогов классов (например, ['dogs', 'cats']). По умолчанию: None. Если не указан, список классов будет автоматически определен по именам/структуре подкаталогов в directory, где каждый подкаталог будет рассматриваться как отдельный класс (и порядок классов, который будет соответствовать индексам меток, будет алфавитно-цифровым). Словарь, содержащий отображение имен классов на индексы классов, можно получить через атрибут class_indices.
    class_mode Один из "categorical", "binary", "sparse", "input" или None. По умолчанию: "categorical". Определяет тип массивов меток, которые возвращаются:
    • "categorical" будут 2D метками, закодированными с помощью one-hot,
    • "binary" будут 1D бинарными метками, "sparse" будут 1D целочисленными метками,
    • "input" будут изображениями, идентичными входным изображениям (в основном используются для работы с автоэнкодерами).
    • Если None, метки не возвращаются (генератор будет возвращать только пакеты данных изображений, что полезно для использования с model.predict_generator()). Обратите внимание, что в случае class_mode None данные все еще должны храниться в подкаталоге directory, чтобы это работало правильно.
    batch_size Размер пакетов данных (по умолчанию: 32).
    shuffle Нужно ли перемешивать данные (по умолчанию: True). Если установлено в False, данные сортируются в алфавитно-цифровом порядке.
    seed Необязательное случайное семя для перемешивания и преобразований.
    save_to_dir None или строка (по умолчанию: None). Это позволяет вам необязательно указать каталог, в который нужно сохранить сгенерированные увеличенные изображения (полезно для визуализации того, что вы делаете).
    save_prefix Строка. Префикс, используемый для имен файлов сохраненных изображений (актуально только если save_to_dir установлено).
    save_format один из "png", "jpeg", "bmp", "pdf", "ppm", "gif", "tif", "jpg" (актуально только если save_to_dir установлено). По умолчанию: "png".
    follow_links Следовать ли символичным ссылкам внутри подкаталогов класса (по умолчанию: False).
    subset Подмножество данных ("training" или "validation") если validation_split установлено в ImageDataGenerator.
    interpolation Метод интерполяции, используемый для повторной выборки изображения, если целевой размер отличается от размера загруженного изображения. Поддерживаемые методы — "nearest", "bilinear", и "bicubic". Если установлен PIL версии 1.1.3 или новее, также поддерживается "lanczos". Если установлен PIL версии 3.4.0 или новее, также поддерживаются "box" и "hamming". По умолчанию используется "nearest".
    keep_aspect_ratio Булево значение, нужно ли изменять размер изображений до целевого размера без искажения соотношения сторон. Изображение обрезается по центру с целевым соотношением сторон перед изменением размера.
    Возвращаемое значение
    A DirectoryIterator возвращающий кортежи (x, y), где x — это массив NumPy, содержащий пакет изображений с формой (batch_size, *target_size, channels), а y — это массив NumPy соответствующих меток.

    get_random_transform

    Просмотреть исходный код

    get_random_transform(
        img_shape, seed=None
    )
    

    Генерирует случайные параметры для преобразования.

    Аргументы
    img_shape Кортеж целых чисел. Форма изображения, которое преобразуется.
    seed Случайное семя.
    Возвращаемое значение
    Словарь, содержащий случайным образом выбранные параметры, описывающие преобразование.

    random_transform

    Просмотреть исходный код

    random_transform(
        x, seed=None
    )
    

    Применяет случайное преобразование к изображению.

    Аргументы
    x 3D тензор, одно изображение.
    seed Случайное семя.
    Возвращаемое значение
    Случайно преобразованная версия входных данных (та же форма).

    standardize

    Просмотреть исходный код

    standardize(
        x
    )
    

    Применяет конфигурацию нормализации непосредственно к пакету входных данных.

    x изменяется непосредственно, так как функция в основном используется внутри для нормализации изображений и подачи их в вашу сеть. Если вместо этого будет создана копия x, это приведет к значительному снижению производительности. Если вы хотите применить этот метод без изменения входных данных на месте, вы можете вызвать метод, создав копию перед этим:

    standardize(np.copy(x))

    Аргументы
    x Пакет входных данных, подлежащий нормализации.
    Возвращаемое значение
    Входные данные, нормализованные.

    © 2022 The TensorFlow Authors. All rights reserved.
    Licensed under the Creative Commons Attribution License 4.0.
    Code samples licensed under the Apache 2.0 License.
    https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/preprocessing/image/ImageDataGenerator

    Spec-Zone.ru

    Настройки Оффлайн Что нового Помощь О нас
    Spec-Zone .ru
    спецификации, руководства, описания, API