问题描述
使用 Windows-Machine-Learning 库时,onnx 模型的输入和输出通常是 TensorFloat
或 ImageFeatureValue
格式。
我的问题:这些有什么区别?似乎我可以将 onnx 导入(用于身体姿势检测)后自动创建的 model.cs
文件中的输入形式从 TensorFloat
更改为 ImageFeatureValue
并且代码仍然运行。这使它例如更容易处理视频帧,因为我可以通过 ImageFeatureValue.CreateFromVideoFrame(frame)
创建我的输入。
这是否有可能导致问题的原因,以及在使用视频帧作为输入时它们之间的区别是什么,我没有从文档中看到它?或者,如果输入是视频帧,为什么 model.cs 脚本首先创建一个 TensorFloat
而不是 ImageFeatureValue
?
解决方法
找到答案 here。
如果 Windows ML 不支持您模型的颜色格式或像素范围,那么您可以实施转换和张量化。您将为输入值的 32 位浮点数创建 NCHW 四维张量。有关如何执行此操作的示例,请参阅自定义张量化示例。