1

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

在我的 C# .net 核心控制台应用程序中,我引用了 windows 10 sdk,如下所述: 从控制台应用程序访问 windows ml

然后我创建一个屏幕截图并将其转换为 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/3 个切片分别是蓝色、绿色和红色通道。 旧 ONNX 模型的输入

新模式

名称:数据
类型:float32[None,3,224,224]
表示:图像(Bgr8,Linear,NominalRange_0_255)
BGR 格式的图像。它是一个 [N, C, H, W]-张量。
沿C轴的1st/2nd/3rd切片分别为蓝色、绿色和红色通道,分别
在此处输入图像描述

问题

随着新 ONNX 模型的当前更改,输入绑定失败并出现错误: 模型变量数据,需要 Float[-1,3,224,224,],但尝试使用不兼容的类型 Image[1174x729] 进行绑定。

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

4

1 回答 1

0

我设法解决了!

我下载了这个工具并打开了模型

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

在此处输入图像描述

然后您需要删除新的元数据属性。也就是说需要去掉Linear,NominalRange_0_255)

因此,一旦我删除了它,它就再次起作用了! 在此处输入图像描述

于 2020-06-23T09:33:07.970 回答