使用自定义视觉和 Windows 机器学习进行图像分类
本指南介绍如何训练神经网络模型以使用 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 徽标键 + 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 开放数据集的食物图像数据集。 该数据集依据公共领域许可证分发。
重要
要使用该数据集,需要遵守 Kaggle 网站的使用条款和 Food-11
数据集本身附带的许可条款。 Microsoft 对该网站或该数据集不提供任何保证或陈述。
该数据集分为三个部分(评估、训练和验证),包含 16,643 张食物图像,分为 11 个主要食物类别。 每一类食物数据集中的图像都放在一个单独的文件夹中,这使得你可以更加方便地训练模型。
从 Food-11 图像数据集下载数据集。 请注意,该数据集的大小约为 1 GB,你可能需要在 Kaggle 网站上创建一个帐户才能下载数据。
如有需要,可以使用任何其他相关图像数据集。 作为最低要求,我们建议在初始训练集中每个标记使用至少 30 张图像。 此外还需要收集一些额外的图像,以便在训练模型后测试模型。
此外,请确保所有训练图像满足以下条件:
.jpg
、.png
、.bmp
或.gif
格式。- 大小不超过 6 MB(预测图像大小为 4 MB)。
- 最短的边不小于 256 像素;任何小于此像素的图像都将通过自定义视觉服务自动纵向扩展。
后续步骤
现在,你已将准备好必备项和数据集,接下来便可以开始创建 Windows ML 模型。 在下一部分(使用自定义视觉训练模型),你将使用基于 Web 的自定义视觉界面来创建和训练分类模型。