使用 ML Kit 自訂模型

根據預設,ML Kit 的 API 會使用 Google 訓練的機器學習模型。這些模型適用於各種應用程式。不過,部分用途需要更精準的模型。因此,部分 ML Kit API 現在可讓您將預設模型替換為自訂 LiteRT 模型。

圖片標籤物件偵測與追蹤 API 都支援自訂圖片分類模型,並與 TensorFlow Hub 上精選的高品質預先訓練模型相容,也支援您使用 TensorFlow 或 AutoML 訓練的自訂模型。

如需其他網域或用途的自訂解決方案,請前往裝置端機器學習頁面,瞭解 Google 提供的所有裝置端機器學習解決方案和工具。

使用 ML Kit 和自訂模型的好處

使用 ML Kit 自訂圖片分類模型的好處包括:

  • 簡單易用的高階 API - 無需處理低階模型輸入/輸出、處理圖片前/後處理,或建構處理管道。
  • 不必擔心標籤對應問題,ML Kit 會從 LiteRT 模型中繼資料擷取標籤,並為您完成對應。
  • 支援各種來源的自訂模型,包括 TensorFlow Hub 上發布的預先訓練模型,以及使用 TensorFlow 或 AutoML 訓練的新模型。
  • 已最佳化,可與 Android 的 Camera API 整合。

此外,物件偵測和追蹤功能有以下限制:

  • 先找出物件,然後只在相關圖片區域執行分類器,即可提高分類準確度
  • 提供即時互動體驗:在偵測及分類物件時,立即向使用者提供回饋。

使用預先訓練的圖片分類模型

只要符合一組條件,您就可以使用預先訓練的 LiteRT 模型。我們透過 TensorFlow Hub 提供一組經過審查的模型,這些模型來自 Google 或其他模型建立者,且符合上述條件。

使用發布在 TensorFlow Hub 上的模型

TensorFlow Hub 提供各種模型建立者預先訓練的圖像分類模型,可搭配圖像標籤、物件偵測和追蹤 API 使用。步驟如下:

  1. 與 ML Kit 相容的模型集合中挑選模型。
  2. 從模型詳細資料頁面下載 .tflite 模型檔案。盡可能選用含有中繼資料的模型格式。
  3. 請參閱 Image Labeling APIObject Detection and Tracking API 的指南,瞭解如何將模型檔案與專案組合,並在 Android 或 iOS 應用程式中使用。

訓練專屬的圖片分類模型

如果沒有符合需求的預先訓練圖像分類模型,您可以透過各種方式訓練自己的 LiteRT 模型,以下章節將詳細說明其中幾種方式。

訓練專屬圖片分類模型的選項
AutoML
  • 透過 Google Cloud AI 提供
  • 建立最先進的圖片分類模型
  • 評估效能與大小
將 TensorFlow 模型轉換為 LiteRT
  • 使用 TensorFlow 訓練模型,然後轉換為 LiteRT

AutoML

圖片標記物件偵測與追蹤 API API 中的自訂模型支援使用 AutoML 訓練的圖片分類模型。這些 API 也支援下載 Cloud Storage 託管的模型。

如要進一步瞭解如何在 Android 和 iOS 應用程式中使用透過 AutoML 訓練的模型,請視您的用途,按照各個 API 的自訂模型指南操作。

使用 LiteRT 轉換工具建立的模型

如果您有現成的 TensorFlow 圖片分類模型,可以使用 LiteRT 轉換工具進行轉換。請確認建立的模型符合下列相容性規定。

如要進一步瞭解如何在 Android 和 iOS 應用程式中使用 LiteRT 模型,請參閱圖像標籤 API物件偵測與追蹤 API 的指南,視您的用途而定。

LiteRT 模型相容性

只要符合下列條件,您可以使用任何預先訓練的 LiteRT 圖片分類模型:

張量

  • 模型只能有一個輸入張量,且須符合下列限制:
    • 資料採用 RGB 像素格式。
    • 資料類型為 UINT8 或 FLOAT32。如果輸入張量類型為 FLOAT32,則必須附加中繼資料,指定 NormalizationOptions。
    • 張量有 4 個維度:BxHxWxC,其中:
      • B 是批量大小,必須為 1 (不支援對較大的批量進行推論)。
      • W 和 H 是輸入的寬度和高度。
      • C 是預期聲道數,必須為 3。
  • 模型必須至少有一個輸出張量,且具有 N 個類別和 2 或 4 個維度:
    • (1xN)
    • (1x1x1xN)
  • 系統僅完整支援單一標頭模型。多頭模型可能會輸出非預期的結果。

中繼資料

您可以按照「為 LiteRT 模型新增中繼資料」一文的說明,為 LiteRT 檔案新增中繼資料。

如要使用具有 FLOAT32 輸入張量的模型,您必須在中繼資料中指定 NormalizationOptions

我們也建議您將這項中繼資料附加至輸出張量 TensorMetadata