你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 AutoML 训练小物体检测模型(预览版)(v1)

适用于:Python SDK azureml 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

重要

此功能目前处于公开预览状态。 此预览版不附带服务级别协议。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

本文介绍如何训练物体检测模型,以使用 Azure 机器学习中的自动化 ML 检测高分辨率图像中的小物体。

通常,用于物体检测的计算机视觉模型适用于包含相对较大物体的数据集。 但是,由于内存和计算限制,这些模型在检测高分辨率图像中的小物体时往往表现不佳。 由于高分辨率图像通常很大,在输入到模型之前需要调整其大小,这就限制了模型检测较小物体(相对于初始图像大小而言)的能力。

为了帮助解决此问题,自动化 ML 支持公共预览版计算机视觉功能所包括的平铺功能。 自动化 ML 中的平铺功能基于用于小物体检测的平铺功能的效力中的概念。

平铺时,每个图像将分割成图块网格。 相邻的图块在宽度和高度的维度上彼此重叠。 图块是从原件中裁剪出来的,如下图所示。

Diagram that shows an image being divided into a grid of overlapping tiles.

先决条件

支持的模型

适用于物体检测任务的图像自动化 ML 支持的所有模型都支持使用平铺功能的小物体检测。

在训练期间启用平铺

若要启用平铺,可将 tile_grid_size 参数设置为类似于 (3, 2) 的值;其中 3 为宽度维度的图块数量,2 为高度维度的图块数量。 将此参数设置为 (3, 2) 时,每个图像将拆分为 3 x 2 的图块网格。 每个图块与相邻的图块重叠,因此落在图块边界上的任何物体将完全包含在一个图块中。 可以通过 tile_overlap_ratio 参数(默认值为 25%)控制这种重叠。

启用平铺后,整个图像以及从其生成的图块将通过模型传递。 将这些图像和图块馈送到模型之前,会根据 min_sizemax_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 值在推理期间生成图块。 整个图像和相应的图块将通过模型传递,其中的物体建议将会合并,以输出最终预测结果,如下图所示。

Diagram that shows object proposals from image and tiles being merged to form the final predictions.

注意

有可能会从多个图块中检测到同一个物体,可执行重复项检测来消除这种重复。

重复项检测是通过对图块和图像的建议运行 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.

后续步骤