自動機械学習における Computer Vision タスクのハイパーパラメーター (v1)

適用対象:Python SDK azureml v1

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

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

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

次の表は、yolov5 アルゴリズム固有のハイパーパラメーターをまとめたものです。

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

注: サイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります。
640
model_size モデルのサイズ。
smallmediumlarge、または xlarge にする必要があります。

注: モデルのサイズが大きすぎる場合、トレーニングの実行が CUDA OOM になることがあります。
medium
multi_scale 画像サイズを +/-50% 変化させて、マルチスケール画像を有効にします
0 または 1 にする必要があります。

注: 十分な GPU メモリがない場合、トレーニングの実行が CUDA OOM になることがあります。
0
box_score_thresh 推論時に、box_score_thresh より大きいスコアを持つ提案のみが返されます。 スコアは、物体らしさのスコアと分類の確率を乗算したものです。
範囲 [0, 1] の float にする必要があります。
0.1
nms_iou_thresh 非最大抑制の後処理の推論時に使用される IOU しきい値。
範囲 [0, 1] の float にする必要があります。
0.5
tile_grid_size 各画像のタイルに使用するグリッド サイズ。
注: 小さな物体の検出ロジックを有効にするには、tile_grid_size を None にできません
文字列として渡される 2 つの整数のタプル。 例: --tile_grid_size "(3, 2)"
既定値なし
tile_overlap_ratio 各ディメンションの隣接するタイル間のオーバーラップ率。
[0, 1] の範囲の float にする必要があります。
0.25
tile_predictions_nms_thresh タイルおよび画像から予測をマージしながら 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 メモリで使用できる最大バッチ サイズです
grad_accumulation_step Gradient Accumulation とは、構成された数の grad_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
lr_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
amsgrad オプティマイザーが adam または adamw の場合に amsgrad を有効にします。
0 または 1 にする必要があります。
0
evaluation_frequency メトリック スコアを取得するために検証データセットを評価する頻度。
正の整数にする必要があります。
1
checkpoint_frequency モデル チェックポイントを格納する頻度。
正の整数にする必要があります。
検証に最適な主要メトリックによるエポックのチェックポイント。
checkpoint_run_id 増分トレーニング用に事前にトレーニングされたチェックポイントを含む実験の実行 ID。 既定値なし
checkpoint_dataset_id 増分トレーニング用に事前にトレーニングされたチェックポイントを含む FileDataset ID。 checkpoint_filenamecheckpoint_dataset_id と一緒に渡してください。 既定値なし
checkpoint_filename 増分トレーニング用の FileDataset 内の事前にトレーニングされたチェックポイント ファイル名。 checkpoint_dataset_idcheckpoint_filename と一緒に渡してください。 既定値なし
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
weighted_loss 重み付き損失がない場合は 0。
sqrt.(class_weights) による重み付き損失の場合は 1
class_weights による重み付き損失の場合は 2。
0 または 1 または 2 にする必要があります。
0
valid_resize_size
  • 検証データセット用にトリミングする前のサイズ変更先の画像のサイズ。
  • 正の整数にする必要があります。

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

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

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

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

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

    警告

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

    パラメーター名 説明 Default
    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_thresh 推論時に、box_score_thresh より大きい分類スコアを持つ提案のみが返されます。
    範囲 [0, 1] の float にする必要があります。
    0.3
    nms_iou_thresh 予測ヘッドの非最大抑制 (NMS) で使用される IOU (共用体の交差) しきい値。 推論時に使用されます。
    範囲 [0, 1] の float にする必要があります。
    0.5
    box_detections_per_img すべてのクラスで、画像あたりの最大検出数。
    正の整数にする必要があります。
    100
    tile_grid_size 各画像のタイルに使用するグリッド サイズ。
    注: 小さな物体の検出ロジックを有効にするには、tile_grid_size を None にできません
    文字列として渡される 2 つの整数のタプル。 例: --tile_grid_size "(3, 2)"
    既定値なし
    tile_overlap_ratio 各ディメンションの隣接するタイル間のオーバーラップ率。
    [0, 1] の範囲の float にする必要があります。
    0.25
    tile_predictions_nms_thresh タイルおよび画像から予測をマージしながら NMS を実行するために使用する IOU しきい値。 検証や推論で使用されます。
    [0, 1] の範囲の float にする必要があります。
    0.25

    次の手順