

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

# 对象检测超参数
<a name="object-detection-api-config"></a>

在 [https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_CreateTrainingJob.html) 请求中，您指定要使用的训练算法。您还可以指定特定于算法的超参数，用于帮助根据训练数据集估计模型的参数。下表列出了 Amazon A SageMaker I 提供的用于训练对象检测算法的超参数。有关对象训练工作原理的更多信息，请参阅[对象检测的工作原理](algo-object-detection-tech-notes.md)。


| 参数名称 | 说明 | 
| --- | --- | 
| num\_classes | 输出类的数量。此参数定义网络输出的维度，通常设置为数据集中的类别数。<br />**必填**<br />有效值：正整数 | 
| num\_training\_samples | 输入数据集中的训练样本数。 如果此值与训练设置中的样本数不匹配，则 `lr_scheduler_step` 参数的行为未定义，且分布式训练准确度可能会受影响。 <br />**必填**<br />有效值：正整数 | 
| base\_network | 要使用的基础网络架构。<br />**可选**<br />有效值：“vgg-16”或“resnet-50”<br />默认值：“vgg-16” | 
| early\_stopping | `True` 表示在训练期间使用提前停止逻辑。`False` 表示不使用它。<br />**可选**<br />有效值：`True` 或 `False`<br />默认值：`False` | 
| early\_stopping\_min\_epochs | 可以调用提前停止逻辑之前必须运行的最小纪元数。仅当 `early_stopping` = `True` 时使用它。<br />**可选**<br />有效值：正整数<br />默认值：10 | 
| early\_stopping\_patience | 如果在相关指标中没有改进，则在结束训练前等待的纪元数（如 `early_stopping_tolerance` 中的定义）。仅当 `early_stopping` = `True` 时使用它。<br />**可选**<br />有效值：正整数<br />默认值：5 | 
| early\_stopping\_tolerance | `validation:mAP` 的相对改进的容差值，要求超过平均精度 (mAP) 以避免提前停止。如果 mAP 变化除以上一个最佳 mAP 的比率小于 `early_stopping_tolerance` 值集，则提早停止会认为没有任何改进。仅当 `early_stopping` = `True` 时使用它。<br />**可选**<br />有效值：0 ≤ 浮点值 ≤ 1<br />默认值：0.0 | 
| image\_shape | 输入图像的图像大小。我们将输入图像重新缩放为具有此大小的方形图像。我们建议使用 300 和 512 来提高性能。<br />**可选**<br />有效值：正整数 ≥300<br />默认：300 | 
| epochs | 训练纪元数。<br />**可选**<br />有效值：正整数<br />默认：30 | 
| freeze\_layer\_pattern | 用于冻结基础网络中的层的正则表达式。例如，如果我们设置 `freeze_layer_pattern` = `"^(conv1_\|conv2_).*"`，则名称中包含 `"conv1_"` 或 `"conv2_"` 的任何层都将冻结，这意味着这些层的权重在训练期间不会更新。这些层名称可在网络符号文件 [vgg16-symbol.json](http://data.mxnet.io/models/imagenet/vgg/vgg16-symbol.json ) 和 [resnet-50-symbol.json](http://data.mxnet.io/models/imagenet/resnet/50-layers/resnet-50-symbol.json) 中找到。冻结层意味着其权重无法进一步修改。这可以显著减少训练时间，而不利的一面是准确性会有适度损失。该技术通常用于迁移学习，其中基础网络中的较低层不需要重新训练。<br />**可选**<br />有效值：字符串<br />默认值：不冻结层。 | 
| kv\_store | 分布式训练期间使用的权重更新同步模式。可对各机器同步或异步更新权重。同步更新通常比异步更新提供更好的准确率，但速度较慢。有关详细信息，请参阅[分布式训练](https://mxnet.apache.org/api/faq/distributed_training) MXNet 教程。 此参数不适用于单个机器训练。 <br />**可选**<br />有效值：`'dist_sync'` 或 `'dist_async'`[See the AWS documentation website for more details](http://docs.amazonaws.cn/sagemaker/latest/dg/object-detection-api-config.html)<br />默认：- | 
| label\_width | 用于跨训练和验证数据同步的强制填充标签宽度。例如，如果数据中的一个图像包含最多 10 个对象，并且每个对象的注释都指定了 5 个数字 [class\_id、left、top、width、height]，那么 `label_width` 应不小于（10 \* 5 \+ 标头信息长度）。标头信息长度通常是 2。我们建议使用稍大的 `label_width` 进行训练，例如本示例中为 60。<br />**可选**<br />有效值：正整数，应足够大以容纳数据中最大的注释信息长度。<br />默认值：350 | 
| learning\_rate | 初始学习率。<br />**可选**<br />有效值：(0, 1] 中的浮点值<br />默认值：0.001 | 
| lr\_scheduler\_factor | 用于减少学习率的比率。与定义为 `lr_new` 的 `lr_scheduler_step` 参数结合使用 = `lr_old` \* `lr_scheduler_factor`。<br />**可选**<br />有效值：(0, 1) 中的浮点值<br />默认值：0.1 | 
| lr\_scheduler\_step | 降低学习率的纪元。在逗号分隔的字符串中列出的纪元，按照 `lr_scheduler_factor` 减少学习率：“epoch1，epoch2...”。例如，如果将值设置为“10, 20”并且 `lr_scheduler_factor` 设置为 1/2，则学习率在第 10 纪元之后减半，然后在第 20 纪元之后再减半。<br />**可选**<br />有效值：字符串<br />默认值：空字符串 | 
| mini\_batch\_size | 训练的批次大小。在单机器多 GPU 设置中，每个 GPU 处理 `mini_batch_size`/`num_gpu` 个训练样本。对于 `dist_sync` 模式下的多机器训练，实际批次大小为 `mini_batch_size`\*机器数量。大的 `mini_batch_size` 值通常可加快训练速度，但它可能会导致内存不足问题。内存使用率与 `mini_batch_size`、`image_shape` 和 `base_network` 架构相关。例如，在单个 p3.2xlarge 实例上，不出现内存不足错误的最大 `mini_batch_size` 为 32，其中 base\_network 设置为“resnet-50”并且 `image_shape` 为 300。使用相同的实例，您可以将 `mini_batch_size` 设置为 64，使用基础网络 `vgg-16`，并将 `image_shape` 设置为 300。<br />**可选**<br />有效值：正整数<br />默认值：32 | 
| momentum | `sgd` 的动量。对其他优化程序则忽略。<br />**可选**<br />有效值：(0, 1] 中的浮点值<br />默认值：0.9 | 
| nms\_threshold | 非最大抑制阈值。<br />**可选**<br />有效值：(0, 1] 中的浮点值<br />默认值：0.45 | 
| optimizer | 优化程序类型。有关优化器值的详细信息，请参阅[MXNet的 API](https://mxnet.apache.org/api/python/docs/api/)。<br />**可选**<br />有效值：['sgd', 'adam', 'rmsprop', 'adadelta']<br />默认值：'sgd' | 
| overlap\_threshold | 评估重叠阈值。<br />**可选**<br />有效值：(0, 1] 中的浮点值<br />默认值：0.5 | 
| use\_pretrained\_model | 指明是否使用预先训练的模型进行训练。如果设置为 1，则加载具有架构的预先训练的模型并将其用于训练。否则，从头训练网络。<br />**可选**<br />有效值：0 或 1<br />默认：1 | 
| weight\_decay | `sgd` 和 `rmsprop` 的权重衰减系数。对其他优化程序则忽略。<br />**可选**<br />有效值：(0, 1) 中的浮点值<br />默认值：0.0005 | 