使用 AutoML Vision Edge 訓練圖片標籤模型

如要訓練圖片標籤模型,您必須提供一組圖片和對應的標籤給 AutoML Vision Edge。AutoML Vision Edge 會在雲端使用這個資料集訓練新模型,方便您在應用程式中為圖片加上標籤 (如需這項功能的一般資訊,請參閱總覽)。

AutoML Vision Edge 是 Google Cloud 服務。使用服務時須遵守《Google Cloud Platform 授權協議》和《服務專屬條款》,並據此付費。如需帳單資訊,請參閱 AutoML 定價頁面。

事前準備

1. 組合訓練資料

首先,您必須整理一個含有標籤圖片的訓練資料集。請留意下列準則:

  • 圖片必須使用下列其中一種格式:JPEG、PNG、GIF、BMP、ICO。

  • 每張影像的大小不得超過 30 MB。請注意,AutoML Vision Edge 會在預先處理期間縮減大部分的圖片,因此一般來說,提供超高解析度圖片將不提高準確性。

  • 每個標籤至少加入 10 個 (最好有 100 個以上範例)。

  • 為每個標籤加入多種角度、解析度和背景。

  • 訓練資料應儘可能貼近要用來進行預測的資料。舉例來說,如果用途包含模糊和低解析度的圖片 (例如監視攝影機拍攝的圖片),則訓練資料也應包含模糊和低解析度的圖片。

  • AutoML Vision Edge 產生的模型已針對現實世界中的物件相片進行最佳化處理。這類模組可能不適用於 X 光、手繪、掃描文件、收據等。

    此外,模型通常無法預測人類無法指派的標籤。因此,如果人類在看圖 1 到 2 秒時無法以此方式指派標籤,也可能無法訓練模型執行。

備妥訓練圖片後,請準備匯入 Firebase,三個選項如下:

選項 1:結構化 ZIP 封存檔

將訓練圖片整理成目錄,每個目錄以標籤命名,其中包含該標籤的範例圖片。接著,將目錄結構壓縮成 ZIP 封存檔。

這個 ZIP 封存檔中的目錄名稱長度上限為 32 個 ASCII 字元,而且只能使用英數字元和底線字元 (_)。

例如:

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

選項 2:採用 CSV 索引的 Cloud Storage

將訓練圖片上傳至 Google Cloud Storage,並備妥列出每張圖片網址的 CSV 檔案,並選擇是否要為每張圖片加上正確標籤。使用非常大型的資料集時,這個選項非常實用。

例如,將圖片上傳至 Cloud Storage,並準備 CSV 檔案,如下所示:

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

圖片必須儲存在 Firebase 專案對應 Google Cloud 專案的值區中。

如要進一步瞭解如何準備 CSV 檔案,請參閱 Cloud AutoML Vision 說明文件中的「準備訓練資料」。

選項 3:未加上標籤的圖片

在上傳訓練圖片後,於 Firebase 控制台中為圖片加上標籤,無論是個別上傳,還是非結構化 ZIP 檔案都沒問題。請參閱下一步。

2. 訓練模型

接著,使用圖片訓練模型:

  1. 在 Google Cloud 控制台中開啟「Vision Datasets」(Vision 資料集) 頁面。系統出現提示時,請選取您的專案。

  2. 按一下「New dataset」(新增資料集),提供資料集的名稱,選取要訓練的模型類型,然後按一下「Create dataset」(建立資料集)

  3. 在資料集的「Import」分頁中,上傳訓練圖片的 ZIP 封存檔,或上傳含有上傳圖片的 Cloud Storage 位置的 CSV 檔案。請參閱「組合訓練資料」。

  4. 匯入工作完成後,請使用「Images」分頁驗證訓練資料,並為任何未加上標籤的圖片加上標籤。

  5. 點選「訓練」分頁中的「開始訓練」

    1. 為模型命名,並選取「Edge」模型類型。

    2. 設定下列訓練設定,管理產生的模型效能:

      針對下列項目最佳化模型... 要使用的模型設定。您可以訓練更快速、更小的模型,同時對於低延遲或小型套件大小來說相當重要,或者也可以針對準確率視為較大選擇的模型。
      節點時數預算

      訓練模型的時間長度上限 (以運算時數為單位)。訓練時間越長,模型通常就會越準確。

      請注意,如果系統判定模型已經過最佳化,且額外訓練並未提高準確率,可以在指定時間內完成訓練。系統只會根據實際使用時數向您收取費用。

      一般訓練時間
      非常小集合1 小時
      500 張圖片2 小時
      1,000 張圖片3 小時
      5,000 張圖片6 小時
      10,000 張圖片7 小時
      50,000 張圖片11 小時
      100,000 張圖片13 小時
      1,000,000 張圖片18 小時

3. 評估模型

訓練完成後,您可以按一下 [評估] 分頁標籤,查看模型的效能指標。

這個頁面的重要用法之一,是決定最適合模型的可信度門檻。可信度門檻是指模型將標籤指派給圖片時必須達到的最低信賴水準。您可以移動可信度門檻滑桿,瞭解不同門檻值對模型成效的影響。模型效能利用「精確度」和「喚回度」這兩項指標來衡量。

就圖片分類而言,「精確度」是指模型根據所選門檻,正確加上標籤的圖片數量比例。如果模型的精確度較高,指派標籤的頻率就會降低 (誤判情形減少幅度)。

喚回度是指正確標示的圖片數量,與模型應能加上標籤的內容數量。當模型具有高喚回度時,就會無法降低指派任何標籤的頻率 (減少偽陰性)。

至於要針對精確度或喚回度進行最佳化,則取決於您的用途。詳情請參閱 AutoML Vision 新手指南包容性機器學習指南 - AutoML

當您發現可信度門檻會產生合適的指標時,請記下這個情況;您將使用可信度門檻在應用程式中設定模型。(您隨時可以使用這項工具取得適當的門檻值)。

4. 發布或下載模型

如果您很滿意模型的成效,且想在應用程式中使用,可以透過以下三種選項任意組合:部署用於線上預測的模型、將模型發布到 Firebase,或下載模型並套用至應用程式。

部署模型

您可以在資料集的「Test & use」(測試及使用) 分頁中部署模型,以便在雲端執行模型以進行線上預測。此選項在 Cloud AutoML 說明文件中介紹。此網站上的文件會處理剩餘的兩個選項。

發布模型

將模型發布至 Firebase 之後,您就能在不發布新的應用程式版本的情況下更新模型,也能使用遠端設定和 A/B 測試功能,動態提供不同的模型給不同的使用者組。

如果您選擇只以 Firebase 託管模型,而不將其整合至應用程式,可以縮減應用程式的初始下載大小。不過請注意,如果模型未隨附於您的應用程式,在首次下載應用程式之前,您將無法使用任何模型相關功能。

您可以使用下列兩種方法之一來發布模型:

  • 請前往 Google Cloud 控制台,從資料集的「Test & use」(測試及使用) 頁面下載 TF Lite 模型,然後在 Firebase 控制台的「Custom model」(自訂模型) 頁面中上傳模型。這通常是發布單一模型最簡單的方法。
  • 使用 Admin SDK,直接從 Google Cloud 專案將模型發布至 Firebase。您可以使用此方法批次發布多個模型,或協助建立自動化發布管道。

使用 Admin SDK 模型管理 API 發布模型的步驟如下:

  1. 安裝並初始化 SDK

  2. 發布模型。

    您必須指定模型的資源 ID,此字串如下所示:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER 含有模型的 Cloud Storage 值區專案編號。這可能是你的 Firebase 專案或其他 Google Cloud 專案。您可以在 Firebase 控制台的「設定」頁面或 Google Cloud 控制台資訊主頁找到這個值。
    MODEL_ID 從 AutoML Cloud API 取得的模型 ID。

    Python

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

下載模型並與應用程式搭配使用

透過將模型與應用程式結合,即使 Firebase 託管的模型無法使用,您應用程式的機器學習功能仍可正常運作。

如果模型同時發布並封裝至應用程式,應用程式將使用最新版本。

如要下載模型,請在資料集的「測試及使用」頁面中按一下「TF Lite」

後續步驟

現在您已經發布或下載模型,接下來請瞭解如何在 iOS+Android 應用程式中使用模型。