ML.NET 九月更新
ML.NET是一个开源的跨平台机器学习框架,ML.NET 1.5.2 版本工具更新包括通过模型生成器使用 Azure ML 训练对象检测模型的能力。现在您还可以使用 ML.NET CLI 本地训练图像模型。
模型生成器中的对象检测
对象检测是计算机视觉问题。对象检测虽然与图像分类密切相关,但以更精细的规模执行图像分类。对象检测可定位和分类图像中的实体。当图像包含不同类型的多个对象时请使用对象检测。
对象检测的一些用例包括:
- 自驾汽车
- 机器人
- 人脸检测
- 工作场所安全
- 对象计数
- 活动识别
虽然以前 ML.NET 提供了通过 ML.NET API 使用预先训练的 TensorFlow 和 ONNX 模型进行对象检测的能力,但现在您可以使用 Visual Studio 中的模型生成器来训练具有 Azure 和 AutoML 功能的自定义对象检测模型。
在模型生成器中选择对象检测方案并设置 Azure ML 工作区后,必须输入数据。目前,模型生成器不提供注释图像的方法,因此必须使用外部工具在训练图像中的对象周围绘制边界框。
如果您需要标记图像,我们建议您尝试 VoTT,一个开源注释和标签工具的图像和视频资产。
下载 VoTT 后,您可以创建一个新的 VoTT 项目,从本地文件系统中选择数据集(Azure Blob 存储和必应图像搜索也是选项,但模型生成器目前仅支持本地数据集中的训练)。这只是一个文件夹,其中包含您要注释的所有图像。为源连接选择图像数据集的文件夹路径后,然后可以选择"目标连接"的输出文件夹。您可以跳过"视频设置",然后添加标签(您希望在图像中检测到的任何对象):
保存项目后,将显示"源连接"文件夹中的所有图像,您可以开始按以下方法标记图像:
完成标记后,可以转到"导出"部分(左侧工具栏上的第 4 个图标),选择"VoTT JSON"作为提供程序,选择"仅标记资产"作为资产状态(包括图像是可选的)。当您点击"保存导出设置"时,VoTT JSON 将在 VoTT 项目创建期间指定的"目标连接"文件夹中生成。
Vott Json 如下所示:
然后,您可以使用此 VoTT JSON 作为模型生成器中数据步骤的数据集输入。
模型生成器目前只接受由 VoTT 生成的 JSON 格式,但我们计划在将来添加对更多格式的支持。如果要在模型生成器中看到受支持的对象检测数据集格式,请将反馈留在 GitHub 上。
输入数据并移动到模型生成器中的"训练"步骤后,可以点击"开始训练",该训练器将数据上传到 Azure,然后开始使用 Azure ML 的训练。训练完成后,将下载 ML.NET模型,以便可以在本地测试。在"评估"步骤中,您可以查看模型的准确性,并预测测试图像:
每个检测到的界框上显示的分数指示检测到的对象的置信度。例如,在上面的屏幕截图中,猫周围的边界框上的得分表示模型 77% 确信检测到的对象是猫。
分数阈值(可以使用阈值滑块增加或降低)将基于其分数添加和删除检测到的对象。例如,如果阈值为 .51,则模型将仅显示分数/置信度为 .51 或以上的对象。增加阈值时,将看到检测较少的对象;随着阈值的降低,将看到更多检测到的对象。
对模型的性能感到满意后,可以在模型生成器中的"代码"步骤中生成模型和消耗代码,并将模型集成到最终用户应用程序中。
在 CLI 中ML.NET分类
除了分类、回归和建议之外,还可以使用 CLI 的跨平台 ML.NET 本地训练自定义图像分类模型。
此方案所需的只是要用于训练的图像数据集。例如,让我们看看天气示例,在其中要将图像分类为雨、多云或晴天。
首先,您需要确保图像格式正确,这是一个文件夹,用于将照片组织成分隔的标记子文件夹,像这样:
在这种情况下,每个文件夹包含 30 个相应天气的图像。获得数据集后,可以使用 CLI 中的以下命令 ML.NET 开始训练:
mlnet image-classification --dataset “Weather-Small”
训练结束后,CLI 将输出模型的准确性,并生成模型消耗和重新训练所需的项目:
上个月,我们宣布 ML.NET 1.5.1版本,我们建议您跳过 1.5.1 并更新到 1.5.2。此版本还关闭了 30 多个报告的错误,并添加了 ONNX 增强功能,以支持 ONNX 导出的更多类型。你可以在1.5.2发行说明中看到更多。
入门和资源
开始学习ML.NET并了解有关 Microsoft 文档中ML.NET模型生成器。