使用 Keras 进行多类图像分类的多重预测

Posted

技术标签:

【中文标题】使用 Keras 进行多类图像分类的多重预测【英文标题】:Multiple predictions of multi-class image classification with Keras 【发布时间】:2018-09-29 10:49:33 【问题描述】:

我在 Keras 中训练了一个 CNN,其中包含一个文件夹中的图像(两种蜜蜂)。我有第二个文件夹,其中包含用于预测的未标记 bees 图像。

我能够预测单个图像(按照下面的代码)。

from keras.preprocessing import image

test_image = image.load_img('data/test/20300.jpg')
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)

prob = classifier.predict_proba(test_image)

结果:

prob
Out[214]: array([[1., 0.]], dtype=float32)

我希望能够预测所有图像(大约 300 张)。

有没有办法批量加载和预测所有图像? predict() 是否能够按照它的预期和数组预测的那样处理它?

【问题讨论】:

【参考方案1】:

Model.predict_proba()(实际上是predict() 的synonym)接受批量输入。来自文档:

为输入样本生成类别概率预测。 输入样本逐批处理。

您只需要加载多个图像并将它们粘合到一个 numpy 数组中即可。通过扩展 0 维度,您的代码已经在 test_image 中使用了一批 1。为了完成图片,还有一个Model.predict_on_batch() 方法。

要加载一批测试图像,您可以使用image.list_picturesImageDataGenerator.flow_from_directory()(与Model.predict_generator() 方法兼容,请参阅documentation 中的示例)。

【讨论】:

以上是关于使用 Keras 进行多类图像分类的多重预测的主要内容,如果未能解决你的问题,请参考以下文章

多类图像分类中如何获取权重图

使用 Keras 进行分类:预测和多类

在 Keras 中训练多类图像分类器

如何找出概率输出中每列的哪个类对应于使用Keras进行多类分类?

在 keras 中使用 CNN 对图像进行二值分类时正确预测的总数

使用 Keras 稀疏分类交叉熵进行像素级多类分类