設定 AutoML,以定型電腦視覺模型

適用於Python SDK azure-ai-ml 第 2 版 (預覽)

重要

此功能目前為公開預覽狀態。 在此提供的這個預覽版本並無服務等級協定。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

在本文中,您將瞭解如何使用 Azure Machine Learning CLI 延伸模組第 2 版或 Azure Machine Learning Python SDK 第 2 版 (預覽),使用自動化 ML,對影像資料定型電腦視覺模型。

自動化 ML 支援對電腦視覺工作 (例如影像分類、物件偵測和執行個體分割) 進行模型定型。 目前透過 Azure Machine Learning Python SDK 支援編寫電腦視覺工作的 AutoML 模型。 可以從 Azure Machine Learning 工作室 UI 存取產生的實驗執行、模型和輸出。 深入了解影像資料上電腦視覺工作的自動化 ML

先決條件

選取您的工作類型

影像的自動化 ML 支援下列工作類型:

工作類型 AutoML 作業語法
影像分類 CLI 第 2 版:image_classification
SDK 第 2 版:image_classification()
影像分類多標籤 CLI 第 2 版:image_classification_multilabel
SDK 第 2 版:image_classification_multilabel()
影像物件偵測 CLI 第 2 版:image_object_detection
SDK 第 2 版:image_object_detection()
影像執行個體分割 CLI 第 2 版:image_instance_segmentation
SDK 第 2 版:image_instance_segmentation()

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

此工作類型是必要參數,可以使用 task 索引鍵加以設定。

例如:

task: image_object_detection

定型和驗證資料

為了產生電腦視覺模型,您必須以 MLTable 的形式,攜帶標記的影像資料做為模型定型的輸入。 您可以從 JSONL 格式的定型資料建立 MLTable

如果您的定型資料採用不同的格式 (例如,pascal VOC 或 COCO),您可以套用範例筆記本隨附的協助程式指令碼,將資料轉換為 JSONL。 深入了解如何使用自動化 ML 來準備用於電腦視覺工作的資料

注意

定型資料必須至少有 10 個影像,才能提交 AutoML 執行。

警告

支援建立 MLTable,其會使用 SDK 和 CLI 為此功能從 JSONL 格式的資料建立。 目前不支援透過 UI 建立 MLTable

JSONL 結構描述範例

TabularDataset 的結構取決於手邊的工作。 對於電腦視覺工作類型,其是由下列欄位組成:

欄位 描述
image_url 包含檔案路徑作為 StreamInfo 物件
image_details 影像中繼資料資訊由高度、寬度和格式組成。 這是選擇性欄位,因此不一定存在。
label 影像標籤的 JSONL 表示法 (以工作類型為基礎)。

以下是用於影像分類的範例 JSONL 檔案:

{
      "image_url": "AmlDatastore://image_data/Image_01.png",
      "image_details":
      {
          "format": "png",
          "width": "2230px",
          "height": "4356px"
      },
      "label": "cat"
  }
  {
      "image_url": "AmlDatastore://image_data/Image_02.jpeg",
      "image_details":
      {
          "format": "jpeg",
          "width": "3456px",
          "height": "3467px"
      },
      "label": "dog"
  }

下列程式碼是用於物件偵測的範例 JSONL 檔案:

{
    "image_url": "AmlDatastore://image_data/Image_01.png",
    "image_details":
    {
        "format": "png",
        "width": "2230px",
        "height": "4356px"
    },
    "label":
    {
        "label": "cat",
        "topX": "1",
        "topY": "0",
        "bottomX": "0",
        "bottomY": "1",
        "isCrowd": "true",
    }
}
{
    "image_url": "AmlDatastore://image_data/Image_02.png",
    "image_details":
    {
        "format": "jpeg",
        "width": "1230px",
        "height": "2356px"
    },
    "label":
    {
        "label": "dog",
        "topX": "0",
        "topY": "1",
        "bottomX": "0",
        "bottomY": "1",
        "isCrowd": "false",
    }
}

取用資料

一旦您的資料是 JSONL 格式,您就可以如下所示,建立定型和驗證 MLTable

paths:
  - file: ./train_annotations.jsonl
transformations:
  - read_json_lines:
        encoding: utf8
        invalid_lines: error
        include_path_column: false
  - convert_column_types:
      - columns: image_url
        column_type: stream_info

自動化 ML 不會對電腦視覺工作的定型或驗證資料大小強加任何限制。 資料集大小上限僅受資料集背後的儲存層所限制 (亦即 Blob 存放區)。 影像或標籤數量沒有下限。 不過,我們建議您從每個標籤最少 10-15 個樣本開始,以確保輸出模型足以進行定型。 標籤/類別總數愈高,每個標籤所需的範例越多。

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

定型資料是必要參數,並使用資料區段的 training 索引鍵傳入。 您可以選擇性地使用 validation 索引鍵,將另一個 MLtable 指定為驗證資料。 如果未指定驗證資料,除非您使用不同值傳遞 validation_data_size 引數,否則預設會使用 20% 的定型資料來進行驗證。

目標資料行名稱是必要參數,可做為受監督 ML 工作的目標。 會使用資料區段中的 target_column_name 索引鍵將其傳入。 例如,

target_column_name: label
training_data:
  path: data/training-mltable-folder
  type: mltable
validation_data:
  path: data/validation-mltable-folder
  type: mltable

要執行實驗的計算

提供自動化 ML 的計算目標來進行模型定型。 電腦視覺工作的自動化 ML 模型需要 GPU SKU 並支援 NC 和 ND 系列。 我們建議 NCsv3 系列 (含 v100 GPU),以進行更快的定型。 具有多重 GPU VM SKU 的計算目標會利用多個 GPU 來加速定型。 此外,當設定具有多個節點的計算目標時,您可以在調整模型的超參數時,透過平行處理原則進行更快的模型定型。

會使用 compute 參數傳入計算目標。 例如:

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

compute: azureml:gpu-cluster

設定模型演算法和超參數

透過電腦視覺工作的支援,您可以控制模型演算法和掃掠超參數。 這些模型演算法和超參數會傳入作為參數空間進行掃掠。

模型演算法是必要的,而且會透過 model_name 參數傳入。 您可以指定單一 model_name,或在多個之間選擇。

支援的模型演算法

下表摘要說明每一個電腦視覺工作支援的模型。

Task 模型演算法 字串常值語法
以 * 表示的 default_model*
影像分類
(多類別和多標籤)
MobileNet:行動應用程式的輕加權模型
ResNet:殘差網路
ResNeSt:分散注意力網路
SE-ResNeXt50:Squeeze-and-Excitation 網路
ViT:視覺轉換器網路
mobilenetv2
resnet18
resnet34
resnet50
resnet101
resnet152
resnest50
resnest101
seresnext
vits16r224 (小型)
vitb16r224* (基礎)
vitl16r224 (大型)
物件偵測 YOLOv5:一個階段物件偵測模型
更快的 RCNN ResNet FPN:兩個階段物件偵測模型
RetinaNet ResNet FPN:失去焦點的位址類別不平衡

注意:如需 YOLOv5 模型大小,請參閱model_size超參數
yolov5*
fasterrcnn_resnet18_fpn
fasterrcnn_resnet34_fpn
fasterrcnn_resnet50_fpn
fasterrcnn_resnet101_fpn
fasterrcnn_resnet152_fpn
retinanet_resnet50_fpn
執行個體分割 MaskRCNN ResNet FPN maskrcnn_resnet18_fpn
maskrcnn_resnet34_fpn
maskrcnn_resnet50_fpn*
maskrcnn_resnet101_fpn
maskrcnn_resnet152_fpn

除了控制模型演算法,您也可以調整用於模型定型的超參數。 雖然許多公開的超參數都與模型無關,但還是有一些執行個體,其中的超參數是工作特有的或模型特有的。 深入了解這些執行個體可用的超參數

資料增強

一般來說,深度學習模型效能通常可以藉由更多資料來改善。 資料增強是一種實用的技巧,可擴大資料集的資料大小和變化性,有助於防止過度學習,並改善模型對未見資料的一般化能力。 自動 ML 會根據電腦視覺工作,在將輸入影像饋送至模型之前,先套用不同的資料增強技巧。 目前,沒有任何公開的超參數可控制資料增強。

Task 受影響的資料集 已套用資料增強技巧
影像分類 (多類別和多標籤) 訓練


驗證和測試
隨機大小調整和裁切、水平翻轉、色彩抖動 (亮度、對比、飽和度和色調)、使用全通道 ImageNet 平均值和標準差的正規化


調整大小、置中裁切、正規化
物件偵測、執行個體分割 訓練

驗證和測試
隨機裁切周框方塊、展開、水平翻轉、正規化、調整大小


正規化、調整大小
使用 yolov5 的物件偵測 訓練

驗證和測試
馬賽克、隨機仿射 (旋轉、平移、縮放、剪切)、水平翻轉


上下黑邊調整大小

設定您的實驗設定

在進行大型掃掠以搜尋最佳模型和超參數之前,建議您先嘗試預設值來取得第一個基準。 接下來,您可以在掃掠多個模型及其參數之前,探索相同模型的多個超參數。 如此一來,您就可以採用更反覆的方法,因為有多個模型且每一個模型有多個超參數,所以搜尋空間會以指數方式成長,而您需要更多反覆運算以找出最佳設定。

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

如果您想要針對指定的演算法 (假設 yolov5) 使用預設超參數值,您可以在 image_model 區段中使用 model_name 索引鍵來加以指定。 例如,

image_model:
    model_name: "yolov5"

一旦建置了基準模型,您可能就會想要將模型效能最佳化,以便掃掠模型演算法和超參數空間。 您可以使用下列範例設定來掃掠每個演算法的超參數、從 learning_rate、最佳化工具、lr_scheduler 等範圍的值中進行選擇,以產生具有最佳主要計量的模型。 如果未指定超參數值,則會針對指定的演算法使用預設值。

主要計量

用於模型最佳化和超參數調整的主要計量取決於工作類型。 目前不支援使用其他主要計量值。

  • accuracy 用於 IMAGE_CLASSIFICATION
  • iou 用於 IMAGE_CLASSIFICATION_MULTILABEL
  • mean_average_precision 用於 IMAGE_OBJECT_DETECTION
  • mean_average_precision 用於 IMAGE_INSTANCE_SEGMENTATION

實驗預算

您可以在 limits 中使用 timeout 參數,為 AutoML 視覺訓練作業選擇性地指定最長時間預算 - 實驗終止前的時間長短 (以分鐘為單位)。 如果未指定,則預設實驗逾時為七天 (最長 60 天)。 例如,

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

limits:
  timeout: 60

為您的模型掃掠超參數

定型電腦視覺模型時,模型效能主要取決於選取的超參數值。 通常,您可能會想要調整超參數以取得最佳效能。 透過支援自動化 ML 中的電腦視覺工作,您可以掃掠超參數,以找出模型的最佳設定。 這項功能會在 Azure Machine Learning 中套用超參數調整功能。 了解如何調整超參數

定義參數搜尋空間

您可以定義要在參數空間中掃掠的模型演算法和超參數。

用於掃掠的取樣方法

在掃掠超參數時,您必須指定取樣方法,以用於掃掠定義的參數空間。 目前,參數支援下列取樣方法搭配 sampling_algorithm 參數:

取樣類型 AutoML 作業語法
隨機取樣 random
格線取樣 grid
貝氏取樣 bayesian

注意

目前只有隨機取樣支援條件式超參數空間。

提前終止原則

您可以使用提前終止原則自動結束效果不佳的執行。 提早終止可改善計算效率,節省原本花費在較不具期望設定上的計算資源。 影像的自動化 ML 支援使用 early_termination 參數的下列提早終止原則。 如果未指定終止原則,則會執行所有設定,直到完成。

提前終止原則 AutoML 作業語法
Bandit 原則 CLI 第 2 版:bandit
SDK 第 2 版:BanditPolicy()
中位數停止原則 CLI 第 2 版:median_stopping
SDK 第 2 版:MedianStoppingPolicy()
截斷選取原則 CLI 第 2 版:truncation_selection
SDK 第 2 版:TruncationSelectionPolicy()

深入了解如何為您的超參數掃掠設定提早終止原則

掃掠的資源

您可以指定 max_trialsmax_concurrent_trials 進行掃掠,來控制超參數掃掠上所花費的資源。

注意

如需完整的掃掠設定範例,請參閱這個教學課程

參數 詳細資料
max_trials 要掃掠的設定數目上限所需的參數。 必須為介於 1 到 1000 之間的整數。 只探索給定模型演算法的預設超參數時,請將此參數設定為 1。
max_concurrent_trials 可同時執行的執行數目上限。 如果未指定,則會以平行方式啟動所有執行。 如果已指定,必須是介於 1 到 100 之間的整數。

注意:同時執行的數目會受限於指定計算目標中的可用資源。 請確保計算目標有資源可用於所需的並行作業。

您可以如下列範例所示,設定所有掃掠相關參數。

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

sweep:
  limits:
    max_trials: 10
    max_concurrent_trials: 2
  sampling_algorithm: random
  early_termination:
    type: bandit
    evaluation_interval: 2
    slack_factor: 0.2
    delay_evaluation: 6

已修正設定

您可以如下所示,傳遞未在參數空間掃掠期間變更的固定設定或參數。

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

image_model:
  early_stopping: True
  evaluation_frequency: 1

累加式定型 (選用)

完成定型執行之後,您可以選擇載入已定型的模型檢查點來進一步將模型定型。 您可以使用相同的資料集或不同的資料集進行累加式定型。

透過執行識別碼傳遞檢查點

您可以傳遞您想要從中載入檢查點的執行識別碼。

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

image_model:
  checkpoint_run_id : "target_checkpoint_run_id"

提交 AutoML 作業

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

若要提交 AutoML 作業,請使用 .yml 檔案的路徑、工作區名稱、資源群組和訂用帳戶識別碼來執行下列 CLI 第 2 版命令。

az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]

輸出和評估計量

自動化 ML 定型執行會產生輸出模型檔案、評估計量、記錄與部署成品,例如評分檔案與環境檔案,您可以從子執行的輸出以及記錄和計量索引標籤檢視這些檔案。

提示

請檢查如何瀏覽至檢視執行結果區段中的執行結果。

如需每次執行所提供效能圖表與計量的定義和範例,請參閱評估自動化機器學習實驗結果

註冊和部署模型

一旦執行完成,您就可以註冊從最佳執行 (產生最佳主要計量的設定) 建立的模型。

您可以從 Azure Machine Learning 工作室 UI 部署模型。 在自動化 ML 執行的 [模型] 索引標籤中,瀏覽至您想要部署的模型,然後選取 [部署]。

Select model from the automl runs in studio UI

您可以在 [部署模型] 窗格中,設定模型部署端點名稱和要用於模型部署的推斷叢集。

Deploy configuration

程式碼範例

自動化機器學習樣本的 azureml-examples 存放庫中,檢閱詳細的程式碼範例和使用案例。

後續步驟