Я новичок в Керасе. Я пытаюсь обучить модель, используя ImageDataGenerator. У меня есть очень большое количество изображений для обучения, сохраненных в формате .npy. Я хотел использовать flow_from_directory(), поэтому я сохранил изображения в соответствии с рекомендациями в документации (одна папка на класс). Проблема в том, что это работает только для png, jpeg, tiff и т.д., Но не работает с моими файлами .npy.
Есть ли способ, которым я мог бы использовать эту функцию или что-то подобное, что дает мне все возможности расширения, которые дает ImageDataGenerator?
Спасибо большое, любая помощь приветствуется
Да, это возможно, если вы готовы адаптировать исходный код 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))
...
Но, возможно, вам захочется реализовать некоторую дополнительную логику, которую load_img
утилиты load_img
' load_img
также имеет, например, цветовой режим, размер цели и т.д., И обернуть все в свою собственную функцию load_array
.