在自動化機器學習中電腦視覺工作的超參數

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

了解哪些超參數特別適用於自動化 ML 實驗中的電腦視覺工作。

透過支援電腦視覺工作,您可以控制模型架構和掃掠超參數。 這些模型架構和超參數會當做掃掠的參數空間傳入。 雖然許多公開的超參數都與模型無關,但還是有一些執行個體,其中的超參數是模型特有的或工作特有的。

模型特定超參數

下表摘要說明架構特有的 yolov5 超參數。

參數名稱 描述 預設
validation_metric_type 要用於驗證計量的計量計算方法。
必須是 nonecocovoccoco_voc
voc
validation_iou_threshold 計算驗證計量時,用於方塊比對的 IOU 閾值。
必須是範圍 [0.1, 1] 內的浮點數。
0.5
image_size 用於定型和驗證的影像大小。
必須是正整數。

注意:如果大小太大,則定型執行可能會進入 CUDA OOM.
640
model_size 模型大小。
必須是 smallmediumlargeextra_large

注意:如果模型大小太大,則定型執行可能會進入 CUDA OOM.
medium
multi_scale 藉由將影像大小改變 +/-50%,來啟用多尺度影像
必須是 0 或 1。

注意:如果沒有足夠的 GPU 記憶體,則定型執行可能會進入 CUDA OOM
0
box_score_threshold 推斷期間,只會傳回分數大於 box_score_threshold 的提案。 分數是客觀性分數和分類機率的乘積。
必須是範圍 [0, 1] 內的浮點數。
0.1
nms_iou_threshold 推斷期間用於非最大歸併後置處理的 IOU 閾值。
必須是範圍 [0, 1] 內的浮點數。
0.5
tile_grid_size 要用於每個並排影像的格線大小。
注意:tile_grid_size 不得 None,以啟用小型物件偵測邏輯
應以 '3x2' 格式的字串形式傳遞。 Example: --tile_grid_size '3x2'
無預設值
tile_overlap_ratio 每個維度中相鄰圖格之間的重疊比例。
必須是範圍 [0, 1] 內的浮點數
0.25
tile_predictions_nms_threshold 從圖格和影像合併預測時用來執行 NMS 的 IOU 閾值。 用於驗證/推斷。
必須是範圍 [0, 1] 內的浮點數
0.25

此表格總結推斷期間執行個體分割的特定 maskrcnn_* 超參數。

參數名稱 描述 預設
mask_pixel_score_threshold 將像素視為物件遮罩一部分的分數截止。 0.5
max_number_of_polygon_points 從遮罩轉換後,多邊形 (x、y) 座標組合的最大數目。 100
export_as_image 將遮罩匯出為影像。 False
image_type 將遮罩匯出為影像類型 (選項為 jpg、png、bmp)。 JPG

與模型無關的超參數

下表描述與模型無關的超參數。

參數名稱 描述 預設
number_of_epochs 定型 Epoch 的數目。
必須是正整數。
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_step 數目,而不需更新模型權重,同時累積這些步驟的梯度,然後使用累積的梯度來計算權重更新。
必須是正整數。
1
early_stopping 在定型期間啟用提早停止邏輯。
必須是 0 或 1。
1
early_stopping_patience Epoch 或驗證評估的數目下限,
在停止執行之前,沒有任何主要計量改進。
必須是正整數。
5
early_stopping_delay 要等候的 Epoch 或驗證評估的數目下限,
然後追蹤主要計量改進是否提早停止。
必須是正整數。
5
learning_rate 初始學習速率。
必須是範圍 [0, 1] 內的浮點數。
多類別: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_cosinestep
warmup_cosine
step_lr_gamma 學習速率排程器為 step 時 Gamma 的值。
必須是範圍 [0, 1] 內的浮點數。
0.5
step_lr_step_size 學習速率排程器為 step 時步進大小的值。
必須是正整數。
5
warmup_cosine_lr_cycles 學習速率排程器為 warmup_cosine 時餘弦函數週期的值。
必須是範圍 [0, 1] 內的浮點數。
0.45
warmup_cosine_lr_warmup_epochs 學習速率排程器為 warmup_cosine 時預熱 Epoch 的值。
必須是正整數。
2
optimizer 最佳化工具的類型。
必須是 sgdadamadamw
sgd
momentum 最佳化工具為 sgd 時動量的值。
必須是範圍 [0, 1] 內的浮點數。
0.9
weight_decay 最佳化工具為 sgdadamadamw 時權重衰減的值。
必須是範圍 [0, 1] 內的浮點數。
1e-4
nesterov 最佳化工具為 sgd 時啟用 nesterov
必須是 0 或 1。
1
beta1 最佳化工具為 adamadamwbeta1 的值。
必須是範圍 [0, 1] 內的浮點數。
0.9
beta2 最佳化工具為 adamadamwbeta2 的值。
必須是範圍 [0, 1] 內的浮點數。
0.999
ams_gradient 最佳化工具為 adamadamw 時啟用 ams_gradient
必須是 0 或 1。
0
evaluation_frequency 評估驗證資料集以取得計量分數的頻率。
必須是正整數。
1
checkpoint_frequency 儲存模型檢查點的頻率。
必須是正整數。
Epoch 中在驗證時具最佳主要計量的檢查點。
checkpoint_run_id 實驗的執行識別碼,具有累加式定型的預先定型檢查點。 沒有預設值
layers_to_freeze 您模型要凍結的層數。 例如,傳遞 2 作為 seresnext 的值,表示凍結 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.']
沒有預設值

影像分類 (多類別和多標籤) 特有的超參數

下表摘要說明影像分類 (多類別和多標籤) 工作的超參數。

參數名稱 描述 預設
model_name 用於手邊影像分類工作的模型名稱。

必須是 、、、 resnet34resnest50resnest101seresnextresnet50resnet101resnet152 、、 vitb16r224vits16r224vitl16r224mobilenetv2 其中一個。 resnet18
seresnext
weighted_loss - 0 沒有加權損失。
- 1 適用于 sqrt. (class_weights) 的加權損失
- 2 用於具有class_weights的加權損失。
- 必須是 0 或 1 或 2。
0
validation_resize_size - 在裁剪驗證資料集之前要調整大小的影像大小。
- 必須是正整數。

注意:
- seresnext 不會採用任意大小。
- 如果大小太大
,定型回合可能會進入 CUDA OOM。
256
validation_crop_size - 影像裁剪大小,這是用於驗證資料集的神經網路輸入。
- 必須是正整數。

注意:
- seresnext 不會採用任意大小。
- ViT-variants 應該具有相同 validation_crop_size 的 和 training_crop_size
- 如果大小太大
,定型回合可能會進入 CUDA OOM。
224
training_crop_size - 影像裁剪大小,這是用於訓練資料集的神經網路輸入。
- 必須是正整數。

注意:
- seresnext 不會採用任意大小。
- ViT-variants 應該具有相同 validation_crop_size 的 和 training_crop_size
- 如果大小太大
,定型回合可能會進入 CUDA OOM。
224

物件偵測和執行個體分割工作特有的超參數

下列超參數適用於物件偵測和執行個體分割工作。

警告

架構不支援 yolov5 這些參數。 如需 yolov5 支援的超參數,請參閱模型特有的超參數單元。

參數名稱 描述 預設
model_name 用於手邊影像分類工作的模型名稱。
- 針對物件偵測工作,必須是其中一個 yolov5fasterrcnn_resnet18_fpn 、、 fasterrcnn_resnet34_fpnfasterrcnn_resnet50_fpnfasterrcnn_resnet101_fpnfasterrcnn_resnet152_fpnretinanet_resnet50_fpn
- 針對實例分割工作,必須是其中 maskrcnn_resnet18_fpn 一個 、 maskrcnn_resnet34_fpnmaskrcnn_resnet50_fpn 、、 maskrcnn_resnet101_fpnmaskrcnn_resnet152_fpn
- 針對物件偵測工作, fasterrcnn_resnet50_fpn
- 針對實例分割工作, maskrcnn_resnet50_fpn
validation_metric_type 要用於驗證計量的計量計算方法。
必須是 nonecocovoccoco_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] 內的浮點數。
0.3
nms_iou_threshold 用於預測頁首的非最大歸併 (NMS) IOU (與聯合的交集) 閾值。 在推斷期間使用。
必須是範圍 [0, 1] 內的浮點數。
0.5
box_detections_per_image 針對所有類別,每個影像的偵測數目上限。
必須是正整數。
100
tile_grid_size 要用於每個並排影像的格線大小。
- tile_grid_size 不得為 None,才能啟用 小型物件偵測 邏輯。
- tile_grid_size 實例分割工作不支援。
應以 '3x2' 格式的字串形式傳遞。 Example: --tile_grid_size '3x2'
無預設值
tile_overlap_ratio 每個維度中相鄰圖格之間的重疊比例。
必須是範圍 [0, 1] 內的浮點數
0.25
tile_predictions_nms_threshold 從圖格和影像合併預測時用來執行 NMS 的 IOU 閾值。 用於驗證/推斷。
必須是範圍 [0, 1] 內的浮點數
0.25

後續步驟