本指南介绍如何:训练神经网络模型以使用 Azure 自定义视觉服务对食物的图像进行分类;将模型导出到 ONNX 格式;并在 Windows 设备上本地运行的 Windows 机器学习(Windows ML)应用程序中部署模型。 你不需要以前在机器学习方面的专业知识! 我们将逐步指导你完成该过程。
如果想要了解如何使用自定义视觉生成和训练模型,则可以继续 训练模型。
如果你有模型,并且想要了解如何从头开始创建 Windows ML 应用,请参阅完整的 Windows ML 应用教程。
如果要从 Windows ML 应用的预先存在的 Visual Studio 项目开始,可以克隆 自定义视觉和 Windows ML 教程示例应用,并将其用作起点。
情景
在本教程中,我们将创建在 Windows 设备上运行的机器学习食品分类应用程序。 将训练模型以识别某些类型的模式来对食物的图像进行分类,当给定图像时,它将返回分类标记和该分类的相关百分比置信度值。
模型训练的先决条件
若要生成和训练模型,需要订阅 Azure 自定义视觉服务。
如果不熟悉 Azure,可以注册 Azure 免费帐户。 这样,你便有机会使用 Azure AI 生成、训练和部署机器学习模型。
小窍门
是否有兴趣详细了解 Azure 注册选项和 Azure 免费帐户? 然后查看 创建 Azure 帐户。
Windows ML 应用部署的先决条件
若要创建和部署 Windows ML 应用,需要满足以下条件:
- Windows 10 版本 1809(内部版本 17763)或更高版本。 可以查看内部版本号,方法是通过 Run 命令 (Windows logo key + R) 运行
winver
。 - 适用于内部版本 17763 或更高版本的 Windows SDK。 若要下载,请参阅 Windows SDK。
- Visual Studio 2017 版本 15.7 或更高版本;但我们建议使用 Visual Studio 2022 或更高版本。 本教程中的一些屏幕截图可能与你将看到的 UI 不同。 若要下载 Visual Studio,请参阅 适用于 Windows 开发的下载和工具。
- Windows ML 代码生成器 (
mlgen
) Visual Studio 扩展。 下载 Visual Studio 2019 或更高版本或 Visual Studio 2017。 - 如果你决定创建通用 Windows 平台(UWP)应用,则需要在 Visual Studio 中启用通用 Windows 平台开发工作负载。
- 在电脑上启用开发人员模式 - 请参阅 “启用设备进行开发”。
注释
Windows ML API 内置于最新版本的 Windows 10(1809 或更高版本)和 Windows Server 2019 中。 如果目标平台是较旧版本的 Windows,则可以将 Windows ML 应用移植到可再发行的 NuGet 包(Windows 8.1 或更高版本)。
准备数据
必须使用现有数据训练机器学习模型。 在本指南中,你将使用 Kaggle Open 数据集中的食品图像数据集。 该数据集根据公共域许可证进行分发。
重要
若要使用此数据集,您需要遵守 Kaggle 站点的使用条款以及该数据集附带的 Food-11
许可协议。 Microsoft对网站或此数据集不作任何保证或表示。
数据集有三个拆分(评估、训练和验证),包含 16,643 张分组为 11 个主要食品类别的食物图像。 每个类别食品数据集中的图像放置在单独的文件夹中,这使得模型训练过程更加方便。
从 Food-11 图像数据集 中下载数据集。 数据集的大小约为 1GB,可能需要在 Kaggle 网站上创建一个帐户来下载数据。
如果愿意,欢迎使用任何其他相关图像数据集。 我们建议在初始训练集中,每个标签至少使用 30 张图像。 在训练模型后,你还需要收集一些额外的图像来测试模型。
此外,请确保所有训练图像都满足以下条件:
.jpg
、.png
、.bmp
或.gif
格式。- 大小不超过 6MB(预测图像最大为 4MB)。
- 不少于 256 像素在最短边缘;任何比这短的图像都会被自定义视觉服务自动放大。
后续步骤
现在,你已对先决条件进行了整理,并已准备好数据集,接下来可以继续创建 Windows ML 模型。 在下一部分(使用自定义视觉训练模型),你将使用基于 Web 的自定义视觉界面来创建和训练分类模型。