自定义视觉ONNX模型停止与Windows 10 ML一起使用

时间:2020-06-20 13:23:01

标签: c# onnx windows-machine-learning

我已经使用Custom Vision AI训练了模型。将模型导出为ONNX文件。

在我的C#.net核心控制台应用程序中,我已经引用了Windows 10 SDK,如下所述: accessing windows ml from console apps

然后我创建一个屏幕截图,并根据示例将其转换为SoftwareBitmap-> VideoFrame并最终转换为ImageFeatureValue: Using Image as Tensor input for ONNX models

最后,我将张量绑定到我的onnx模型上:

var output = new OnnxModelOutput();
var session = await CreateSession(projectId);
var binding = new LearningModelBinding(session);

binding.Bind("data", imageFile);
binding.Bind("classLabel", output.ClassLabel);
binding.Bind("loss", output.Loss);

这个月工作正常!几天以来,它停止工作。似乎ONNX绑定在自定义视觉AI中发生了变化。如果将旧模型与新模型进行比较:

旧型号

名称:数据
类型:float32 [None,3,224,224]
符号:图片(Bgr8)
BGR格式的图像。它是[N,C,H,W]张量。
沿C轴的第1/2 / 3rd切片分别是蓝色,绿色和红色通道。 input of old ONNX model

新型号

名称:数据
类型:float32 [None,3,224,224]
符号:图像(Bgr8,线性,标称范围_0_255)
BGR格式的图像。它是[N,C,H,W]张量。
沿C轴的第1/2 / 3rd切片分别是蓝色,绿色和红色通道
enter image description here

问题

在新的ONNX模型中进行了当前更改后,输入绑定失败并显示以下错误: 模型变量数据,期望为Float [-1,3,224,224,],但尝试使用不兼容的Image [1174x729]类型进行绑定。'

那么如何在c#中反映模型输入的变化?

1 个答案:

答案 0 :(得分:0)

我设法解决了!

我下载了此工具并打开了模型

https://github.com/Microsoft/Windows-Machine-Learning/tree/master/Tools/WinMLDashboard

enter image description here

然后您需要删除新的元数据属性。 也就是说,您需要删除 线性,标称范围_0_255)

因此,一旦我删除了它,它将再次起作用! enter image description here