0

我按照这个官方教程创建了一个 UWP 应用程序,它可以使用预训练模型检测手写数字。

但我需要使用 Keras 模型。

因此,我将这个Keras 模型从 Keras 示例转换为 ONNX,该示例也在 MNIST 数据集上使用 python 中的 winmltools 进行了训练:

onnx_model = winmltools.convert_keras(model, 7, name='mnist')   
print(onnx_model.graph.input)   
winmltools.save_model(onnx_model, "mnist_tf.onnx")`

当我在 Visual Studio 中导入此代码时,mlgen 会为输入生成此代码:

public TensorFloat conv2d_1_input; // shape(-1,28,28,1)

但在本教程的原始模型上,它是:

public ImageFeatureValue Input3; // BitmapPixelFormat: Gray8, BitmapAlphaMode: Premultiplied, width: 28, height: 28

如何将 ImageFeatureValue 转换为 TensorFloat?

我还需要导入图像文件,但我只找到了也使用 ImageFeatureValue 而不是 TensorFloat 的方法。

谢谢!

4

2 回答 2

0

you have a few options.

  1. You can modify the generated code to accept an ImageFeatureValue as the mnistInput. Note that ImageFeatureValue can be accepted by the Bind call an converted to a TensorFloat as long as the shapes are compatible.
  2. You can use the WinMLDashboard tool to add Image Denotation and image metadata to the model. I don't see the Keras model you linked to, but I'm assuming it doesn't have any of the image metadata that the mnist model from the tutorial has. Set the "Type denotation" to "Image" like this:

image denotation sample

and the metadata to this:

metadata

where the NominalRange is 0-255. That is how the model in the tutorial is set up.

于 2020-10-16T16:47:39.867 回答
0

我只需修改 Visual Studio 中的 mlgen 工具生成的代码以匹配教程示例的代码!我偶尔会发现 mlgen 工具会输出一些用于格式化模型的不稳定代码......

于 2020-01-29T18:06:40.177 回答