Перейти к содержанию

Предобработка изображений

Предварительная обработка изображений (препроцессинг)

[source]

ImageDataGenerator class

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=’channels_last’, validation_split=0.0, interpolation_order=1, dtype=’float32′)

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

Аргументы

  • featurewise_center: Булев. Установите значение 0 над набором данных, по свойствам.
  • samplewise_center: Булев. Установите среднее значение для каждого образца равным 0.
  • featurewise_std_normalization: Булева. Разделить входы по std набора данных, по свойствам.
  • samplewise_std_normalization: Булева. Разделить каждый вход на std.
  • zca_epsilon: эпсилон для отбеливания ZCA. По умолчанию 1e-6.
  • zca_witening: Булева. Применить отбеливание ZCA.
  • поворот_диапазон: Int. Диапазон степеней для случайных вращений.
  • width_shift_range: Float, 1-D массив или int
  • float: доля общей ширины, если < 1, или пикселей, если >= 1.
  • 1-D массив-подобный: случайные элементы из массива.
  • int: целое число пикселей из интервала (-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: Float, 1-D массив или int
  • float: доля общей высоты, если < 1, или пикселей, если >= 1.
  • 1-D массив-подобный: случайные элементы из массива.
  • int: целое число пикселей из интервала (-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: Float или [lower, upper]. Диапазон для случайного увеличения. Если плавающий, [lower, upper] = [1-зум_диапазон, 1+зум_диапазон].
  • Channel_shift_range: Поплавок. Диапазон для случайных сдвигов канала.
  • fill_mode: Один из {«constant», «nearest», «reflect» or «wrap»}. По умолчанию ‘nearest’. Точки за пределами входа заполняются в соответствии с заданным режимом:
  • ‘constant’: kkkkkkkk|abcd|kkkkkkkk (cval=k)
  • ‘nearest’: aaaaaaaa|abcd|dddddddd
  • ‘reflect’: abcddcba|abcd|dcbaabcd
  • ‘wrap’: abcdabcd|abcd|abcdabcd
  • cval: Float или Int. Значение, используемое для точек за пределами границ, когда fill_mode = «константа».
  • horizontal_flip: Булева. Случайный ввод сальто по горизонтали.
  • vertical_flip: Булевы. Случайный ввод флипа по вертикали.
  • rescale: коэффициент масштабирования. По умолчанию None. Если None или 0, то масштабирование не применяется, в противном случае мы умножаем данные на предоставленное значение (после применения всех остальных преобразований).
  • preprocessing_function: функция, которая будет применяться на каждом входе. Функция будет выполняться после изменения и дополнения размера изображения. Функция должна принять один аргумент: одно изображение (тензор Numpy с рангом 3), и вывести тензор Numpy той же формы.
  • data_format: Формат данных изображения, либо «channels_first», либо «channels_last». Режим «channels_last» означает, что изображения должны иметь форму (примеры, высота, ширина, каналы), режим «channels_first» означает, что изображения должны иметь форму (примеры, каналы, высота, ширина). По умолчанию значением параметра image_data_format, найденным в конфигурационном файле Keras по адресу ~/.keras/keras.json, является ~/.keras/keras.json. Если вы никогда не устанавливали его, то это будет «channels_last».
  • validation_split: Float. Часть изображений, зарезервированных для проверки (строго между 0 и 1).
  • dtype: Dtype, используемый для сгенерированных массивов.

Примеры

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

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

y_train = np_utils.to_categorical(y_train, num_classes)

y_test = np_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)

# вычисляем количество, необходимое для функциональной нормализации# (std, mean, и основные компоненты, если применяется отбеливание ZCA).

datagen.fit(x_train)

# подходит к модели на пакетах с дополнением данных в реальном времени:

model.fit_generator(datagen.flow(x_train, y_train, batch_size=32),

                    steps_per_epoch=len(x_train) / 32, epochs=epochs)

# более «ручной» пример

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:

            # нам нужно разорвать петлю вручную, потому что

            # петли генератора бесконечно

            break

Example of using .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_generator(

        train_generator,

        steps_per_epoch=2000,

        epochs=50,

        validation_data=validation_generator,

        validation_steps=800)

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

# мы создаем два экземпляра с одними и теми же аргументами

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)

# Предоставляем одни и те же аргументы по семени и ключевому слову для методов подгонки и потока.

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)

# объединяем генераторы в один, который дает изображение и маски.

train_generator = zip(image_generator, mask_generator)

model.fit_generator(

    train_generator,

    steps_per_epoch=2000,

    epochs=50)

Пример использования .flow_from_dataframe(dataframe, directory,:

train_df = pandas.read_csv(«./train.csv»)

valid_df = pandas.read_csv(«./valid.csv»)

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_dataframe(

        dataframe=train_df,

        directory=’data/train’,

        x_col=»filename»,

        y_col=»class»,

        target_size=(150, 150),

        batch_size=32,

        class_mode=’binary’)

validation_generator = test_datagen.flow_from_dataframe(

        dataframe=valid_df,

        directory=’data/validation’,

        x_col=»filename»,

        y_col=»class»,

        target_size=(150, 150),

        batch_size=32,

        class_mode=’binary’)

model.fit_generator(

        train_generator,

        steps_per_epoch=2000,

        epochs=50,

        validation_data=validation_generator,

        validation_steps=800)


ImageDataGenerator methods

apply_transform

apply_transform(x, transform_parameters)

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

Аргументы

  • x: 3D тензор, одиночное изображение.
  • transform_parameters: Словарь со строками — парами параметров, описывающих преобразование. В настоящее время используются следующие параметры из словаря:
  • тэта: Float. Угол поворота в градусах.
  • ‘tx’: Float. Смещение в направлении х.
  • «ty»: Float. Сдвиг в направлении y.
  • «shear»: Float. Угол сдвига в градусах.
  • «zx»: Float. Увеличить в направлении х.
  • «zy»: Float. Увеличить в направлении y.
  • ‘flip_horizontal’: Булев. Горизонтальный флип.
  • ‘flip_vertical’: Булев. Вертикальный флип.
  • ‘channel_shift_intencity’: Float. Интенсивность сдвига канала.
  • ‘brightness’: Float. Интенсивность сдвига яркости.

Возвращает

Преобразованная версия входа (той же формы).


fit

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

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

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

Требуется только в том случае, если параметр featurewise_center или featurewise_std_normalization или zca_whitening установлен в значение True.

Аргументы

  • x: Образец данных. Должна иметь 4 место. В случае данных градации серого ось каналов должна иметь значение 1, в случае данных RGB — значение 3, а в случае данных RGBA — значение 4.
  • дополнение: Булева (по умолчанию: False). Поместиться ли на случайно расширенные выборки.
  • rounds: Int (по умолчанию: 1). При использовании аугментации данных (augment=True), это то, сколько аугментации проходит над используемыми данными.
  • seed: Int (по умолчанию: 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’, subset=None)

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

Аргументы

  • x: Входные данные. Насыщенный массив 4-го ранга или кортеж. Если кортеж, то первый элемент должен содержать изображения, а второй элемент — другой массив нумерации или список массивов нумерации, который передается на выход без каких-либо изменений. Может использоваться для подачи различных данных модели вместе с изображениями. В случае данных в градациях серого ось каналов массива изображений должна иметь значение 1, в случае данных RGB — значение 3, в случае данных RGBA — значение 4.
  • y: маркеры.
  • batch_size: Int (по умолчанию: 32).
  • shuffle: Булева (по умолчанию: True).
  • sample_weight: Вес примера.
  • seed: Int (по умолчанию: Нет).
  • save_to_dir: None или str (по умолчанию: None). Это позволяет вам опционально указать каталог, в который будут сохраняться генерируемые дополненные картинки (полезно для визуализации того, что вы делаете).
  • save_prefix: Str (по умолчанию: »). Префикс, используемый для имён сохранённых картинок (применимо, только если установлено значение save_to_dir).
  • save_format: одно из «png», «jpeg» (актуально, только если установлено save_to_dir). По умолчанию: «png».
  • подмножество: Подмножество данных («training» или «validation»), если в ImageDataGenerator установлен параметр validation_split.

Возвращает

Итератор, дающий кортежи (x, y), где x — нумерованный массив данных изображения (в случае одиночного ввода изображения) или список нумерованных массивов (в случае с дополнительными входами), а y — нумерованный массив соответствующих меток. Если ‘sample_weight’ не None, то выходные кортежи имеют форму (x, y, sample_weight). Если y — None, возвращается только нумерованный массив x.


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)

Берет блок данных и путь к каталогу и генерирует пакеты дополненных/нормализованных данных.

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

Аргументы

  • dataframe: Панды dataframe, содержащие файловые пути относительно директории (или абсолютные пути, если директория None) изображений в колонке строк. Он должен включать другие колонки/s в зависимости от режима class_mode:
  • если режим class_mode является «categorical» (значение по умолчанию), то он должен включать колонку y_col с классами/классами каждого изображения. Значения в колонке могут быть string/list/tuple, если один класс или list/tuple, если несколько классов.
  • если режим class_mode «binary» или «sparse», то он должен включать данную колонку y_col со значениями классов в виде строк.
  • если class_mode является «raw» или «multi_output», он должен содержать колонки, указанные в y_col.
  • если режим class_mode «input» или нет, то лишняя колонка не нужна.
  • directory: строка, путь к каталогу для чтения изображений. Если None, то данные в колонке x_col должны быть абсолютными путями.
  • x_col: строка, столбец в дата-кадре, содержащий имена файлов (или абсолютные пути, если каталог None).
  • y_col: строка или список, столбец/с в датафрейме, который содержит имена файлов (или абсолютные пути, если каталог None).
  • weight_col: строка, столбец в датафрейме, содержащий веса выборки. По умолчанию: None.
  • target_size: кортеж целых чисел (высота, ширина), по умолчанию: (256, 256). Размеры, до которых будут изменены размеры всех найденных изображений.
  • color_mode: один из «оттенков серого», «rgb», «rgba». По умолчанию: «rgb». Будет ли изображение преобразовано в 1 или 3 цветовых канала.
  • classes: необязательный список классов (например, [‘собаки’, ‘кошки’]). По умолчанию: Нет. Если не предусмотрено, то список классов будет автоматически выведен из y_col, который будет сопоставляться с индексами меток, будет буквенно-цифровым). Словарь, содержащий отображение от имен классов к индексам классов, можно получить через атрибут class_indices.
  • class_mode: один из «binary», «categorical», «input», «multi_output», «raw», sparse» или None. По умолчанию: «categorical». 
  • Режим получения целей:
  • «binary»: 1D-номерный массив двоичных меток,
  • «categorical»: 2D numpy массив одноцветных кодированных меток. Поддерживает вывод нескольких меток.
  • «input»: изображения, идентичные вводимым (в основном используются для работы с автокодировщиками),
  • «multi_output»: список со значениями различных столбцов,
  • raw»: нумерованный массив значений в столбце(ах) y_col,
  • «sparse»: 1D нумерованный массив целочисленных меток,
  • None, цели не возвращаются (генератор будет выдавать только пакеты данных изображения, что полезно при использовании функции model.predict_generator()).
  • batch_size: размер пакетов данных (по умолчанию: 32).
  • shuffle: тасовать ли данные (по умолчанию: True).
  • seed: опциональный случайный сид для перетасовки и трансформации.
  • save_to_dir: None или str (по умолчанию: None). Это позволяет опционально указать каталог, в который будут сохраняться генерируемые дополненные картинки (полезно для визуализации того, что вы делаете).
  • save_prefix: str. Префикс, используемый для имён сохранённых картинок (актуально, только если установлен параметр save_to_dir).
  • save_format: одно из «png», «jpeg» (актуально, только если установлено save_to_dir). По умолчанию: «png».
  • follow_links: следовать ли за симлинками внутри поддиректорий класса (по умолчанию: False).
  • подмножество: Подмножество данных («training» или «validation»), если в ImageDataGenerator установлено значение validation_split.
  • interpolation: Метод интерполяции, используемый для повторной выборки изображения, если целевой размер отличается от размера загруженного изображения. Поддерживаются методы «nearest», «bilinear» и «bicubic». Если установлен PIL версии 1.1.3 или более новой, то поддерживаются также «lanczos». Если установлен PIL версии 3.4.0 или новее, поддерживаются также «box» и «hamming». По умолчанию используется «nearest».
  • validate_filenames: Boolean, следует ли проверять имена файлов изображений в x_col. Если True, то недействительные изображения будут проигнорированы. Отключение этой опции может привести к ускорению выполнения данной функции. По умолчанию: True.

Возвращает

DataFrameIterator, дающий кортежи (x, y), где x — нумерованный массив, содержащий пакет изображений с формой (batch_size, *target_size, channels), а y — нумерованный массив соответствующих меток.


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’)

Вводит путь к каталогу и генерирует пакеты дополненных данных.

Аргументы

  • directory: строка, путь к целевому каталогу. Он должен содержать по одному подкаталогу на класс. Любые PNG, JPG, BMP, PPM или TIF изображения внутри каждого из дерева подкаталогов каталога будут включены в генератор. Смотрите этот скрипт для более подробной информации.
  • target_size: Кортеж целых чисел (высота, ширина), по умолчанию: (256, 256). Размеры, до которых все найденные изображения будут изменены.
  • color_mode: Один из «градации серого», «rgb», «rgba». По умолчанию: «rgb». Будет ли преобразовано изображение в 1, 3 или 4 канала.
  • classes: Необязательный список подкаталогов классов (например, [‘dogs’, ‘cats’]). По умолчанию: None. Если не предусмотрено, то список классов будет автоматически выведен из имен подкаталогов/структуры подкаталога, где каждый подкаталог будет рассматриваться как отдельный класс (а порядок классов, которые будут сопоставляться с индексами меток, будет буквенно-цифровым). Словарь, содержащий отображение от имен классов к индексам классов, можно получить через атрибут class_indices.
  • class_mode: Один из:  «categorical», «binary», «sparse», «input», или None. По умолчанию: «categorical». Определяет тип возвращаемых массивов меток:
  • «categorical» — это двухмерные одноразовые кодированные метки,
  • «binary» — это 1D двоичные метки, «разреженный» — это 1D целые метки,
  • «input» будут изображения, идентичные входным (в основном используемые для работы с автокодировщиками).
  • Если None, то метки не возвращаются (генератор будет выдавать только партии данных изображений, что полезно при работе с функцией model.predict_generator()). Обратите внимание, что в случае с class_mode None для корректной работы данные все равно должны находиться в подкаталоге каталога.
  • batch_size: Размер пакетов данных (по умолчанию: 32).
  • тасовка: Нужно ли тасовать данные (по умолчанию: True) Если установлено значение False, то данные сортируются в алфавитно-цифровом порядке.
  • seed: Необязательное случайное семя для перетасовки и преобразований.
  • save_to_dir: None или str (по умолчанию: None). Это позволяет опционально указать каталог, в который будут сохраняться генерируемые дополненные картинки (полезно для визуализации того, что вы делаете).
  • save_prefix: Str. Префикс, используемый для имён сохранённых картинок (актуально только в том случае, если установлен параметр save_to_dir).
  • save_format: Один из «png», «jpeg» (актуально, только если save_to_dir). По умолчанию: «png».
  • follow_linkks: Следовать ли за сим-ссылками внутри поддиректорий класса (по умолчанию: False).
  • подмножество: Подмножество данных («training» или «validation»), если в ImageDataGenerator установлен параметр validation_split.
  • interpolation: Метод интерполяции, используемый для повторной выборки изображения, если целевой размер отличается от размера загруженного изображения. Поддерживаются методы «nearest», «bilinear» и «bicubic». Если установлен PIL версии 1.1.3 или более новой, то поддерживаются также «lanczos». Если установлен PIL версии 3.4.0 или новее, поддерживаются также «box» и «hamming». По умолчанию используется «nearest».

Возвращает

DirectoryIterator, дающий кортежи (x, y), где x — нумерованный массив, содержащий пакет изображений с формой (batch_size, *target_size, channels), а y — нумерованный массив соответствующих меток.


get_random_transform

get_random_transform(img_shape, seed=None)

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

Аргументы

  • seed: Случайый сид.
  • img_shape: Кортеж целых чисел. Форма трансформируемого изображения.

Возвращает

Словарь, содержащий случайно выбранные параметры, описывающие преобразование.


random_transform

random_transform(x, seed=None)

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

Arguments

  • x: 3D тензор, одно изображение.
  • seed: случайный сид.

Возвращает

Случайно преобразованный вариант входа (той же формы).


standardize

standardize(x)

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

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

standarize(np.copy(x))

Аргументы

  • x: Пакет входов для нормализации.

Возвращает

Входы, нормализованные.