tf.keras.preprocessing.image_dataset_from_directory
Создает tf.data.Dataset из файлов изображений в каталоге.
tf.keras.preprocessing.image_dataset_from_directory(
directory,
labels='inferred',
label_mode='int',
class_names=None,
color_mode='rgb',
batch_size=32,
image_size=(256, 256),
shuffle=True,
seed=None,
validation_split=None,
subset=None,
interpolation='bilinear',
follow_links=False,
crop_to_aspect_ratio=False,
pad_to_aspect_ratio=False,
data_format=None,
verbose=True
)
Используется в блокнотах
| Используется в учебных руководствах |
|---|
Если структура каталогов выглядит так:
main_directory/ ...class_a/ ......a_image_1.jpg ......a_image_2.jpg ...class_b/ ......b_image_1.jpg ......b_image_2.jpg
Тогда вызов image_dataset_from_directory(main_directory, labels='inferred') вернет tf.data.Dataset, который выдает пакеты изображений из подкаталогов class_a и class_b вместе с метками 0 и 1 (0 соответствует class_a, а 1 — class_b).
Поддерживаемые форматы изображений: .jpeg, .jpg, .png, .bmp, .gif. Анимированные GIF-файлы усекаются до первого кадра.
| Аргументы | |
|---|---|
directory | Каталог, в котором находятся данные. Если labels имеет значение "inferred", он должен содержать подкаталоги, в каждом из которых находятся изображения одного класса. В противном случае структура каталогов игнорируется. |
labels | Либо "inferred" (метки формируются на основе структуры каталогов), None (без меток) или список/кортеж целочисленных меток, размер которого совпадает с количеством файлов изображений, найденных в каталоге. Метки должны быть отсортированы в алфавитно-цифровом порядке путей к файлам изображений (полученных с помощью os.walk(directory) в Python). |
label_mode | Строка, описывающая кодирование labels. Доступны следующие варианты:
|
class_names | Допустимо только если labels имеет значение "inferred". Это явный список имен классов (они должны совпадать с именами подкаталогов). Используется для управления порядком классов (в противном случае применяется алфавитно-цифровая сортировка). |
color_mode | Одно из значений: "grayscale", "rgb", "rgba". По умолчанию — "rgb". Определяет, будут ли изображения преобразованы к формату с 1, 3 или 4 каналами. |
batch_size | Размер пакетов данных. По умолчанию — 32. Если задано значение None, данные не будут разбиты на пакеты (набор данных будет выдавать отдельные примеры). |
image_size | Размер, до которого изменяются изображения после чтения с диска; указывается как (height, width). По умолчанию — (256, 256). Поскольку конвейер обрабатывает пакеты изображений, все изображения в которых должны иметь одинаковый размер, это значение необходимо указать. |
shuffle | Нужно ли перемешивать данные. По умолчанию — True. Если задано значение False, данные сортируются в алфавитно-цифровом порядке. |
seed | Необязательное начальное значение генератора случайных чисел для перемешивания и преобразований. |
validation_split | Необязательное число с плавающей точкой от 0 до 1, задающее долю данных, резервируемых для проверки. |
subset | Подмножество данных, которое необходимо вернуть. Одно из значений: "training", "validation" или "both". Используется только если задано validation_split. Если задано значение subset="both", функция возвращает кортеж из двух наборов данных (соответственно обучающего и проверочного). |
interpolation | Строка с методом интерполяции, используемым при изменении размера изображений. По умолчанию — "bilinear". Поддерживаются методы "bilinear", "nearest", "bicubic", "area", "lanczos3", "lanczos5", "gaussian", "mitchellcubic". |
follow_links | Нужно ли переходить в подкаталоги, на которые указывают символические ссылки. По умолчанию — False. |
crop_to_aspect_ratio | Если задано значение True, изменяет размер изображений без искажения соотношения сторон. Если исходное соотношение сторон отличается от целевого, выходное изображение обрезается, чтобы вернуть максимально возможную область изображения (размером image_size), соответствующую целевому соотношению сторон. По умолчанию (crop_to_aspect_ratio=False) соотношение сторон может не сохраняться. |
pad_to_aspect_ratio | Если задано значение True, изменяет размер изображений без искажения соотношения сторон. Если исходное соотношение сторон отличается от целевого, к выходному изображению добавляются поля, чтобы вернуть максимально возможную область изображения (размером image_size), соответствующую целевому соотношению сторон. По умолчанию (pad_to_aspect_ratio=False) соотношение сторон может не сохраняться. |
data_format | Если значение равно None, используется keras.config.image_data_format(); в противном случае допустимы значения 'channel_last' или 'channel_first'. |
verbose | Нужно ли отображать сведения о количестве классов и найденных файлов. По умолчанию — True. |
| Возвращаемое значение |
|---|
Объект tf.data.Dataset.
- Если
label_modeимеет значениеNone, он выдает тензорыfloat32формы(batch_size, image_size[0], image_size[1], num_channels), содержащие изображения (правила дляnum_channelsсм. ниже). - В противном случае он выдает кортеж
(images, labels), гдеimagesимеет форму(batch_size, image_size[0], image_size[1], num_channels), аlabelsсоответствует формату, описанному ниже.
Правила для формата меток:
- если
label_modeимеет значение"int", метки представляют собой тензорint32формы(batch_size,). - если
label_modeимеет значение"binary", метки представляют собой тензорfloat32из единиц и нулей формы(batch_size, 1). - если
label_modeимеет значение"categorical", метки представляют собой тензорfloat32формы(batch_size, num_classes), содержащий унитарное кодирование индекса класса.
Правила для количества каналов в возвращаемых изображениях:
- если
color_modeимеет значение"grayscale", тензоры изображений содержат 1 канал. - если
color_modeимеет значение"rgb", тензоры изображений содержат 3 канала. - если
color_modeимеет значение"rgba", тензоры изображений содержат 4 канала.
© 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/api_docs/python/tf/keras/preprocessing/image_dataset_from_directory