tf.keras.preprocessing.image.ImageDataGenerator
| Просмотреть исходный код на GitHub |
Генерирует пакеты тензорных изображений с реальной динамической аугментацией данных.
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
)
Данные будут циклически обрабатываться (по пакетам).
| Аргументы | |
|---|---|
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-мерный массив или целое число
|
height_shift_range | Вещественное число, 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'. Точки за пределами границ входных данных заполняются в соответствии с заданным режимом:
|
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 | Словарь со строками - парами параметров, описывающими преобразование. В настоящее время используются следующие параметры из словаря:
|
| Возвращаемое значение | |
|---|---|
| Преобразованная версия входных данных (такая же форма). |
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:
|
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". Определяет тип массивов меток, которые возвращаются:
|
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