自动化机器学习中计算机视觉任务的超参数
适用范围:Azure CLI ml 扩展 v2(当前版本)Python SDK azure-ai-ml v2(当前版本)
了解哪些超参数可专门用于自动化 ML 试验中的计算机视觉任务。
借助对计算机视觉任务的支持,可以控制模型体系结构和扫描超参数。 这些模型体系结构和超参数将作为参数空间传入以进行扫描。 虽然公开的许多超参数与模型无关,但在某些情况下,超参数特定于模型或特定于任务。
特定于模型的超参数
下表汇总了特定于 yolov5
体系结构的超参数。
参数名称 | 说明 | 默认 |
---|---|---|
validation_metric_type |
用于验证指标的指标计算方法。 必须为 none 、coco 、voc 或 coco_voc 。 |
voc |
validation_iou_threshold |
计算验证指标时框匹配的 IOU 阈值。 必须是 [0.1, 1] 范围内的浮点数。 |
0.5 |
image_size |
用于训练和验证的图像大小。 必须是正整数。 注意:如果大小太大,训练运行可能会遇到 CUDA OOM 错误。 |
640 |
model_size |
模型大小。 必须为 small 、 medium 、large 或 extra_large 。 注意:如果模型大小太大,训练运行可能会遇到 CUDA OOM 错误。 |
medium |
multi_scale |
通过在 +/- 50% 范围内改变图像大小来启用多比例图像 必须为 0 或 1。 注意:如果 GPU 内存不足,训练运行可能会遇到 CUDA OOM 错误。 |
0 |
box_score_threshold |
在推理期间,仅返回分数大于 box_score_threshold 的建议。 该分数是对象性分数和分类概率的乘积。 必须是 [0, 1] 范围内的浮点数。 |
0.1 |
nms_iou_threshold |
在非最大抑制后处理中进行推理期间使用的 IOU 阈值。 必须是 [0, 1] 范围内的浮点数。 |
0.5 |
tile_grid_size |
用于平铺每个图像的网格大小。 注意:若要启用小物体检测逻辑,tile_grid_size 不得为 None 应以“3x2”格式作为字符串传递。 示例:--tile_grid_size '3x2' |
无默认值 |
tile_overlap_ratio |
每个维度中相邻图块之间的重叠率。 必须是 [0, 1) 范围内的浮点数 |
0.25 |
tile_predictions_nms_threshold |
合并图块和图像的预测结果时用于执行 NMS 的 IOU 阈值。 在验证/推理中使用。 必须是 [0, 1] 范围内的浮点数 |
0.25 |
下表汇总了特定于 maskrcnn_*
的超参数,用于推理期间的实例分段。
参数名称 | 说明 | 默认 |
---|---|---|
mask_pixel_score_threshold |
记录将像素作为部分对象掩码的临界分数。 | 0.5 |
max_number_of_polygon_points |
从掩码转换后,多边形中 (x, y) 坐标对的最大数量。 | 100 |
export_as_image |
将掩码导出为图像。 | 错误 |
image_type |
掩码导出为的图像类型(选项有 jpg、png、bmp)。 | JPG |
与模型无关的超参数
下表描述了与模型无关的超参数。
参数名称 | 说明 | 默认 |
---|---|---|
number_of_epochs |
训练循环数。 必须是正整数。 |
15 ( yolov5 除外:30) |
training_batch_size |
训练批大小。 必须是正整数。 |
多类/多标签:78 (vit-variants 除外: vits16r224 :128 vitb16r224 :48 vitl16r224 :10)物体检测:2 ( yolov5 除外:16) 实例分段:2 注意:默认值是可以在 12 GiB GPU 内存上使用的最大批大小。 |
validation_batch_size |
验证批大小。 必须是正整数。 |
多类/多标签:78 (vit-variants 除外: vits16r224 :128 vitb16r224 :48 vitl16r224 :10)物体检测:1 ( yolov5 除外:16) 实例分段:1 注意:默认值是可以在 12 GiB GPU 内存上使用的最大批大小。 |
gradient_accumulation_step |
梯度累积是指在累积这些步骤的梯度的同时运行所配置数量的 gradient_accumulation_step (不更新模型权重),然后使用累积的梯度来计算权重更新。 必须是正整数。 |
1 |
early_stopping |
在训练期间启用提前停止逻辑。 必须为 0 或 1。 |
1 |
early_stopping_patience |
在运行停止之前未经过主要指标 改进的最小循环数或验证评估数。 必须是正整数。 |
5 |
early_stopping_delay |
在跟踪主要指标改进以便提前停止之前 要等待完成的最小循环数或验证评估数。 必须是正整数。 |
5 |
learning_rate |
初始学习速率。 必须是 [0, 1] 范围内的浮点数。 |
多类:0.01 (vit-variants 除外: vits16r224 :0.0125vitb16r224 :0.0125vitl16r224 :0.001) 多标签:0.035 (vit-variants 除外: vits16r224 :0.025vitb16r224 :0.025 vitl16r224 :0.002) 物体检测:0.005 ( yolov5 除外:0.01) 实例分段:0.005 |
learning_rate_scheduler |
学习速率计划程序的类型。 必须为 warmup_cosine 或 step 。 |
warmup_cosine |
step_lr_gamma |
学习速率计划程序为 step 时的 gamma 值。必须是 [0, 1] 范围内的浮点数。 |
0.5 |
step_lr_step_size |
学习速率计划程序为 step 时的步长大小值。必须是正整数。 |
5 |
warmup_cosine_lr_cycles |
学习速率计划程序为 warmup_cosine 时的余弦周期值。 必须是 [0, 1] 范围内的浮点数。 |
0.45 |
warmup_cosine_lr_warmup_epochs |
学习速率计划程序为 warmup_cosine 时的预热循环值。 必须是正整数。 |
2 |
optimizer |
优化器的类型。 必须为 sgd 、adam 或 adamw 。 |
sgd |
momentum |
优化器为 sgd 时的动量值。 必须是 [0, 1] 范围内的浮点数。 |
0.9 |
weight_decay |
优化器为 sgd 、adam 或 adamw 时的权重衰减值。 必须是 [0, 1] 范围内的浮点数。 |
1e-4 |
nesterov |
当优化器为 sgd 时启用 nesterov 。 必须为 0 或 1。 |
1 |
beta1 |
当优化器为 adam 或 adamw 时的 beta1 值。 必须是 [0, 1] 范围内的浮点数。 |
0.9 |
beta2 |
当优化器为 adam 或 adamw 时的 beta2 值。必须是 [0, 1] 范围内的浮点数。 |
0.999 |
ams_gradient |
当优化器为 adam 或 adamw 时启用 ams_gradient 。必须为 0 或 1。 |
0 |
evaluation_frequency |
评估验证数据集以获得指标分数所遵循的频率。 必须是正整数。 |
1 |
checkpoint_frequency |
存储模型检查点所遵循的频率。 必须是正整数。 |
验证时具有最佳主要指标的循环中的检查点。 |
checkpoint_run_id |
具有用于增量训练的预训练检查点的试验的运行 ID。 | 无默认值 |
layers_to_freeze |
要为模型冻结的层数。 例如,传递 2 作为 seresnext 值意味着冻结引用下面的受支持模型层信息的 layer0 和 layer1。 必须是正整数。 - 'resnet' :[('conv1.', 'bn1.'), 'layer1.', 'layer2.', 'layer3.', 'layer4.'] - 'mobilenetv2' : ['features.0.', 'features.1.', 'features.2.', 'features.3.', 'features.4.', 'features.5.', 'features.6.', 'features.7.', 'features.8.', 'features.9.', 'features.10.', 'features.11.', 'features.12.', 'features.13.', 'features.14.', 'features.15.', 'features.16.', 'features.17.', 'features.18.'] - 'seresnext' : ['layer0.', 'layer1.', 'layer2.', 'layer3.', 'layer4.'] * 'vit' : ['patch_embed', 'blocks.0.', 'blocks.1.', 'blocks.2.', 'blocks.3.', 'blocks.4.', 'blocks.5.', 'blocks.6.','blocks.7.', 'blocks.8.', 'blocks.9.', 'blocks.10.', 'blocks.11.'] * 'yolov5_backbone' : ['model.0.', 'model.1.', 'model.2.', 'model.3.', 'model.4.','model.5.', 'model.6.', 'model.7.', 'model.8.', 'model.9.'] - 'resnet_backbone' :['backbone.body.conv1.', 'backbone.body.layer1.', 'backbone.body.layer2.','backbone.body.layer3.', 'backbone.body.layer4.'] |
无默认值 |
图像分类(多类和多标签)特定的超参数
下表汇总了图像分类(多类和多标签)任务的超参数。
参数名称 | 说明 | 默认 |
---|---|---|
model_name |
要用于手头图像分类任务的模型名称。 必须是以下项之一: mobilenetv2 、resnet18 、resnet34 、resnet50 、resnet101 、resnet152 、resnest50 、resnest101 、seresnext 、vits16r224 、vitb16r224 、vitl16r224 。 |
seresnext |
weighted_loss |
- 0 表示无加权损失。 - 1 表示使用 sqrt.(class_weights) 计算的加权损失 - 2 表示使用 class_weights 计算的加权损失。 - 必须为 0、1 或 2。 |
0 |
validation_resize_size |
- 在为验证数据集裁剪之前要将图像调整到的大小。 - 必须是正整数。 说明: - seresnext 不取任意大小。 - 如果大小太大,训练运行可能会遇到 CUDA OOM 错误。 |
256 |
validation_crop_size |
- 输入到神经网络的用于验证数据集的图像裁剪大小。 - 必须是正整数。 说明: - seresnext 不取任意大小。 - ViT-variants 应该有相同的 validation_crop_size 和 training_crop_size 。 - 如果大小太大,训练运行可能会遇到 CUDA OOM 错误。 |
224 |
training_crop_size |
- 输入到神经网络的用于训练数据集的图像裁剪大小。 - 必须是正整数。 说明: - seresnext 不取任意大小。 - ViT-variants 应该有相同的 validation_crop_size 和 training_crop_size 。 - 如果大小太大,训练运行可能会遇到 CUDA OOM 错误。 |
224 |
对象检测和实例分段任务特定的超参数
以下超参数用于物体检测和实例分段任务。
警告
yolov5
体系结构不支持这些参数。 有关 yolov5
支持的超参数,请参阅模型特定的超参数部分。
参数名称 | 说明 | 默认 |
---|---|---|
model_name |
要用于手头图像分类任务的模型名称。 - 对于对象检测任务,必须是以下项之一: yolov5 、fasterrcnn_resnet18_fpn 、fasterrcnn_resnet34_fpn 、fasterrcnn_resnet50_fpn 、fasterrcnn_resnet101_fpn 、fasterrcnn_resnet152_fpn 、retinanet_resnet50_fpn 。 - 对于实例分段任务,必须是以下项之一: maskrcnn_resnet18_fpn 、maskrcnn_resnet34_fpn 、maskrcnn_resnet50_fpn 、maskrcnn_resnet101_fpn 、maskrcnn_resnet152_fpn |
- 对于对象检测任务,必须是 fasterrcnn_resnet50_fpn - 对于实例分段任务,必须是 maskrcnn_resnet50_fpn |
validation_metric_type |
用于验证指标的指标计算方法。 必须为 none 、coco 、voc 或 coco_voc 。 |
voc |
validation_iou_threshold |
计算验证指标时框匹配的 IOU 阈值。 必须是 [0.1, 1] 范围内的浮点数。 |
0.5 |
min_size |
在将图像馈送到主干之前要将其重新缩放到的最小大小。 必须是正整数。 注意:如果大小太大,训练运行可能会遇到 CUDA OOM 错误。 |
600 |
max_size |
在将图像馈送到主干之前要将其重新缩放到的最大大小。 必须是正整数。 注意:如果大小太大,训练运行可能会遇到 CUDA OOM 错误。 |
1333 |
box_score_threshold |
在推理期间,仅返回分类分数大于 box_score_threshold 的建议。 必须是 [0, 1] 范围内的浮点数。 |
0.3 |
nms_iou_threshold |
预测头的非最大抑制 (NMS) 中使用的 IOU(交并比)阈值。 在推理期间使用。 必须是 [0, 1] 范围内的浮点数。 |
0.5 |
box_detections_per_image |
所有类的每个图像的最大检测次数。 必须是正整数。 |
100 |
tile_grid_size |
用于平铺每个图像的网格大小。 若要启用小物体检测逻辑,- tile_grid_size 不得为“无”。实例分段任务不支持 - tile_grid_size 。应以“3x2”格式作为字符串传递。 示例:--tile_grid_size '3x2' |
无默认值 |
tile_overlap_ratio |
每个维度中相邻图块之间的重叠率。 必须是 [0, 1) 范围内的浮点数 |
0.25 |
tile_predictions_nms_threshold |
合并图块和图像的预测结果时用于执行 NMS 的 IOU 阈值。 在验证/推理中使用。 必须是 [0, 1] 范围内的浮点数 |
0.25 |