在 本教程的上一阶段,我们讨论了创建自己的 Windows 机器学习模型和应用的先决条件,并下载了要使用的映像集。 在此阶段,我们将了解如何使用基于 Web 的自定义视觉界面将图像集转换为图像分类模型。
Azure 自定义视觉是一种图像识别服务,可用于生成、部署和改进自己的映像标识符。 自定义视觉服务以一组本机 SDK 的形式提供,并通过自定义视觉网站上的基于 Web 的界面提供。
创建自定义视觉资源和项目
创建自定义视觉资源
若要使用自定义视觉服务,需要在 Azure 中创建自定义视觉资源。
- 导航到 Azure 帐户的主页并选择
Create a resource。

- 在搜索框中,搜索
Custom Vision,即可进入 Azure 市场。 选择Create Custom Vision打开“创建自定义视觉”页上的对话框窗口。

- 在“自定义视觉”对话框页上,选择以下内容:
- 选择资源
Training和Prediction。 - 选择用于管理已部署资源的订阅。 如果未在菜单中看到 Azure 订阅,请使用打开帐户的相同凭据注销并重新打开 Azure 帐户。
- 创建新的资源组并为其命名。 在本教程中,我们将其命名为
MLTraining,但如果您已有资源组,可以随意选择自己的名称或使用现有资源组。 - 为项目命名。 在本教程中,我们将它命名为
classificationApp,但你可以使用任何你喜欢的名称。 - 对于这两个
TrainingPrediction资源,请将位置设置为(美国)美国东部,并将定价层设置为免费 FO。
- 按
Review + create部署自定义视觉资源。 部署资源可能需要几分钟时间。

在自定义视觉中创建新项目
创建资源后,即可在自定义视觉中创建训练项目。
在 Web 浏览器中,导航到 “自定义视觉 ”页并选择
Sign in。 使用用于登录 Azure 门户的同一帐户登录。选择
New Project以打开新项目对话框。

- 创建一个新项目,如下所示:
Name:食品分类。Description:不同类型的食物的分类。Resource:保留之前打开的相同资源 –ClassificationApp [F0]。Project Types:classificationClassification Types:Multilabel (Multiple tags per image)Domains:Food (compact)。Export Capabilities:Basic platforms (Tensorflow, CoreML, ONNX, ...)
注释
若要导出到 ONNX 格式,请确保选择域 Food (compact) 。 无法将非压缩域导出到 ONNX。
重要
如果已登录帐户与 Azure 帐户相关联,资源组下拉列表将显示包含自定义视觉服务资源的所有 Azure 资源组。 如果没有可用的资源组,请确认已使用用于登录 Azure 门户的同一帐户登录到 customvision.ai。
- 填写对话框后,选择
Create project。

上传训练数据集
创建项目后,你将从 Kaggle Open 数据集上传之前准备的食物图像数据集。
选择您的
FoodClassification项目以打开自定义视觉网站的网页界面。选择
Add images按钮并选择Browse local files。

导航到图像数据集的位置并选择训练文件夹 –
vegetable-fruit。 选择文件夹中的所有图像,然后选择open。 标记选项将打开。在
vegetable-fruit字段中输入My Tags并按Upload。

等待第一组图像上传到项目后,再按 done。 标记选择将应用于已选择上传的整个图像组。 这就是为什么从已构建的图像组上传图像更容易。 上传各个图像后,始终可以更改这些图像的标记。

- 成功上传第一组图像后,再重复此过程两次,上传甜点和汤的图像。 请确保使用相关标记对其进行标记。
最后,你将有三组不同的图像可供训练。

训练模型分类器
现在,你将训练模型,以便从上一部分下载的图像集中对蔬菜、汤和甜点进行分类。
- 若要启动训练过程,请从右上角选择
Train按钮。 分类器将使用图像创建一个模型,用于标识每个标记的视觉质量。

可以选择使用左上角的滑块更改概率阈值。 概率阈值设置预测需要具有的置信度级别,以便视为正确。 如果概率阈值设定得过高,您将会得到更多正确的分类结果,但检测到的数量会更少。 另一方面,如果概率阈值过低,你将检测到更多的分类,但置信度较低或产生更多误报结果。
在本教程中,可以将概率阈值保持在 50%。
- 在这里,我们将使用
Quick Training过程。Advanced Training具有更多设置,并允许你专门设置用于训练的时间,但此处不需要该级别的控制。 按键Train启动训练过程。

快速训练过程只需几分钟才能完成。 在此期间,有关训练过程的信息将显示在 Performance 选项卡中。

评估和测试
评估结果
训练完成后,你将看到第一次训练迭代的摘要。 它包括模型性能的估计 - 精度 和 召回率。
- “精度”指示已识别分类的分数是否正确。 在我们的模型中,精度为 98.2%,因此,如果模型对图像进行分类,则很可能正确预测。
- “召回率”指示正确识别的实际分类的分数。 在我们的模型中,查全率为 97.5%,因此模型对呈现给它的绝大多数图像进行了正确分类。
- AP 代表其他性能。 这提供了一个额外的指标,用于汇总不同阈值的精度和召回率。

测试模型
导出模型之前,可以测试其性能。
- 选择
Quick Test顶部菜单栏右上角,打开新的测试窗口。

在此窗口中,可以提供要测试的图像的 URL,或选择要 Browse local files 使用本地存储的图像。

- 选择
Browse local files、导航到食品数据集并打开验证文件夹。 从fruit-vegetable文件夹中选择任意随机图像,然后按open。
测试结果将显示在屏幕上。 在我们的测试中,该模式以 99.8% 的确定性成功地对图像进行了分类。

可以在选项卡中使用预测进行训练 Predictions ,从而提高模型性能。 有关详细信息,请参阅 如何改进分类器。
注释
有兴趣了解有关 Azure 自定义视觉 API 的详细信息? 自定义视觉服务文档提供有关自定义视觉 Web 门户和 SDK 的详细信息。
将模型导出到 ONNX
训练模型后,即可将其导出到 ONNX。
- 选择
Performance选项卡,然后选择Export打开导出窗口。

- 选择
ONNX将模型导出到 ONNX 格式。

- 如果需要,可以选择
ONNX 16浮动选项,但在本教程中,我们不需要更改任何设置。 选择Export and Download。

- 打开下载的 .zip 文件并从中提取
model.onnx文件。 此文件包含分类器模型。
祝贺! 已成功生成和导出分类模型。
后续步骤
现在我们已经有了一个分类模型,下一步是 生成 Windows 应用程序并在 Windows 设备上本地运行它。