在 本教程的上一阶段,我们讨论了创建自己的 Windows 机器学习模型和应用的先决条件,并下载了要使用的映像集。 在此阶段,我们将了解如何使用基于 Web 的自定义视觉界面将图像集转换为图像分类模型。
Azure 自定义视觉是一种图像识别服务,可用于生成、部署和改进自己的映像标识符。 自定义视觉服务以一组本机 SDK 的形式提供,并通过自定义视觉网站上的基于 Web 的界面提供。
创建自定义视觉资源和项目
创建自定义视觉资源
若要使用自定义视觉服务,需要在 Azure 中创建自定义视觉资源。
- 导航到 Azure 帐户的主页并选择
Create a resource
。
- 在搜索框中,搜索
Custom Vision
,即可进入 Azure 市场。 选择Create Custom Vision
打开“创建自定义视觉”页上的对话框窗口。
- 在“自定义视觉”对话框页上,选择以下内容:
- 选择资源
Training
和Prediction
。 - 选择要管理已部署资源的订阅。 如果未在菜单中看到 Azure 订阅,请使用打开帐户的相同凭据注销并重新打开 Azure 帐户。
- 创建新的资源组并为其命名。 在本教程中,我们将其命名为
MLTraining
,但如果您已有资源组,可以随意选择自己的名称或使用现有资源组。 - 为项目命名。 在本教程中,我们将它命名为
classificationApp
,但你可以使用任何你喜欢的名称。 - 对于这两个
Training
Prediction
资源,请将位置设置为(美国)美国东部,并将定价层设置为免费 FO。
- 按
Review + create
部署自定义视觉资源。 部署资源可能需要几分钟时间。
在自定义视觉中创建新项目
创建资源后,即可在自定义视觉中创建训练项目。
在 Web 浏览器中,导航到 “自定义视觉 ”页并选择
Sign in
。 使用用于登录 Azure 门户的同一帐户登录。选择
New Project
以打开新项目对话框。
- 创建一个新项目,如下所示:
-
Name
:食品分类。 -
Description
:不同类型的食物的分类。 -
Resource
:保留之前打开的相同资源 –ClassificationApp [F0]
。 -
Project Types
:classification
-
Classification 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 设备上本地运行它。