使用 AutoML 训练小物体检测模型(预览版)(v1)
重要
本文中的一些 Azure CLI 命令使用适用于 Azure 机器学习的 azure-cli-ml
或 v1 扩展。 对 v1 扩展的支持将于 2025 年 9 月 30 日结束。 在该日期之前,你将能够安装和使用 v1 扩展。
建议在 2025 年 9 月 30 日之前转换为 ml
或 v2 扩展。 有关 v2 扩展的详细信息,请参阅 Azure ML CLI 扩展和 Python SDK v2。
重要
此功能目前处于公开预览状态。 此预览版不附带服务级别协议。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款。
本文介绍如何训练物体检测模型,以使用 Azure 机器学习中的自动化 ML 检测高分辨率图像中的小物体。
通常,用于物体检测的计算机视觉模型适用于包含相对较大物体的数据集。 但是,由于内存和计算限制,这些模型在检测高分辨率图像中的小物体时往往表现不佳。 由于高分辨率图像通常很大,在输入到模型之前需要调整其大小,这就限制了模型检测较小物体(相对于初始图像大小而言)的能力。
为了帮助解决此问题,自动化 ML 支持公共预览版计算机视觉功能所包括的平铺功能。 自动化 ML 中的平铺功能基于用于小物体检测的平铺功能的效力中的概念。
平铺时,每个图像将分割成图块网格。 相邻的图块在宽度和高度的维度上彼此重叠。 图块是从原件中裁剪出来的,如下图所示。
先决条件
Azure 机器学习工作区。 若要创建工作区,请参阅创建工作区资源。
本文假设你对如何为计算机视觉任务配置自动化机器学习试验有一定的了解。
支持的模型
适用于物体检测任务的图像自动化 ML 支持的所有模型都支持使用平铺功能的小物体检测。
在训练期间启用平铺
若要启用平铺,可将 tile_grid_size
参数设置为类似于 (3, 2) 的值;其中 3 为宽度维度的图块数量,2 为高度维度的图块数量。 将此参数设置为 (3, 2) 时,每个图像将拆分为 3 x 2 的图块网格。 每个图块与相邻的图块重叠,因此落在图块边界上的任何物体将完全包含在一个图块中。 可以通过 tile_overlap_ratio
参数(默认值为 25%)控制这种重叠。
启用平铺后,整个图像以及从其生成的图块将通过模型传递。 将这些图像和图块馈送到模型之前,会根据 min_size
和 max_size
参数调整其大小。 由于需要处理这些额外的数据,计算时间将成比例增加。
例如,当 tile_grid_size
参数为 (3, 2) 时,计算时间将比不进行平铺时大约高 7 倍。
可以在超参数空间中以字符串的形式指定 tile_grid_size
的值。
parameter_space = {
'model_name': choice('fasterrcnn_resnet50_fpn'),
'tile_grid_size': choice('(3, 2)'),
...
}
tile_grid_size
参数的值取决于图像维度以及图像中物体的大小。 例如,当图像中包含较小物体时,增大图块数量会有帮助。
若要为数据集选择此参数的最佳值,可以使用超参数搜索。 为此,可以在超参数空间中为此参数指定所选值。
parameter_space = {
'model_name': choice('fasterrcnn_resnet50_fpn'),
'tile_grid_size': choice('(2, 1)', '(3, 2)', '(5, 3)'),
...
}
在推理期间平铺
部署在启用平铺的情况下训练的模型时,在推理期间也会发生平铺。 自动化 ML 使用训练中的 tile_grid_size
值在推理期间生成图块。 整个图像和相应的图块将通过模型传递,其中的物体建议将会合并,以输出最终预测结果,如下图所示。
注意
有可能会从多个图块中检测到同一个物体,可执行重复项检测来消除这种重复。
重复项检测是通过对图块和图像的建议运行 NMS 来执行的。 当多个建议重叠时,将选取分数最高的一个,其他建议将作为重复项被丢弃。如果两个建议之间的交并比 (iou) 大于 tile_predictions_nms_thresh
参数,则认为两者是重叠的。
还可以选择仅在推理期间启用平铺,而不在训练中启用。 为此,请仅在推理期间设置 tile_grid_size
参数,而在训练时则不设置它。
这样可以针对某些数据集来提高性能,并且可以避免在训练时由于使用平铺而产生额外成本。
平铺超参数
下面是可用于控制平铺功能的参数。
参数名称 | 说明 | 默认 |
---|---|---|
tile_grid_size |
用于平铺每个图像的网格大小。 在训练、验证和推理期间可用。 作为字符串传递的、由两个整数构成的元组,例如 '(3, 2)' 注意:设置此参数会成比例增加计算时间,因为模型将会处理所有图块和图像。 |
无默认值 |
tile_overlap_ratio |
控制每个维度中相邻图块之间的重叠率。 如果落在图块边界上的物体太大,因而无法完全放入其中一个图块,请增大此参数的值,使物体至少完全放入其中一个图块。 必须是 [0, 1) 范围内的浮点数。 |
0.25 |
tile_predictions_nms_thresh |
在合并图块和图像的预测时,用于执行非最大抑制 (nms) 的交并比阈值。 在验证和推理期间可用。 如果在最终预测中检测到了每个物体有多个框,请更改此参数。 必须是 [0, 1] 范围内的浮点数。 |
0.25 |
示例笔记本
有关设置和训练物体检测模型的详细代码示例,请参阅物体检测示例笔记本。
注意
本文中的所有图像是根据 MIT 许可协议的“准许使用”部分提供的。 版权所有 © 2020 Roboflow, Inc.
后续步骤
- 详细了解如何以及在何处部署模型。
- 有关为每次作业提供的性能图表和指标的定义和示例,请参阅评估自动化机器学习试验结果。
- 教程:使用 AutoML 和 Python 训练物体检测模型(预览版)。
- 请参阅哪些超参数可用于计算机视觉任务。
- 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测