Использование ImageDataGenerator с изображениями в формате .npy - PullRequest
0 голосов
/ 09 января 2019

Я довольно новичок в Керасе. Я пытаюсь обучить модель, используя ImageDataGenerator. У меня есть очень большое количество изображений для обучения, сохраненных в формате .npy. Я хотел использовать flow_from_directory (), поэтому я сохранил изображения в соответствии с рекомендациями в документации (одна папка на класс). Проблема в том, что это работает только для png, jpeg, tiff и т. Д., Но не работает с моими файлами .npy.

Можно ли как-нибудь использовать эту функцию или что-то подобное, что дает мне все возможности расширения, которые предоставляет ImageDataGenerator?

Большое спасибо, любая помощь приветствуется

1 Ответ

0 голосов
/ 09 января 2019

Да, это возможно, если вы хотите адаптировать исходный код ImageDataGenerator (который на самом деле довольно прост для чтения и понимания). Глядя на github с предварительной обработкой keras, я думаю, что было бы достаточно заменить метод load_img в классе DirectoryIterator собственным методом load_array, который считывает файлы .npy с диска вместо изображений:

...
# build batch of image data
for i, j in enumerate(index_array):
     fname = self.filenames[j]
     ## Replace the code below with your own function
     img = load_img(os.path.join(self.directory, fname),
                    color_mode=self.color_mode,
                    target_size=self.target_size,
                    interpolation=self.interpolation)
     x = img_to_array(img, data_format=self.data_format)
 ...

Так минимально, вы бы сделали следующее изменение в этой строке:

...
# build batch of image data
for i, j in enumerate(index_array):
    fname = self.filenames[j]
    img = np.load(os.path.join(self.directory, fname))
...

Но, возможно, вы захотите реализовать некоторую дополнительную логику, которую имеет функция полезности Keras 'load_img, такую ​​как цветовой режим, размер цели и т. Д., И обернуть все в свою собственную функцию load_array.

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