如何将自定义数据集加载到 keras 而不是 cifar10 中?

1 python dataset keras tensorflow tf.keras

我正在研究 python 中的神经网络和图像识别并遵循本指南。他们使用:from keras.datasets import cifar10获取用于测试的图像。所以我的问题是:

  • 如何使用我自己的本地图像导入自定义数据集?
  • 我将如何构建文件以使其正确加载?

提前致谢!

Ran*_*Guy 5

加载数据集进行训练或测试的最简单方法是使用 Keras ImageDataGenerator类(它还允许您使用一些数据增强方法)。您有 3 个选择:

  • 如果您的数据集的结构如下:

     data/
       train/
         dogs/
           dog001.jpg
           dog002.jpg
           ...
         cats/
           cat001.jpg
           cat002.jpg
           ...
       validation/
         dogs/
           dog001.jpg
           dog002.jpg
           ...
         cats/
           cat001.jpg
           cat002.jpg
           ...
    
    Run Code Online (Sandbox Code Playgroud)

那么你应该使用.flow_from_directory(directory). 这里提供了一个非常好的例子。

  • 如果您的整个数据集可以加载到单个数组中(这意味着您的数据集非常小,否则您的 RAM 将爆炸),那么您应该使用该.flow()函数。例子在这里

  • 您还可以使用 apandas DataFrame来存储每个样本的信息(例如路径、标签...),这样正确的函数将是.flow_from_dataframe(df). 请参阅此处了解详细示例。

最后,如果这些功能都不能应用(例如,如果您有一个巨大的数据集,这可能是这种情况 - 意味着您必须使用图像路径 - 和相当非正统的标签 - 阻止您使用.flow_from_directory().flow_from_dataframe()方法 - 或者简单地如果如果您只想应用一些更强大的数据增强),那么您应该创建一个自定义数据生成器。您可以在此处此处查看如何创建此类示例,还有一个使用Imgaug进行数据增强的示例。

网上有大量文档和示例,因此您应该可以轻松找到最适合您的内容。