对象检测超参数 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对象检测超参数

CreateTrainingJob 请求中,您指定要使用的训练算法。您还可以指定特定于算法的超参数,用于帮助根据训练数据集估计模型的参数。下表列出了 Amazon SageMaker 为训练对象检测算法提供的超参数。有关对象训练工作原理的更多信息,请参阅对象检测的工作原理

参数名称 Description
num_classes

输出类的数量。此参数定义网络输出的维度,通常设置为数据集中的类别数。

必填

有效值:正整数

num_training_samples

输入数据集中的训练样本数。

注意

如果此值与训练设置中的样本数不匹配,则 lr_scheduler_step 参数的行为未定义,且分布式训练准确度可能会受影响。

必填

有效值:正整数

base_network

要使用的基础网络架构。

可选

有效值:“vgg-16”或“resnet-50”

默认值:“vgg-16”

early_stopping

True:在训练期间使用提前停止逻辑。False 表示不使用它。

可选

有效值:True或者False

默认值:False

early_stopping_min_epochs

可以调用提前停止逻辑之前必须运行的最小纪元数。仅当 early_stopping = True 时使用它。

可选

有效值:正整数

默认值:10

early_stopping_patience

如果在相关指标中没有改进,则在结束训练前等待的纪元数(如 early_stopping_tolerance 中的定义)。仅当 early_stopping = True 时使用它。

可选

有效值:正整数

默认值:5

early_stopping_tolerance

validation:mAP 的相对改进的容差值,要求超过平均精度 (mAP) 以避免提前停止。如果 mAP 变化除以上一个最佳 mAP 的比率小于 early_stopping_tolerance 值集,则提早停止会认为没有任何改进。仅当 early_stopping = True 时使用它。

可选

有效值:0 ≤ 浮点值 ≤ 1

默认值:0.0

image_shape

输入图像的图像大小。我们将输入图像重新缩放为具有此大小的方形图像。我们建议使用 300 和 512 来提高性能。

可选

有效值:大于等于 300 的正整数

默认值:300

epochs

训练纪元数。

可选

有效值:正整数

默认值:30

freeze_layer_pattern

用于冻结基础网络中的层的正则表达式。例如,如果我们设置 freeze_layer_pattern = "^(conv1_|conv2_).*",则名称中包含 "conv1_""conv2_" 的任何层都将冻结,这意味着这些层的权重在训练期间不会更新。层名称可在网络符号文件 vgg16-symbol.jsonresnet-50-symbol.json 中找到。冻结层意味着其权重无法进一步修改。这可以显著减少训练时间,而不利的一面是准确性会有适度损失。此方法通常用于迁移学习,其中基础网络中的较低层不需要重新训练。

可选

有效值:字符串

默认值:不冻结层。

kv_store

分布式训练期间使用的权重更新同步模式。可对各机器同步或异步更新权重。同步更新通常比异步更新提供更好的准确率,但速度较慢。有关详细信息,请参阅分布式训练教程。MXNet

注意

此参数不适用于单个机器训练。

可选

有效值:'dist_sync'或者'dist_async'

  • 'dist_sync': 梯度在每个批次之后与所有工作线程同步。对于 'dist_sync',批次大小现在表示每台机器上使用的批次大小。因此,如果有 n 台机器,并且我们使用批次大小 b,则 dist_sync 行为类似于单个机器且批次大小为 n*b。

  • 'dist_async': 执行异步更新。每当从任何机器收到梯度时,权重就会更新,并且权重更新是原子更新。然而,该顺序并不能得到保证。

默认值:-

label_width

用于跨训练和验证数据同步的强制填充标签宽度。例如,如果数据中的一个图像包含最多 10 个对象,并且每个对象的注释都指定了 5 个数字 [class_id、left、top、width、height],那么 label_width 应不小于(10 * 5 + 标头信息长度)。标头信息长度通常是 2。我们建议使用稍大的 label_width 进行训练,例如本示例中为 60。

可选

有效值:正整数足够大,以容纳数据中最大的注释信息长度。

默认值:350

learning_rate

初始学习率。

可选

有效值:(0, 1] 中的浮点值

默认值:0.001

lr_scheduler_factor

用于减少学习率的比率。与定义为 lr_newlr_scheduler_step 参数结合使用 = lr_old * lr_scheduler_factor

可选

有效值:(0, 1) 中的浮点值

默认值:0.1

lr_scheduler_step

降低学习率的纪元。在逗号分隔的字符串中列出的纪元,按照 lr_scheduler_factor 减少学习率:“epoch1,epoch2...”。例如,如果将值设置为“10, 20”并且 lr_scheduler_factor 设置为 1/2,则学习率在第 10 纪元之后减半,然后在第 20 纪元之后再减半。

可选

有效值:字符串

默认值:空字符串

mini_batch_size

训练的批次大小。在单机器多 GPU 设置中,每个 GPU 处理 mini_batch_size/num_gpu 个训练样本。对于 dist_sync 模式下的多机器训练,实际批次大小为 mini_batch_size*机器数量。大的 mini_batch_size 值通常可加快训练速度,但它可能会导致内存不足问题。内存使用率与 mini_batch_sizeimage_shapebase_network 架构相关。例如,在单个 p3.2xlarge 实例上,不出现内存不足错误的最大 mini_batch_size 为 32,其中 base_network 设置为“resnet-50”并且 image_shape 为 300。使用相同的实例,您可以将 mini_batch_size 设置为 64,使用基础网络 vgg-16,并将 image_shape 设置为 300。

可选

有效值:正整数

默认值:32

momentum

的动量。sgd 对于其他优化程序则忽略。

可选

有效值:(0, 1] 中的浮点值

默认值:0.9

nms_threshold

非最大抑制阈值。

可选

有效值:(0, 1] 中的浮点值

默认值:是

optimizer

优化程序类型。有关优化程序值的详细信息,请参阅 MXNet 的 API

可选

有效值:['sgd', 'adam', 'rmsprop', 'adadelta']

默认值:'sgd'

overlap_threshold

评估重叠阈值。

可选

有效值:(0, 1] 中的浮点值

默认值:0.5

use_pretrained_model

指明是否使用预先训练的模型进行训练。如果设置为 1,则加载具有架构的预先训练的模型并将其用于训练。否则,从头训练网络。

可选

有效值:0 或 1

默认值:1

weight_decay

sgd 的权重衰减系数。rmsprop 对于其他优化程序则忽略。

可选

有效值:(0, 1) 中的浮点值

默认值:0.0055