自動機械学習におけるコンピューター ビジョン タスクのハイパーパラメーター
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
自動 ML 実験でコンピューター ビジョン タスク専用として使用可能なハイパーパラメーターを確認します。
Computer Vision タスクのサポートによって、モデル アーキテクチャを制御して、ハイパーパラメーターをスイープできます。 これらのモデル アーキテクチャとハイパーパラメーターは、スイープのためのパラメーター空間として渡されます。 公開されているハイパーパラメーターの多くはモデルに依存しませんが、ハイパーパラメーターがタスク固有またはモデル固有の場合があります。
モデル固有のハイパーパラメーター
次の表は、yolov5
アーキテクチャ固有のハイパーパラメーターをまとめたものです。
パラメーター名 | 説明 | Default |
---|---|---|
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] の float にする必要があります。 |
0.1 |
nms_iou_threshold |
非最大抑制の後処理の推論時に使用される IOU しきい値。 範囲 [0, 1] の float にする必要があります。 |
0.5 |
tile_grid_size |
各画像のタイルに使用するグリッド サイズ。 注: 小さな物体の検出ロジックを有効にするには、tile_grid_size を None にできません "3x2" 形式の文字列として渡す必要があります。 例: --tile_grid_size '3x2' |
既定値なし |
tile_overlap_ratio |
各ディメンションの隣接するタイル間のオーバーラップ率。 [0, 1] の範囲の float にする必要があります。 |
0.25 |
tile_predictions_nms_threshold |
タイルおよび画像から予測をマージしながら NMS を実行するために使用する IOU しきい値。 検証や推論で使用されます。 [0, 1] の範囲の float にする必要があります。 |
0.25 |
次の表は、推論中のインスタンスのセグメント化に関する maskrcnn_*
固有のハイパーパラメーターをまとめたものです。
パラメーター名 | 説明 | Default |
---|---|---|
mask_pixel_score_threshold |
ピクセルをオブジェクトのマスクの一部とするためのスコア カットオフ。 | 0.5 |
max_number_of_polygon_points |
マスクから変換した後のポリゴン内の (x, y) 座標ペアの最大数。 | 100 |
export_as_image |
マスクをイメージとしてエクスポートします。 | × |
image_type |
マスクをエクスポートするイメージの種類 (jpg、png、bmp から選択)。 | JPG |
モデルに依存しないハイパーパラメーター
次の表に、モデルに依存しないハイパーパラメーターについて説明します。
パラメーター名 | 説明 | Default |
---|---|---|
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 とは、構成された数の gradient_accumulation_step を、モデルの重みを更新せずに実行し、それと同時にそれらのステップの勾配を蓄積して、その蓄積された勾配を使用して重みの更新を計算することを意味します。 正の整数にする必要があります。 |
1 |
early_stopping |
トレーニング中に早期停止ロジックを有効にします。 0 または 1 にする必要があります。 |
1 |
early_stopping_patience |
実行を停止するまでの主要メトリックの改善がない エポックまたは検証評価の最小数。 正の整数にする必要があります。 |
5 |
early_stopping_delay |
早期停止のために主要メトリックの改善が追跡されるまで、 待機するエポックまたは検証評価の最小数。 正の整数にする必要があります。 |
5 |
learning_rate |
初期学習率。 範囲 [0, 1] の float にする必要があります。 |
複数クラス: 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 の場合のガンマの値。範囲 [0, 1] の float にする必要があります。 |
0.5 |
step_lr_step_size |
学習率スケジューラが step の場合のステップ サイズの値。正の整数にする必要があります。 |
5 |
warmup_cosine_lr_cycles |
学習率スケジューラが warmup_cosine の場合のコサイン周期の値。 範囲 [0, 1] の float にする必要があります。 |
0.45 |
warmup_cosine_lr_warmup_epochs |
学習率スケジューラが warmup_cosine の場合のウォームアップ エポックの値。 正の整数にする必要があります。 |
2 |
optimizer |
オプティマイザーの種類。 sgd 、adam 、adamw のいずれかにする必要があります。 |
sgd |
momentum |
オプティマイザーが sgd の場合のモメンタムの値。 範囲 [0, 1] の float にする必要があります。 |
0.9 |
weight_decay |
オプティマイザーが sgd 、adam 、または adamw の場合の荷重減衰の値。 範囲 [0, 1] の float にする必要があります。 |
1e-4 |
nesterov |
オプティマイザーが sgd の場合に nesterov を有効にします。 0 または 1 にする必要があります。 |
1 |
beta1 |
オプティマイザーが adam または adamw の場合の beta1 の値。 範囲 [0, 1] の float にする必要があります。 |
0.9 |
beta2 |
オプティマイザーが adam または adamw の場合の beta2 の値。範囲 [0, 1] の float にする必要があります。 |
0.999 |
ams_gradient |
オプティマイザーが adam または adamw の場合に ams_gradient を有効にします。0 または 1 にする必要があります。 |
0 |
evaluation_frequency |
メトリック スコアを取得するために検証データセットを評価する頻度。 正の整数にする必要があります。 |
1 |
checkpoint_frequency |
モデル チェックポイントを格納する頻度。 正の整数にする必要があります。 |
検証に最適な主要メトリックによるエポックのチェックポイント。 |
checkpoint_run_id |
増分トレーニング用に事前にトレーニングされたチェックポイントを含む実験の実行 ID。 | 既定値なし |
layers_to_freeze |
モデルで凍結するレイヤーの数。 たとえば、seresnext の値として 2 を渡すことは、それ以下のサポートされているモデル レイヤー情報を表している 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.'] |
既定値なし |
画像分類 (複数クラスおよび複数ラベル) 固有のハイパーパラメーター
次の表に、画像分類 (複数クラスおよび複数ラベル) タスクのハイパーパラメーターをまとめています。
パラメーター名 | 説明 | Default |
---|---|---|
model_name |
手元の画像分類タスクに使用されるモデル名。 次のいずれかにする必要があります。 mobilenetv2 、resnet18 、resnet34 、resnet50 、resnet101 、resnet152 、resnest50 、resnest101 、seresnext 、vits16r224 、vitb16r224 、vitl16r224 。 |
seresnext |
weighted_loss |
- 重み付き損失がない場合は 0。 - sqrt による加重損失の場合は 1。(class_weights) - class_weights による重み付き損失の場合は 2。 - 0 または 1 または 2 にする必要があります。 |
0 |
validation_resize_size |
- 検証データセット用にトリミングする前のサイズ変更先画像サイズ。 - 正の整数にする必要があります。 注: - seresnext は任意のサイズを取りません。 - サイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります"。 |
256 |
validation_crop_size |
- 検証データセット用にニューラル ネットワークに入力する画像トリミング サイズ。 - 正の整数にする必要があります。 注: - seresnext は任意のサイズを取りません。 - "ViT-バリアント" は同じ validation_crop_size と training_crop_size を持つ必要があります。 - サイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります"。 |
224 |
training_crop_size |
- トレーニング データセット用にニューラル ネットワークに入力する画像トリミング サイズ。 - 正の整数にする必要があります。 注: - seresnext は任意のサイズを取りません。 - "ViT-バリアント" は同じ validation_crop_size と training_crop_size を持つ必要があります。 - サイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります"。 |
224 |
オブジェクト検出タスクとインスタンス セグメント化タスク固有のハイパーパラメーター
次のハイパーパラメーターは、物体検出とインスタンス セグメント化のタスク用です。
警告
これらのパラメーターは、yolov5
アーキテクチャではサポートされていません。 yolov5
でサポートされるハイパーパラメーターについては、「モデル固有のハイパーパラメーター」のセクションを参照してください。
パラメーター名 | 説明 | Default |
---|---|---|
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] の float にする必要があります。 |
0.3 |
nms_iou_threshold |
予測ヘッドの非最大抑制 (NMS) で使用される IOU (共用体の交差) しきい値。 推論時に使用されます。 範囲 [0, 1] の float にする必要があります。 |
0.5 |
box_detections_per_image |
すべてのクラスで、画像あたりの最大検出数。 正の整数にする必要があります。 |
100 |
tile_grid_size |
各画像のタイルに使用するグリッド サイズ。 - 注: 小さな物体の検出ロジックを有効にするには、 tile_grid_size を None にできません。- インスタンス セグメント化タスクでは、 tile_grid_size はサポートされていません。"3x2" 形式の文字列として渡す必要があります。 例: --tile_grid_size '3x2' |
既定値なし |
tile_overlap_ratio |
各ディメンションの隣接するタイル間のオーバーラップ率。 [0, 1] の範囲の float にする必要があります。 |
0.25 |
tile_predictions_nms_threshold |
タイルおよび画像から予測をマージしながら NMS を実行するために使用する IOU しきい値。 検証や推論で使用されます。 [0, 1] の範囲の float にする必要があります。 |
0.25 |