根據預設,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 使用。步驟如下:
- 從與 ML Kit 相容的模型集合中挑選模型。
- 從模型詳細資料頁面下載 .tflite 模型檔案。盡可能選用含有中繼資料的模型格式。
- 請參閱 Image Labeling API 或 Object Detection and Tracking API 的指南,瞭解如何將模型檔案與專案組合,並在 Android 或 iOS 應用程式中使用。
訓練專屬的圖片分類模型
如果沒有符合需求的預先訓練圖像分類模型,您可以透過各種方式訓練自己的 LiteRT 模型,以下章節將詳細說明其中幾種方式。
| 訓練專屬圖片分類模型的選項 | |
|---|---|
| AutoML |
|
| 將 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:
- 指定每個輸出類別名稱的標籤對應,做為類型為 TENSOR_AXIS_LABELS 的 AssociatedFile (否則只能傳回數值輸出類別索引)
- 預設分數門檻,低於此門檻的結果會被視為信心不足,因此不會傳回。這項門檻會以 ProcessUnit 搭配 ScoreThresholdingOptions 的形式提供