我对Keras很陌生。我正在尝试使用ImageDataGenerator训练模型。我有大量以.npy格式保存的用于训练的图像。我想使用flow_from_directory(),所以我按照文档中的建议存储了图像(每个类一个文件夹)。问题在于这仅适用于png,jpeg,tiff等,但不适用于我的.npy文件。
有什么方法可以使用此功能或类似的功能,从而为我提供ImageDataGenerator提供的所有扩充功能吗?
非常感谢,感谢您的帮助
答案 0 :(得分:0)
是的,如果您愿意改编ImageDataGenerator的源代码(实际上很容易阅读和理解),则有可能。看着keras-preprocessing github,我认为用您自己的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
函数中。