我已经使用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#中反映模型输入的变化?
答案 0 :(得分:0)
我设法解决了!
我下载了此工具并打开了模型
https://github.com/Microsoft/Windows-Machine-Learning/tree/master/Tools/WinMLDashboard
然后您需要删除新的元数据属性。 也就是说,您需要删除 线性,标称范围_0_255)