自動機械学習におけるコンピューター ビジョン タスクのハイパーパラメーター

適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)

自動 ML 実験でコンピューター ビジョン タスク専用として使用可能なハイパーパラメーターを確認します。

Computer Vision タスクのサポートによって、モデル アーキテクチャを制御して、ハイパーパラメーターをスイープできます。 これらのモデル アーキテクチャとハイパーパラメーターは、スイープのためのパラメーター空間として渡されます。 公開されているハイパーパラメーターの多くはモデルに依存しませんが、ハイパーパラメーターがタスク固有またはモデル固有の場合があります。

モデル固有のハイパーパラメーター

次の表は、yolov5 アーキテクチャ固有のハイパーパラメーターをまとめたものです。

パラメーター名 説明 Default
validation_metric_type 検証メトリックに使用するメトリック計算方法。
nonecocovoc、または coco_voc にする必要があります。
voc
validation_iou_threshold 検証メトリックを計算する際のボックス照合用の IOU しきい値。
[0.1, 1] の範囲の浮動小数にする必要があります。
0.5
image_size トレーニングおよび検証用の画像サイズ。
正の整数にする必要があります。

注: サイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります。
640
model_size モデルのサイズ。
smallmediumlarge、または 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.0125
vitb16r224: 0.0125
vitl16r224: 0.001 を除く)

複数ラベル: 0.035
(vit-variants:
vits16r224: 0.025
vitb16r224: 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 オプティマイザーの種類。
sgdadamadamw のいずれかにする必要があります。
sgd
momentum オプティマイザーが sgd の場合のモメンタムの値。
範囲 [0, 1] の float にする必要があります。
0.9
weight_decay オプティマイザーが sgdadam、または 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 手元の画像分類タスクに使用されるモデル名。

次のいずれかにする必要があります。mobilenetv2resnet18resnet34resnet50resnet101resnet152resnest50resnest101seresnextvits16r224vitb16r224vitl16r224
seresnext
weighted_loss - 重み付き損失がない場合は 0。
- sqrt.(class_weights) による重み付き損失の場合は 1。
- class_weights による重み付き損失の場合は 2。
- 0 または 1 または 2 にする必要があります。
0
validation_resize_size - 検証データセット用にトリミングする前のサイズ変更先画像サイズ。
- 正の整数にする必要があります。

注意:
- seresnext は任意のサイズを取りません。
- サイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります
"。
256
validation_crop_size - 検証データセット用にニューラル ネットワークに入力する画像トリミング サイズ。
- 正の整数にする必要があります。

注意:
- seresnext は任意のサイズを取りません。
- "ViT-バリアント" は同じ validation_crop_sizetraining_crop_size を持つ必要があります。
- サイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります
"。
224
training_crop_size - トレーニング データセット用にニューラル ネットワークに入力する画像トリミング サイズ。
- 正の整数にする必要があります。

注意:
- seresnext は任意のサイズを取りません。
- "ViT-バリアント" は同じ validation_crop_sizetraining_crop_size を持つ必要があります。
- サイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります
"。
224

オブジェクト検出タスクとインスタンス セグメント化タスク固有のハイパーパラメーター

次のハイパーパラメーターは、物体検出とインスタンス セグメント化のタスク用です。

警告

これらのパラメーターは、yolov5 アーキテクチャではサポートされていません。 yolov5 でサポートされるハイパーパラメーターについては、「モデル固有のハイパーパラメーター」のセクションを参照してください。

パラメーター名 説明 Default
model_name 手元の画像分類タスクに使用されるモデル名。
- オブジェクト検出タスクの場合は、次のいずれかである必要があります。yolov5fasterrcnn_resnet18_fpnfasterrcnn_resnet34_fpnfasterrcnn_resnet50_fpnfasterrcnn_resnet101_fpnfasterrcnn_resnet152_fpnretinanet_resnet50_fpn
- インスタンスのセグメント化タスクの場合は、次のいずれかである必要があります。maskrcnn_resnet18_fpnmaskrcnn_resnet34_fpnmaskrcnn_resnet50_fpnmaskrcnn_resnet101_fpnmaskrcnn_resnet152_fpn
- 物体検出タスクの場合は、fasterrcnn_resnet50_fpn
- インスタンスのセグメント化タスクの場合は、maskrcnn_resnet50_fpn
validation_metric_type 検証メトリックに使用するメトリック計算方法。
nonecocovoc、または 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

次の手順