问题标签 [windows-machine-learning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
88 浏览

windows-runtime - WinML onnx 示例产生错误的结果

我正在按照这个 WinML示例创建一个回归模型并对其进行推理。我尝试使用 WinML/WinRT 运行 onnx 模型,但结果错误。我强制将数据读取为 RGB 而不是 BGR,但其中包含一个 alpha 组件,例如 RGBA,我怀疑错误的结果是由于 alpha 而我的原始模型中没有它。我该如何解决这个问题? 代码片段 控制台输出

当我从解码器读取像素时,我得到 RGBA,其中 A (alpha) 设置为 255。我尝试将其替换为 1,但似乎该解码器是不可变的。如果我可以确保输入到模型的像素是正确的,那么这将产生正确的结果。

0 投票
1 回答
85 浏览

windows - 游戏中 NPC 的机器学习:Windows ML 还是 DirectML?

有时我读到使用 Windows ML 和/或 DirectML 可以改善 NPC 在游戏中的行为。看起来这两种 API 都合适,但哪一种更合适呢?还是并行使用不同的任务是最好的方法?如果其中一个更适合基于机器学习的 NPC,为什么它比另一个 API 更好?

0 投票
1 回答
300 浏览

c++ - 如何在 Windows ML 示例中使用 GPU

我正在尝试调整本教程以使用我自己的神经网络和图像。我可以在我的 CPU 上做到这一点,但我无法使用未更改的教程或我的改编教程来使用我的 GPU。根据系统信息,我有一个“NVIDIA Quadro P2200”,据我所知,我不需要在任何地方指定它。相反,似乎我需要做的就是替换:

和:

当我这样做时,我得到一个例外:

在构造第二个参数后,这会变成:

winrt::hresult_error进入check_hresult(...)队列后立即抛出A。我认为这意味着bindings在某种程度上是无效的......但是(a)我不确定并且(b)我不知道该怎么做才能使它有效。帮助?

编辑:我现在可以让 MS 样本工作,但不是我的适应。当我使用Netron查看 MS 示例 .onnx 文件时,输入和输出节点具有合理的名称,并且报告的张量大小也是合理的。在我尝试使用的模型上,输入和输出节点都有“:0”作为它们名称的最后一部分,并且张量大小有一个“未知”大小,例如输入大小报告为“unk_123 x 3 x 224 x 224"。这些中的任何一个都会产生任何不兼容性吗?网络是提供给我的,所以我想在要求之前了解是否需要更改...

0 投票
1 回答
54 浏览

windows-machine-learning - WinMLRunner:从 ONNX 模型中提取有序特征

使用 WinMLRunner,我传入了一个 ONNX 模型(我认为使用 Netron 来查看它)。然后是一个图像,程序在 cmd 中运行,它显示了以下内容:

如果可以将模型特征导出到列表中,则可以使用索引来查看 WinML 的排名。如果没有提取功能,WinMLRunning可以作为一个很好的 rng util ;)

0 投票
1 回答
452 浏览

c# - C# 中 WPF 的 WinML 和 OnnxRuntime 之间的区别

要将训练有素的 Onnx 模型与 WPF .Net Core 3.1 应用程序打包在一起,我想知道这两种方法是否有区别:Microsoft.ML.OnnxRuntime 和 Microsoft.AI.MachineLearning (WinML)?OnnxRuntime 似乎更容易用 C# 实现,而 WinML 的桌面应用程序示例使用 C++。

使用 OnnxRuntime 为公共用户部署 Onnx 模型有什么缺点吗?或者它是否需要特定的推理环境?

如果它们本质上是相同的,为什么微软需要维护两种不同的方法?

0 投票
1 回答
78 浏览

onnxruntime - WinML 到任何 Onnxruntime EP

是否可以通过 WinML API 调用任何 ONNX 运行时执行提供程序?我能够通过 WinML 运行自定义 DML,但无法找到 WinML 到 onnxruntime EP 的步骤。

0 投票
1 回答
75 浏览

c# - 从 C# 获取指向 Windows.AI.MachineLearning.TensorFloat 中数据的指针

我想TensorFloat在我的 C# .NET Core 5.0 应用程序中获得指向 a 背后数据的指针。我首先声明IMemoryBufferByteAccess

然后,在推理之后,我尝试如下使用它:

这导致了一个System.InvalidCastException: 'Invalid cast from 'WinRT.IInspectable' to 'IMemoryBufferByteAccess'.'令人惊讶的结果,因为Windows.MediaWindows.Graphics的方法完全相同。Windows.Foundation.IMemoryBufferReference的文档甚至指出:

相同的对象标识还必须实现 COM 接口 IMemoryBufferByteAccess。客户端通过 QueryInterface 从 IMemoryBufferReference 对象中检索 IMemoryBufferByteAccess 接口指针。

我错过了什么?

0 投票
1 回答
106 浏览

hololens - 可以选择 DNN AI 核心在 HoloLens 2 上进行模型评估吗?

谁能告诉我是否可以直接选择 DNN AI 核心在 HoloLens 2 上进行神经网络评估。

我在此处的GitHub 存储库中阅读了有关 HPU 的信息,其中包括 DNN AI 核心。但是在文档中列出了只能使用 CPU 和 GPU 的设备。

0 投票
0 回答
87 浏览

c++ - 如何将 cudaArray 提供给 Windows-Machine-Learning 推理引擎?

我正在尝试为实时图像处理软件开发一个支持 ML 的插件,该插件cudaArray_t在 GPU 上提供图像数据,但由于该软件将我锁定在较旧的 CUDA 版本中,我想使用 DirectML(该软件无论如何都是Windows)。

出于延迟原因,我不想做任何不必要的 GPU-CPU-GPU 往返。为此,我认为我需要将 CUDA 数据映射到 D3D12 资源,然后可用于创建输入和输出张量以绑定到模型。我找到了一个示例,该示例使用 CUDA外部资源互操作性API 将 a 映射cudaArray_t到我试图作为代码基础的ID3D12Resource 此处。由于我不需要渲染任何东西,我认为我可以简单地创建堆和资源,然后将传入cudaArray_t的内容复制到互操作cudaArray_t中,如下所示,而无需创建任何类型的命令队列。请注意,缺少的代码与上面链接的 github 存储库中的代码相同,因此为了简洁起见,我将其省略了。

这种方法不起作用,但我不确定如何调试它,因为我通常是 Direct3D 编程和 GPU 编程的新手。我正在使用官方 Direct3D 12 文档作为参考,但它有点压倒性,因此非常感谢这里应该修复的一些方向 :) 我在想我需要使用信号量进行某种同步,但我不确定在不创建某种命令队列的情况下是否可行。

最后,如果映射到 aID3D12Resource可行,我假设可以使用ITensorStaticsNative 接口创建一个张量以绑定到LearningModel的输出或输入。

0 投票
1 回答
83 浏览

windows-machine-learning - 访问 TensorFloat 数据

我正在使用 Windows-Machine-Learning 将我的转换VideoFrameTensorFloat _input(形状:1,3,256,192;RGB 通道 + 图像),将其加载到我的 onnx 模型中并作为_output另一个TensorFloat对象接收(形状:1,17,64,48;检测到 17对象+图像)。

现在我的问题是:如果我想访问它TensorFloat _output,目前我知道的唯一方法是使用_output.data.GetAsVectorView它,它给了我一个长的 1d Vector 并尝试重新排序并找出其中的尺寸是如何排序的?我是否可以遵循明确的规则来理解 4D 张量是如何在 1D 向量中编码的?或者,我可以以某种方式直接从_output TensorFloat对象访问不同的维度,因为使用“形状”显示它是一个多维数组?