Windows 上的 ONNX Runtime 入门

ONNX Runtime Nuget 包提供了使用完整 WinML API 的能力。这使得将连接摄像头的 Windows.Media.VideoFrame 直接传递到运行时进行实时推理等场景成为可能。

WinML API 是一个 WinRT API,从 Windows OS build 1809 (RS5) 开始在 Windows.AI.MachineLearning 命名空间中随 Windows 操作系统一起发布。它内置了 ONNX Runtime 的一个版本。

除了使用内置版本的 WinML,WinML 还可以作为应用程序可再发行包安装(参见Direct ML Windows 获取技术细节)。

目录

Windows 操作系统集成

ONNX Runtime 在 Windows 10 版本 >= 1809 和所有 Windows 11 版本中可用。它嵌入在 Windows.AI.MachineLearning.dll 中,并通过 WinRT API(简称 WinML)公开。它包括 CPU 执行提供程序和用于 GPU 支持的 DirectML 执行提供程序

高层设计如下

ONNX + WinML layered architecture

API 选择

您可以选择使用 WinRT API 或 C API。

  WinRT C API
类型系统 与 Windows RT 类型的集成 平台中立类型
语言支持 通过 WinRT 投影提供语言支持 通过各语言投影提供语言支持
张量化 接受 VideoFrame 并转换为张量(支持 CPU 和 GPU) 接受张量

将 NuGet WinRT API 与其他 C-API 发行版一起使用

WinRT API NuGet 包随 ONNX Runtime 的特定版本一起分发,但应用程序可以包含自己的 ONNX Runtime 版本(可以是发布版本自定义构建版本)。您可能希望这样做以使用非默认的执行提供程序。要使用您自己的 ONNX Runtime 版本,请将 onnxruntime.dll 替换为您所需版本。

返回顶部

支持的版本

Windows 8.1+

返回顶部

构建版本

组件 描述 支持的平台
Microsoft.AI.MachineLearning WinRT - CPU, GPU (DirectML) Windows 8.1+

API 参考

Windows.AI.MachineLearning

示例

任何为 Windows.AI.MachineLearning API 编写的代码都可以轻松修改,以针对 Microsoft.ML.OnnxRuntime 包运行。所有最初由内置客户通过 Windows 命名空间引用的类型,现在都需要更新为使用 Microsoft 命名空间。

我应该使用内置的 WinML 版本还是 NuGet WinML 版本?

如需比较,请参阅 Windows 机器学习:内置版本与 NuGet WinML 解决方案

要检测特定 Windows 操作系统版本是否包含 WinML API,请使用 IsApiContractPresent 方法。此方法可以从 UWP 或原生应用程序中调用。

如果操作系统不包含您需要的运行时,您可以改用可再发行二进制文件。

发布版本 API 契约版本
Windows OS 1809 1
Windows OS 1903 2
Windows OS 1909 2
ORT 发布版本 1.2 3
ORT 发布版本 1.3 3
ORT 发布版本 1.4 3

有关 Windows 操作系统发行版中 opset 和 ONNX 版本详情的更多信息,请参阅此处

返回顶部