介绍
ML.NET是面向.NET开发人员的开源、跨平台机器学习框架。它使您可以将机器学习集成到您的.NET应用程序中,而无需离开.NET生态系统甚至无需拥有ML或数据科学背景。ML.NET提供了工具(Visual Studio和跨平台ML.NET CLI中的模型构建器UI),可根据您的场景和数据自动为您训练自定义机器学习模型。
ML.NET(1.5.2)的此版本带来了许多错误修复和增强功能,而工具更新包括通过模型构建器使用Azure ML训练对象检测模型的能力。现在,您还可以使用ML.NET CLI在本地训练图像分类模型。
在模型构建器(Model Builder)中进行对象检测
对象检测是计算机视觉问题。尽管与图像分类密切相关,但是对象检测可以更精细地执行图像分类。对象检测可以对图像中的实体进行定位和分类。当图像包含多个不同类型的对象时,请使用对象检测。
用于对象检测的一些用例包括:
- 无人驾驶汽车
- 机器人技术
- 人脸检测
- 工作场所安全
- 对象计数
- 活动识别
虽然以前ML.NET通过ML.NET API提供了使用经过预训练的TensorFlow和ONNX模型进行对象检测的功能,但是您现在可以在Visual Studio中使用模型构建器来利用Azure和AutoML的能力来训练自定义对象检测模型。
选择对象检测方案并在模型构建器中设置Azure ML工作区之后,必须输入数据。当前,模型构建器不提供注释图像的方法,因此您必须使用外部工具在训练图像中的对象周围绘制边界框。
如果您需要标记图像,我们建议尝试使用VoTT,这是一种用于图像和视频资产的开源注释和标记工具。
下载VoTT之后,您可以创建一个新的VoTT项目并从本地文件系统中选择一个数据集(Azure Blob存储和Bing图像搜索也是选项,但是模型构建器当前仅支持来自本地数据集的训练)。这只是一个文件夹,其中包含您要注释的所有图像。
为源连接(Source Connection)选择图像数据集的文件夹路径后,即可为目标连接选择输出文件夹。
您可以跳过视频设置,然后添加标签(您要在图像中检测到的所有对象):
保存项目后,将显示在源连接(Source Connection)文件夹中找到的所有图像,您可以像这样开始标记图像:
完成标记后,可以转到“导出”部分(左侧工具栏上的第4个图标),选择“VoTT JSON”作为提供者,选择“仅标记的资产”作为资产状态(包括图像是可选的)。当您单击“保存导出设置”时,将在创建VoTT项目期间指定的目标连接”文件夹中生成VoTT JSON。
VoTT JSON如下所示:
然后,您可以将此VoTT JSON用作模型构建器中“数据”步骤的数据集输入。
模型构建器当前仅接受由VoTT生成的JSON格式,但是我们计划在将来增加对更多格式的支持。如果您希望在模型构建器中看到一种支持对象检测的数据集格式,请将您的反馈意见保留在GitHub上。
输入数据并移至“模型构建器”中的“训练”步骤后,您可以单击“开始训练”,它将数据上传到Azure并开始使用Azure ML进行训练。培训完成后,将下载经过培训的ML.NET模型,以便您可以在本地对其进行测试。
在“评估”步骤中,您可以查看模型的准确性以及对测试图像进行预测:
每个检测到的边界框上显示的分数表示检测到的对象的置信度。例如,在上面的屏幕快照中,猫周围边界框上的分数表示该模型对检测到的对象是猫的把握率为77%。
可以使用阈值滑块增加或减少的分数阈值,将基于检测到的对象的分数添加和删除它们。例如,如果阈值为.51,则模型将仅显示得分/置信度为.51或更高的对象。随着阈值的增加,将看到更少的检测到的对象,而当阈值减小时,将看到更多检测到的对象。
对模型的性能满意后,可以在“模型构建器”的“代码”步骤中生成模型和使用代码,并将模型集成到最终用户应用程序中。
ML.NET CLI中的图像分类
除了分类,回归和推荐以外,您还可以使用跨平台ML.NET CLI在本地训练自定义图像分类模型。
该场景所需的全部就是您想要用于训练的图像数据集。例如,让我们看一下天气示例,您想在其中将图像分类为下雨、多云或晴天。
首先,您需要确保您的图片格式正确,该文件夹是一个将照片整理到单独的带标签的子文件夹中的文件夹,如下所示:
在这种情况下,每个文件夹包含30张相应天气的图像。
一旦有了数据集,就可以在ML.NET CLI中使用以下命令来开始训练:
mlnet image-classification --dataset “Weather-Small”
训练完成后,CLI将输出模型的准确性,并将生成必要的项目以供模型使用和重新训练:
ML.NET 1.5.2
上个月,我们发布了ML.NET 1.5.1,该版本的回归已由ML.NET 1.5.2修复。因此,我们建议您跳过1.5.1并更新为1.5.2。
此版本还解决了30多个报告的错误,并添加了ONNX增强功能以支持更多类型的ONNX导出。
您可以在1.5.2发行说明中看到更多信息。
反馈
我们很乐意倾听您的反馈!
如果您遇到任何问题,请在GitHub仓库中创建问题(或使用“模型构建器”中的新“反馈”按钮!)来通知我们:
入门和资源
在本教程中开始使用ML.NET 。
在Microsoft Docs中了解有关ML.NET和Model Builder的更多信息。
每隔一个星期三太平洋时间上午10点,收听机器学习.NET社区演讲。