本次 Windows Developer Day,最值得等候的莫过于 Windows AI Platform 了,可以说是千呼万唤始出来。不雅观看直播的开发者们,留言最多的也是 Windows AI Platform。
下面结合微软供给的展示过程,文档和 Git Sample 来详细分析一下。
根本观点
根本认知
众所周知,目前 AI(Artificial Intelligence)的主要实现方法就是机器学习(Machine Learning),而 Windows AI Platform 对应的就是 Windows Machine Learning。
微软官方对付它的描述如下:
Windows Machine Learning (ML) evaluates trained machine learning models locally on Windows 10 devices, allowing developers to use pre-trained models within their applications. The platform provides hardware-accelerated performance by leveraging the device‘s CPU or GPU to compute evaluations for both classical Machine Learning algorithms and Deep Learning.
结合这一描述,我们可以简单总结出 Windows ML 的几个特点:
硬件加速 在撑持 DirectX12 的硬件设备上,Windows ML 可以操作 GPU 对模型的评估实现加速。
本地评估 Windows ML 可以操作本地硬件进行模型评估,减少了模型上传到云端造成的处事端流量本钱和处事端压力。可以更快速便捷的得到功效。
图像措置惩罚惩罚 在机器视觉场景,,Windows ML 简化并优化了图像、视频文件和视频流的措置惩罚惩罚,对输入源做预措置惩罚惩罚和摄像头管道措置惩罚惩罚。
模型格局
Windows ML 的模型格局是 ONNX,Open Neural Network Exchange,是 Microsoft 和 Facebook、Amazon 等公司制定的机器学习模型文件格局标准。在目前很多主流模型训练框架中,都有 ONNX 的原生撑持,或者可以撑持其他格局转换为 ONNX 格局。 这里是 ONNX 的 Git 主页,大家可以详细了解:GitHub Open Neural Network Exchange
此外大家可以通过 WinMLTools 来把其他格局的模型文件转换为 ONNX 格局,这里是 WinMLTools 地点:Python WinMLTools 0.1.0.5072. 可以转换的格局有 Core ML/Scikit-Learn/XGBoost/LibSVM。
此外 ONNX 撑持赶过 100 种运算符,针对 CPU 或 GPU 有差此外运算符撑持,这里是运算符列表:https://github.com/onnx/onnx/blob/rel-1.0/docs/Operators.md
技术架构
从这张架构图来看:
底层是 Direct 层的 DirectML API/Direct3D/CPU/GPU,DirectX 的版本撑持是 DX12
上面一层是揣度引擎,包孕了 Win32 和 WinRT 部分,主要卖力模型和设备资源打点,卖力加载和编纂核心操纵符,执行数据流图
最上层是应用措施层,同样包孕了 Win32 和 WinRT 部分;令人欣喜的是,它在所有 2018 年的 Windows 版本上都可用
开发过程
概述
目前 Windows AI Platform 还是预览版内容,所以需要预览版的 Windows OS 和 WIndows 10 SDK,下面是下载地点:
Windows Insider Preview Downloads
此中 Visual Studio 的版本要求是 Community、Professional 或 Enterprise,Community 版本的获取最为简单,建议尝试性需求时使用这个版本。
先来看一张颁布会的展示图:
从上图中可以看出整个 Windows ML 的使用过程:
首先在云端或者本地处事器上训练模型,生成 ONNX 模型文件
把 ONNX 添加到本地开发环境,如 Visual Studio 中
在本地措施中通过 Windows 10 SDK 使用和评估 ONNX 模型的性能和学习功效
把集成了 ONNX 的本地措施颁布到 Windows 序列的全平台各类设备中
示例分析
Windows ML 的示例 Git 地点:GitHub Windows-Machine-Learning
上面的链接中也供给了 Windows Insider Preview 17110 OS、Windows 10 SDK 17110 和 Visual Studio 2017 的下载地点,凭据指示我下载安置好了开发环境。
来看第一个示例:MNIST_Demo,是一个手写数字识另外 UWP 措施,大家都知道,手写数字识别是 Machine Learning 的根本和入门课题,就像每种编程语言的 Hello World 一样,我们借这个示例来看一下 Windows ML 对付 ONNX 模型和 Windows 10 SDK 的使用过程。
首先来看一下示例在 Visual Studio 中的工程布局:
这里我们可以看到:
Universal Windows,也就是 Windows 10 SDK 的引用版本是:10.0.17110.0,也就是 Windows ML 撑持的最低版本预览版 SDK
mnist.onnx,也就是前面说明的 Windows ML 模型撑持格局,被直接添加到了解决方案中的 Assets 文件夹中,Build Action 为 “Content”
而在 mnist.cs 文件中