РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pytfSpImDr 8 of 89 menu
◀ ▶

Папка картинок в TensorFlow

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

Для примера создадим каталог mini_album с двумя подпапками классов и парой маленьких файлов, затем построим набор данных с фиксированным размером картинки:

import os import tensorflow as tf base = "mini_album" for cls in ("cats", "dogs"): folder = os.path.join(base, cls) os.makedirs(folder, exist_ok=True) for i in range(2): img = tf.zeros((8, 8, 3), dtype=tf.float32) if cls == "cats": img = img + tf.constant([[[1.0, 0.0, 0.0]]]) else: img = img + tf.constant([[[0.0, 0.0, 1.0]]]) img = tf.cast(img * 255, tf.uint8) path = os.path.join(folder, f"{i}.png") tf.io.write_file(path, tf.io.encode_png(img)) ds = tf.keras.utils.image_dataset_from_directory( base, image_size=(8, 8), batch_size=2, shuffle=False, ) for images, labels in ds.take(1): print(images.shape) print(labels) # выведет (2, 8, 8, 3)

Первый аргумент - путь к корню, где лежат подпапки классов. Параметр image_size задаёт высоту и ширину после загрузки. Партия собирается по параметру batch_size. Ниже тот же приём для короткого пути photos/train:

import os import tensorflow as tf root = "photos/train" for cls in ("apples", "pears"): folder = os.path.join(root, cls) os.makedirs(folder, exist_ok=True) img = tf.cast(tf.ones((6, 6, 3)) * 200, tf.uint8) tf.io.write_file( os.path.join(folder, "0.png"), tf.io.encode_png(img), ) ds = tf.keras.utils.image_dataset_from_directory( root, image_size=(16, 16), batch_size=4, ) for images, labels in ds.take(1): print(images.shape) # выведет (2, 16, 16, 3)

Метки классов - целые номера: порядок подпапок задаётся алфавитом имён. Если файлов больше, чем места в одной партии, набор делится на несколько шагов:

import os import tensorflow as tf base = "mini_album" for cls in ("cats", "dogs"): folder = os.path.join(base, cls) os.makedirs(folder, exist_ok=True) for i in range(2): img = tf.cast(tf.ones((8, 8, 3)) * 128, tf.uint8) path = os.path.join(folder, f"{i}.png") tf.io.write_file(path, tf.io.encode_png(img)) ds = tf.keras.utils.image_dataset_from_directory( base, image_size=(8, 8), batch_size=2, shuffle=False, ) print(len(list(ds))) # выведет 2

Создайте каталог samples с подпапками a и b, положите в каждую по одному маленькому файлу. Загрузите набор с размером 12×12 и выведите форму первой партии картинок.

Подготовьте три класса в папке icons и постройте набор с партией из восьми элементов. Выведите тип меток первой партии.

Разложите файлы по двум подкаталогам old и new. Получите набор без перемешивания и выведите метки первой партии.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить