使用 AutoML Vision Edge 訓練對象檢測模型

目標檢測模型類似於圖像標記模型,但它不是為整個圖像分配標籤,而是為圖像區域分配標籤。您可以使用對象檢測模型來識別和定位圖像中的對像或跟踪對像在一系列圖像中的移動。

要訓練對象檢測模型,您需要向 AutoML Vision Edge 提供一組帶有相應對象標籤和對象邊界的圖像。 AutoML Vision Edge 使用此數據集在雲中訓練新模型,您可以將其用於設備上的對象檢測。

在你開始之前

  • 如果您還沒有一個火力地堡項目,創建一個在火力地堡控制台

  • 熟悉中提出的指導方針包容ML指南- AutoML

  • 如果您只是想嘗試 AutoML Vision Edge,並且沒有自己的訓練數據,請下載示例數據集,例如以下之一:

1. 組裝你的訓練數據

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

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

  • 每個圖像必須是 30MB 或更小。請注意,AutoML Vision Edge 在預處理期間縮小了大多數圖像的比例,因此提供非常高分辨率的圖像通常沒有準確性優勢。

  • 包括每個標籤的至少 10 個,最好是 100 個或更多的例子。

  • 包括每個標籤的多個角度、分辨率和背景。

  • 訓練數據應盡可能接近要進行預測的數據。例如,如果您的用例涉及模糊和低分辨率的圖像(例如來自安全攝像頭的圖像),則您的訓練數據應該由模糊的低分辨率圖像組成。

  • AutoML Vision Edge 生成的模型針對現實世界中的物體照片進行了優化。它們可能不適用於 X 射線、手繪圖、掃描的文檔、收據等。

    此外,模型通常無法預測人類無法分配的標籤。因此,如果人類無法通過查看圖像 1-2 秒來分配標籤,則模型也可能無法通過訓練來分配標籤。

準備好訓練圖像後,準備將它們導入 GCP。您有兩個選擇:

選項 1:帶有 CSV 索引的 Cloud Storage

上傳你的訓練圖像,以谷歌雲存儲,並準備一個CSV文件列出每個圖像的URL,以及可選,每幅圖像的正確的對象標籤和邊界區。此選項在使用大型數據集時很有用。

例如,將您的圖片上傳到 Cloud Storage,並準備一個如下所示的 CSV 文件:

gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,,
gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,,
gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,

對象邊界框被指定為圖像中的相對坐標。見格式化訓練數據CSV

這些圖像必須存儲在一個桶是公司在us-central1地區和您的火力地堡項目的相應的谷歌雲項目的一部分。

選項 2:未標記的圖像

上傳訓練圖像後,在 Google Cloud Console 中標記它們並繪製對象邊界。這僅推薦用於小型數據集。請參閱下一步。

2. 訓練你的模型

接下來,使用您的圖像訓練模型:

  1. 打開視野數據集在谷歌雲端控制台頁面。出現提示時選擇您的項目。

  2. 單擊新建數據集,為數據集提供一個名稱,選擇您想要的火車模型的類型,然後單擊創建數據集

  3. 在您的數據集的導入選項卡,上傳你的訓練圖像,你訓練圖像的zip壓縮包或包含您上傳他們的雲存儲位置的CSV文件。見組裝您的訓練數據

  4. 進口任務完成後,使用圖像選項卡來驗證訓練數據。

  5. 如果您沒有上傳 CSV,則對於每張圖片,在要識別的對象周圍繪製邊界框並標記每個對象。

  6. 火車上選項卡,單擊開始訓練

    1. 命名模式,並選擇邊緣型號。

    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視覺初學者指南包容ML指南- AutoML以獲取更多信息。

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

4. 發布或下載您的模型

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

部署模型

在您的數據集的測試和使用標籤,您可以部署為網上預報名,它運行在雲計算模型的模型。此選項是包括在雲AutoML文檔。此站點上的文檔處理其餘兩個選項。

發布模型

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

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

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

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

要發布與管理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您從 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)
    

    節點.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精簡版

下一步

現在,您已經發布或下載的模式,學習如何使用該模型在你的iOS +Android的應用程序。