使用 ML.NET 训练模型

本教程的前一阶段中,我们讨论了创建你自己的 Windows 机器学习模型和应用的先决条件,并下载了要使用的图像集。 在此阶段,我们将了解如何使用 ML.NET Model Builder 将图像集转换为图像分类模型。

创建项目

  1. 打开 Visual Studio 并选择“创建新项目”。

Create a new project for the Model Builder

  1. 在搜索栏键入 .NET,选择 C# 作为语言,选择控制台作为平台,然后选择 C# 控制台应用 (.NET Core) 项目模板。

Create a new .NET project

  1. 在配置窗口中:
  • 为项目命名。 此处,我们将其命名为 MLNETTraining
  • 选择项目的位置。
  • 请确保 Place solution and project in the same directory 处于未选中状态。
  • create 创建项目。

Configure your new project

设置 Model Builder

现在,需要将 Model Builder 添加到项目中。

  1. 在解决方案资源管理器中右键单击 MLNETTraining 项目,然后选择“Add > Machine Learning

Add machine learning to your project

这样便可以在 Visual Studio 的新停靠工具窗口中打开 ML.NET Model Builder。 Model Builder 将指导你完成构建机器学习模型的过程。

List of model builder scenarios

第一步是选择相关的方案。 并非所有方案都支持 ONNX 格式。

如果训练环境为 Azure 云,则生成的模型采用 ONNX 格式,Windows ML 应用无需转换即可轻松使用。 但是,如果你决定在计算机上本地训练机器学习模型,则生成的模型将采用 ML.NET 格式。

  • 除对象检测外,所有方案都支持本地 CPU 训练。
  • 图像分类支持本地 GPU 训练。
  • 图像分类和对象检测支持 Azure 训练。

在本教程中,将在 Azure 训练环境中训练图像分类模型。 输出模型将采用 ONNX 格式。 需要 Azure 帐户来完成训练。

  1. 选择图像分类方案。

  2. 选择“设置工作区”以设置 Azure 训练环境。

Set up your Azure workspace

在右上角,登录到与 Azure 订阅关联的帐户。 在下面的菜单中:

  • 选择相关订阅。
  • 选择并创建新的机器学习工作区。
  • 选择或创建新的计算资源。
  • 为工作区指定名称 - ImageClassificationMLNET。

Configure your Azure workspace

重要

如果无法从 Model Builder 创建机器学习工作区,请按照以下步骤从 Azure 门户手动创建工作区。 否则,可以跳到步骤 4。

在 Azure 帐户中,选择“创建资源”:

Available Azure resources

在搜索栏中,查找机器学习。

Search for Machine Learning in the Azure resource list

按“创建”创建新的机器学习工作区。

The Azure Machine Learning resource

要创建新工作区,需要提供订阅名称,选择或创建新资源组,为工作区命名并定义所有必需参数,例如区域、存储帐户等。

Set up your Azure ML workspace

在 ML.NET 中建立工作区并创建新的训练环境后,即可进入下一步。

The ML.NET training environment

等待机器学习服务部署完成。

下一步是将数据添加到 Model Builder。

  1. 导航到图像数据集的位置并选择包含相关食物类别的训练文件夹。 在本教程中,你将训练模型以识别甜点、汤和水果,因此你只需要包含这些类别的数据文件夹。

Add data to your ML model

现在,你已准备就绪,可以进入训练部分了!

训练模型

Model Builder 使用不同算法和设置评估多个模型,为你提供性能最佳的模型。

  1. 依次选择“下一步”和“开始训练”以启动训练过程。 ML.NET Model Builder 首先将数据上传到 Azure,准备工作区,然后启动训练过程。

Train your Machine Learning model

训练完成后,你将看到训练结果的摘要。

Successful model training

最佳准确性 - 显示 Model Builder 找到的最佳模型的准确性。 准确性越高,意味着模型对测试数据的预测越准确。 在我们的示例中,模型能够以 95.42% 的置信度预测正确结果。

评估结果

  1. 转到下一步以评估训练结果。

  2. 从数据集的评估文件夹中选择图像并浏览预测。

Model evaluation results

将模型添加到解决方案

ML.NET Model Builder 可以自动将机器学习模型以及用于训练和使用模型的项目添加到解决方案中。

  1. 导航到训练过程的使用部分,并选择“添加到解决方案”。 这会将生成的模型添加到解决方案文件夹中。

Add your model to your solution

在解决方案资源管理器中,应会看到 Model Builder 生成的代码文件,包括模型 - bestModel.onnx(ONNX 格式)。

Your model displayed in the solution explorer

模型在 Azure 云环境中进行训练,因此生成的模型采用 ONNX 格式。

探索模型

  1. 右键单击 bestModel.onnx,然后选择“打开包含文件夹”。

  2. 使用 Netron 程序打开模型文件。

  3. 按 input1 节点以打开模型属性。

Exploring the properties of your model

如你所见,该模型需要 32 位浮点张量(多维数组)对象作为输入,并返回张量浮点数作为输出。 按照构建模型的方式,它不返回预测标签的字符串值,而是一个由三个数字组成的数组,每个数字代表食物类型的相关标签。 需要提取这些值来显示 Windows ML 应用的正确预测。

标签 1 标签 2 标签 3
0 1 2
甜点 蔬菜 - 水果

后续步骤

现在你已对机器学习模型进行了训练,你已准备好使用 Windows 机器学习将其部署到 UWP 应用中