如何将灰度图像数据集加载到移动网络模型

How to load grayscale image dataset to Mobile net model

我正在尝试将灰度图像数据集 (fashion-mnist) 加载到 MobileNet 模型以预测手写数字,但根据 this 教程,只能将 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)

如何解决这个问题?

可能预训练的 MobileNet 不适合这个任务。你有两个不同的问题。 Mobilenet 是为 Imagenet 图像制作的,它们是具有 3 个颜色通道的 224x224 图像,而 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])

这里有一些小细节需要你自己去琢磨。例如 dtype 的图像,如果你已经从数据集中加载为 numpy。您可能需要使用 np.uint8().

将 numpy 类型转换为整数

试试这个,x = np.stack((x,)*3, axis=-1)。详情请参考link:https://github.com/malnakli/ML/blob/master/tf_serving_keras_mobilenetv2/main.ipynb

Mobilenet v2 需要 RGB。您也许还可以使用 PIL 的转换功能。

试试这个:

from PIL import Image
x= Image.open(input_image).resize((96,96)).convert("RGB")

文档在这里:https://pillow.readthedocs.io/en/stable/reference/Image.html