使用自定义视觉训练模型

本教程的上一阶段,我们讨论了创建自己的 Windows 机器学习模型和应用的先决条件,并下载了要使用的映像集。 在此阶段,我们将了解如何使用基于 Web 的自定义视觉界面将图像集转换为图像分类模型。

Azure 自定义视觉是一种图像识别服务,可用于生成、部署和改进自己的映像标识符。 自定义视觉服务以一组本机 SDK 的形式提供,并通过自定义视觉网站上的基于 Web 的界面提供。

创建自定义视觉资源和项目

创建自定义视觉资源

若要使用自定义视觉服务,需要在 Azure 中创建自定义视觉资源。

  1. 导航到 Azure 帐户的主页并选择 Create a resource

Azure 资源选择

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

包选择

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

部署新的自定义视觉资源

在自定义视觉中创建新项目

创建资源后,即可在自定义视觉中创建训练项目。

  1. 在 Web 浏览器中,导航到 “自定义视觉 ”页并选择 Sign in。 使用用于登录 Azure 门户的同一帐户登录。

  2. 选择 New Project 以打开新项目对话框。

新建项目

  1. 创建一个新项目,如下所示:
  • Name:食品分类。
  • Description:不同类型的食物的分类。
  • Resource:保留之前打开的相同资源 – ClassificationApp [F0]
  • Project Types: classification
  • Classification Types: Multilabel (Multiple tags per image)
  • DomainsFood (compact)
  • Export Capabilities: Basic platforms (Tensorflow, CoreML, ONNX, ...)

注释

若要导出到 ONNX 格式,请确保选择域 Food (compact) 。 无法将非压缩域导出到 ONNX。

重要

如果已登录帐户与 Azure 帐户相关联,资源组下拉列表将显示包含自定义视觉服务资源的所有 Azure 资源组。 如果没有可用的资源组,请确认已使用用于登录 Azure 门户的同一帐户登录到 customvision.ai。

  1. 填写对话框后,选择 Create project

完成项目

上传训练数据集

创建项目后,你将从 Kaggle Open 数据集上传之前准备的食物图像数据集。

  1. 选择您的 FoodClassification 项目以打开自定义视觉网站的网页界面。

  2. 选择 Add images 按钮并选择 Browse local files

“添加图像”对话框

  1. 导航到图像数据集的位置并选择训练文件夹 – vegetable-fruit。 选择文件夹中的所有图像,然后选择 open。 标记选项将打开。

  2. vegetable-fruit字段中输入My Tags并按Upload

上传图像

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

图像上传进度

  1. 成功上传第一组图像后,再重复此过程两次,上传甜点和汤的图像。 请确保使用相关标记对其进行标记。

最后,你将有三组不同的图像可供训练。

图像标记显示

训练模型分类器

现在,你将训练模型,以便从上一部分下载的图像集中对蔬菜、汤和甜点进行分类。

  1. 若要启动训练过程,请从右上角选择 Train 按钮。 分类器将使用图像创建一个模型,用于标识每个标记的视觉质量。

“训练”按钮

可以选择使用左上角的滑块更改概率阈值。 概率阈值设置预测需要具有的置信度级别,以便视为正确。 如果概率阈值设定得过高,您将会得到更多正确的分类结果,但检测到的数量会更少。 另一方面,如果概率阈值过低,你将检测到更多的分类,但置信度较低或产生更多误报结果。

在本教程中,可以将概率阈值保持在 50%。

  1. 在这里,我们将使用 Quick Training 过程。 Advanced Training 具有更多设置,并允许你专门设置用于训练的时间,但此处不需要该级别的控制。 按键 Train 启动训练过程。

选择训练类型

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

培训过程

评估和测试

评估结果

训练完成后,你将看到第一次训练迭代的摘要。 它包括模型性能的估计 - 精度召回率。

  • 精确度表示已识别的正确分类的分数。 在我们的模型中,精度为 98.2%,因此,如果模型对图像进行分类,则很可能正确预测。
  • 召回率表示正确识别的实际分类的分数。 在我们的模型中,召回率为 97.5%,因此模型正确地将呈现的绝大多数图像分类到其中。
  • AP 代表其他性能。 这提供了一个额外的指标,用于汇总不同阈值的精度和召回率。

模型训练评估

测试模型

导出模型之前,可以测试其性能。

  1. 选择 Quick Test 顶部菜单栏右上角,打开新的测试窗口。

“测试”按钮

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

选择要测试的图像

  1. 选择 Browse local files、导航到食品数据集并打开验证文件夹。 从 fruit-vegetable 文件夹中选择任意随机图像,然后按 open

测试结果将显示在屏幕上。 在我们的测试中,模式已成功将图像分类为 99.8% 确定性。

测试分类结果

可以在选项卡中使用预测进行训练 Predictions ,从而提高模型性能。 有关详细信息,请参阅 如何改进分类器

注释

有兴趣了解有关 Azure 自定义视觉 API 的详细信息? 自定义视觉服务文档提供有关自定义视觉 Web 门户和 SDK 的详细信息。

将模型导出到 ONNX

训练模型后,即可将其导出到 ONNX。

  1. 选择 Performance 选项卡,然后选择 Export 打开导出窗口。

“导出”按钮

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

选择格式

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

选择平台

  1. 打开下载的 .zip 文件并从中提取 model.onnx 文件。 此文件包含你的分类器模型。

祝贺! 已成功生成和导出分类模型。

后续步骤

现在我们已经有了一个分类模型,下一步是 生成 Windows 应用程序并在 Windows 设备上本地运行它