Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

使用 AutoML Vision Edge 訓練圖像標記模型

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

要訓練圖像標記模型,您需要向 AutoML Vision Edge 提供一組圖像和相應的標籤。 AutoML Vision Edge 使用此數據集在雲中訓練一個新模型,您可以將其用於應用程序中的設備上圖像標記。 (有關此功能的一般信息,請參閱概述。)

AutoML Vision Edge是一項 Google Cloud 服務。服務的使用受Google Cloud Platform 許可協議服務特定條款的約束,並據此計費。有關計費信息,請參閱 AutoML定價頁面。

在你開始之前

1. 收集你的訓練數據

首先,您需要將標記圖像的訓練數據集放在一起。請牢記以下準則:

  • 圖像必須採用以下格式之一:JPEG、PNG、GIF、BMP、ICO。

  • 每個圖像必須為 30MB 或更小。請注意,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 索引的雲存儲

將您的訓練圖像上傳到Google Cloud Storage並準備一個 CSV 文件,其中列出了每個圖像的 URL,以及(可選)每個圖像的正確標籤。此選項在使用非常大的數據集時很有幫助。

例如,將您的圖片上傳到 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 Console 中打開視覺數據集頁面。出現提示時選擇您的項目。

  2. 單擊新建數據集,為數據集提供名稱,選擇要訓練的模型類型,然後單擊創建數據集

  3. 在數據集的導入選項卡上,上傳訓練圖像的 zip 存檔或包含您上傳到的 Cloud Storage 位置的 CSV 文件。請參閱組裝您的訓練數據

  4. 導入任務完成後,使用圖像選項卡驗證訓練數據並標記任何未標記的圖像。

  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 初學者指南包容性 ML 指南 - AutoML

當您找到一個產生您滿意的指標的置信度閾值時,請記下它;您將使用置信度閾值在您的應用程序中配置模型。 (您可以隨時使用此工具來獲得適當的閾值。)

4. 發布或下載您的模型

如果您對模型的性能感到滿意並希望在應用程序中使用它,您有三個選項,您可以從中選擇任意組合:部署模型進行在線預測、將模型發佈到 Firebase 或下載模型並捆綁它與您的應用程序。

部署模型

在數據集的測試和使用選項卡上,您可以部署模型以進行在線預測,該模型在雲中運行您的模型。 Cloud AutoML 文檔中介紹了此選項。該站點上的文檔處理其餘兩個選項。

發布模型

通過將模型發佈到 Firebase,您可以在不發布新應用版本的情況下更新模型,並且可以使用遠程配置和 A/B 測試為不同的用戶組動態提供不同的模型。

如果您選擇僅通過使用 Firebase 託管模型來提供模型,而不是將其與您的應用捆綁在一起,則可以減少應用的初始下載大小。但請記住,如果模型未與您的應用程序捆綁在一起,則在您的應用程序第一次下載模型之前,任何與模型相關的功能都將不可用。

要發布您的模型,您可以使用以下兩種方法之一:

  • 從 Google Cloud Console 中數據集的測試和使用頁面下載 TF Lite 模型,然後在 Firebase 控制台的自定義模型頁面上傳模型。這通常是發佈單個模型的最簡單方法。
  • 使用 Admin SDK 將模型直接從您的 Google Cloud 項目發佈到 Firebase。您可以使用此方法批量發布多個模型或幫助創建自動發布管道。

使用 Admin SDK模型管理 API發布模型:

  1. 安裝並初始化 SDK

  2. 發布模型。

    您需要指定模型的資源標識符,它是一個類似於以下示例的字符串:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER包含模型的 Cloud Storage 存儲分區的項目編號。這可能是您的 Firebase 項目或其他 Google Cloud 項目。您可以在 Firebase 控制台或 Google Cloud Console 信息中心的“設置”頁面上找到此值。
    MODEL_ID模型的 ID,您從 AutoML Cloud API 獲得。

    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)
    

    節點.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 託管的模型不可用時,您的應用的 ML 功能仍然有效。

如果您同時發布模型並將其與您的應用程序捆綁在一起,則該應用程序將使用可用的最新版本。

要下載您的模型,請單擊數據集的測試和使用頁面上的TF Lite

下一步

現在您已經發布或下載了模型,了解如何在您的iOS+Android應用程序中使用模型。