【发布时间】:2017-08-22 12:43:23
【问题描述】:
问题:我正在训练一个用于多标签图像识别的模型。因此,我的图像与多个 y 标签相关联。这与 ImageDataGenerator 的便捷 keras 方法“flow_from_directory”相冲突,其中每个图像都应该位于相应标签的文件夹中(https://keras.io/preprocessing/image/)。
解决方法:目前,我正在将所有图像读入一个 numpy 数组并从那里使用“流”功能。但这会导致内存负载过重和读入过程缓慢。
问题:有没有办法使用“flow_from_directory”方法并手动提供(多个)类标签?
更新:我最终为多标签案例扩展了 DirectoryIterator 类。您现在可以将属性“class_mode”设置为值“multilabel”并提供一个字典“multlabel_classes”,它将文件名映射到它们的标签。代码:https://github.com/tholor/keras/commit/29ceafca3c4792cb480829c5768510e4bdb489c5
【问题讨论】:
-
flow_from_directory 假定图像在目录之间进行拆分,并且每个目录的名称都是目标。 Keras 的总体思路是简化使用(相对于 TF 和 Theano),但它伴随着缺乏定制的成本。您不应该将所有图像加载到内存中,而是创建代表各种类的目录并将相应的图像存储在其中。看看非常漂亮的 F. Chollet 教程:blog.keras.io/…
-
在多标签情况下将图像存储在代表各种类别的目录中并不可行。每个图像有 100 个类和 1-6 个类,可能的组合已经很庞大了。如果没有其他解决方法,我可能会在 keras/preprocessing/image.py 中扩展 DirectoryIterator 类
-
很好的修复。您是否为此创建了拉取请求?我认为这是维护者可能/应该考虑添加的内容。
-
我刚刚创建了一个拉取请求:github.com/fchollet/keras/pull/6128
标签: python image-processing deep-learning keras multilabel-classification