我已经使用 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#中体现模型输入的变化???