Как я могу использовать класс ImageDataGenerator, чтобы сгенерировать поезд и метку как изображение для модели керас? - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу обучить модель генерировать новые изображения с использованием Keras, и я буду использовать класс ImageDataGenerator для генерации пакетов изображений.

Проблема в том, что я не могу найти способ использовать этот класс длягенерировать поезда и маркировать партии как изображения.Я хочу перейти к модели для обучения некоторым изображениям и для обозначения некоторых других изображений.

Более того, мне необходимо выполнять чтение каждой партии изображений с жесткого диска, поскольку набор данных слишком велик для загрузки в память.

Также можно оценить альтернативу подходу ImageDataGenerator.

Надеюсь, вопрос ясен, и вы можете мне помочь.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы можете использовать класс ImageDataGenerator с любыми типами меток, которые вам нравятся, а также с изображениями, которые являются просто многомерными массивами.Вот пример использования фиктивных пустых изображений:

from keras.preprocessing.image import ImageDataGenerator
import numpy as np

# Create fake images
n, width, height = 1000, 28, 28
images_data = np.random.randint(low=0, high=256, size=(n, height, width, 3))
images_labels = np.random.randint(low=0, high=256, size=(n, height, width, 3))

image_gen = ImageDataGenerator()
batch_size = 100
batch_gen = image_gen.flow(images_data, images_labels, batch_size=batch_size)

Вы можете, например, передать batch_gen в fit_generator, и это даст кортежи (images_data, images_labels), оба с формой (batch_size, height, width, 3).Вы можете проверить это с помощью:

batch = batch_gen.next()
print(len(batch))
print(batch[0].shape)
print(batch[1].shape)

Если ваш набор данных не помещается в памяти и хранится в виде файлов, вы также можете использовать flow_from_directory.В официальной документации Keras есть примеров .

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

def _generate_batches(image_gen, images_data, images_labels, batch_size):
    for batch in image_gen.flow(images_data, images_labels,
                                batch_size=batch_size):
        # Here you can do whatever you like to your batch
        yield (batch[0], batch[1])

Наконец, если вам нужна очень специфическая функциональность вашего ImageDataGenerator, вы всегда можете создать свой собственный ImageDataGenerator класс:

class ImageDataGeneratorCustom(ImageDataGenerator): 
...

В частности, вы можете перезаписать функцию flow() или даже собратькастом Iterator.

0 голосов
/ 11 февраля 2019

Вы можете создать свой собственный класс Data Generator.Эта ссылка должна быть полезной Генераторы данных с Keras .Вы можете хранить метки изображений в большом CSV-файле и просто загружать необходимые изображения в каждом пакете по мере необходимости.

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