使用 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 專案的值區中。

請參閱 Cloud AutoML 中的準備訓練資料 關於準備 CSV 檔案詳細資訊的 Vision 說明文件。

選項 3:未標示的圖片

上傳訓練圖片後,請在 Firebase 控制台中加上標籤。 或是在非結構化 ZIP 檔案中請參閱下一步。

2. 訓練模型

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

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

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

  3. 在資料集的「Import」分頁中,上傳訓練圖片的 ZIP 壓縮檔案,或是包含上傳位置的 Cloud Storage CSV 檔案。請參閱「彙整訓練資料」一文。

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

  5. 在「Train」分頁中,按一下「Start training」

    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. 評估模型

訓練完成後,您可以按一下「Evaluate」分頁標籤,查看模型的效能指標。

這個網頁很重要的一點,就是要判定可信度門檻 找出模型的最佳選擇可信度門檻是指模型為圖片指派標籤時必須達到的信賴水準。只要移動「可信度門檻」滑桿,即可查看不同門檻值對模型成效的影響。模型效能會透過兩個指標進行評估:精確度喚回率

在圖像分類的情況下,準確率是指在指定門檻下,模型標記正確的圖片數量與模型標記的圖片數量之間的比例。如果模型的精確度較高 標籤出現錯誤的頻率降低 (減少偽陽性情形較少)。

喚回率是正確標示圖片數量與模型應能標示圖片內容的圖片數量比率。時間 模型喚回度高,未能降低指派標籤的頻率 。

您要根據精確度還是喚回率進行最佳化,取決於用途。詳情請見 AutoML Vision 初學者指南多元包容的機器學習指南 - AutoML,瞭解更多資訊。

發現可信度門檻會產生可接受的指標時, 並記下來請使用可信度門檻來設定模型 應用程式。(你隨時可以使用這項工具取得適當的門檻值)。

4. 發布或下載模型

如果您對模型的效能感到滿意,並想在應用程式中使用模型,有三個選項可供選擇:部署模型以進行線上預測、將模型發布至 Firebase,或是下載模型並與應用程式捆綁。

部署模型

您可以在資料集的「Test & use」分頁中,部署模型進行線上預測,在雲端中執行模型。這個選項會在 Cloud AutoML 說明文件。本網站上的文件會說明其餘兩個選項。

發布模型

將模型發布至 Firebase 後,您就能在不發布新版應用程式的情況下更新模型,並使用 Remote ConfigA/B Testing,為不同使用者群組動態提供不同的模型。

如果您選擇僅透過 Firebase 託管模型,而非 就能縮減應用程式的初始下載大小。 不過請注意,如果模型未隨附於您的應用程式 您的應用程式必須下載 首次訓練模型

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

  • 從資料集的 Test &網頁使用 Google Cloud控制台,然後將模型上傳到 Firebase 控制台的「自訂模型」頁面。這通常 是發布單一模型的最簡單方法
  • 使用 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 託管的模型無法使用時仍能正常運作。

如果您同時發布模型並將其與應用程式捆綁,應用程式會使用可用的最新版本。

如要下載模型,請在資料集的「Test & use」頁面中,點選「TF Lite」

後續步驟

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