如何将灰度图像数据集加载到 MobileNet 模型中

4
我正在尝试加载灰度图像数据集(fashion-mnist)到MobileNet模型并预测手写数字,但是根据教程,该模型只能加载RGB图像。当我尝试输入fashion-mnist样本时,它给出了以下错误信息:

Error when checking input: expected keras_layer_13_input to have shape (224, 224, 3) but got array with shape (224, 224, 1)

如何解决这个问题?

欢迎来到stackoverflow。请提供一个最小、完整和可验证的示例,我们会为您提供帮助。 - gehbiszumeis
3个回答

2

也许预先训练的MobileNet不适用于这个任务。您有两个不同的问题。Mobilenet是为Imagenet图像而设计的,这些图像具有224x224图像和3个彩色通道,而MNIST数据集是28x28图像和一个彩色通道。您可以在RGB中重复颜色通道:

# data.shape [70000, 224, 224, 1] -> [70000, 224, 224, 3]
data = np.repeat(data, 3, -1)

但在此之前,您需要调整图像大小。例如,您可以使用PIL来调整图像大小:

from PIL import Image

data = np.array([Image.fromarray(x).resize([224,224]) for x in data])

这里有一些小细节需要你自己解决。例如,如果你从数据集中加载了numpy格式的图像,则需要确定图像的dtype。你可能需要使用np.uint8()将numpy类型转换为整数。


TensorFlow的等效代码为:tf.tile(data, [1, 1, 1, 3]) - BiBi
我正在使用以下代码从数据集中加载数据:splits, info = tfds.load('mnist', with_info=True, as_supervised=True, split=splits)。那么如何将上述解决方案应用于此问题呢? - rasindu alwis
hub.KerasLayer(CLASSIFIER_URL, input_shape=(224, 224, 3)) 这是我调整图像大小的方法。 - rasindu alwis
那么,最好的方法是什么?我们不能使用MobileNet模型来预测灰度图像吗? - rasindu alwis
我尝试添加更多的解释。在我的解决方案中,我使用了numpy。也许,在tensorflow中还有其他的解决方案。例如:https://www.tensorflow.org/api_docs/python/tf/image/resize_images - Mehdi
显示剩余2条评论

1

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接