根據預設,ML Kit 的 API 會使用 Google 訓練的機器學習模型。 這些模型適用於多種應用程式。但某些用途需要更精準的模型。因此,部分 ML Kit API 現在可讓您使用自訂的 TensorFlow Lite 模型取代預設模型。
圖片標籤和物件偵測與追蹤 API 都支援自訂圖片分類模型。這些模型與一系列在 TensorFlow Hub 上的精選高品質預先訓練模型相容,或使用 TensorFlow、AutoML Vision Edge 或 TensorFlow Lite 模型製作工具訓練的自有自訂模型。
如果您需要其他網域或用途的自訂解決方案,請造訪裝置端機器學習頁面,瞭解所有適用於裝置端機器學習的 Google 解決方案和工具。
搭配自訂模型使用 ML Kit 的好處
搭配 ML Kit 使用自訂圖片分類模型的好處如下:
- 易於使用的高階 API - 無需處理低階模型輸入/輸出、處理圖片前/事後處理,或建構處理管道。
- 不必擔心標籤對應問題:ML Kit 會從 TFLite 模型中繼資料擷取標籤,並為您完成對應作業。
- 支援多種來源的自訂模型,包括在 TensorFlow Hub 上發布的預先訓練模型,以及使用 TensorFlow、AutoML Vision Edge 或 TensorFlow Lite 模型製作工具訓練的新模型。
- 支援透過 Firebase 託管的模型。隨選下載模型可縮減 APK 大小。不必重新發布應用程式即可推送模型更新,並使用 Firebase 遠端設定執行簡易的 A/B 測試。
- 已針對 Android 的 Camera API 進行最佳化整合。
尤其是物件偵測和追蹤:
- 先找出物件,然後在相關圖片區域執行分類器,以提高分類準確率。
- 在偵測到物件並進行分類時立即提供使用者回饋,藉此提供即時互動式體驗。
使用預先訓練的圖片分類模型
您可以使用預先訓練的 TensorFlow Lite 模型,前提是這些模型必須符合一組條件。我們透過 TensorFlow Hub 提供一組經過審查的模型,這些模型都是由 Google 或其他模型創作者提供,符合這些條件。
使用在 TensorFlow Hub 上發布的模型
TensorFlow Hub 提供各式各樣的預先訓練圖片分類模型 (來自不同模型創作者),可與圖片標籤和物件偵測和追蹤 API 搭配使用。請按照以下步驟操作。
- 從與 ML Kit 相容的模型集合中挑選模型。
- 從模型詳細資料頁面下載 .tflite 模型檔案。如有中繼資料,請選擇包含中繼資料的模型格式。
- 請按照 Image Labeling API 或 Object Detection and Tracking API 指南操作,瞭解如何將模型檔案與專案組合,以及如何在 Android 或 iOS 應用程式中使用。
訓練自己的圖片分類模型
如果沒有預先訓練的圖片分類模型滿足您的需求,有多種方法可以訓練您自己的 TensorFlow Lite 模型,其中有些做法會在下方概略說明及討論。
訓練自己的圖片分類模型的選項 | |
---|---|
AutoML Vision Edge |
|
TensorFlow Lite 模型製作工具 |
|
將 TensorFlow 模型轉換為 TensorFlow Lite |
|
AutoML Vision Edge
使用 AutoML Vision Edge 訓練的圖片分類模型在 Image Labeling 和 Object Detection and Tracking API API 中的自訂模型支援。這些 API 也支援下載由 Firebase 模型部署託管的模型。
如要進一步瞭解如何在 Android 和 iOS 應用程式中使用以 AutoML Vision Edge 訓練的模型,請根據您的用途,依照每個 API 的自訂模型指南操作。
TensorFlow Lite 模型製作工具
TFLite Model Maker 程式庫簡化了在為裝置端機器學習應用程式部署這個模型時,調整 TensorFlow 類神經網路模型並轉換為特定輸入資料的程序。你可以追蹤使用 TensorFlow Lite Model Maker 進行圖片分類的 Colab。
如要進一步瞭解如何在 Android 和 iOS 應用程式中使用以 Model Maker 訓練的模型,請根據您的用途,按照 Image Labeling API 或 Object Detection and Tracking API 指南操作。
使用 TensorFlow Lite 轉換工具建立的模型
如果您有現有的 TensorFlow 圖片分類模型,可以使用 TensorFlow Lite 轉換工具轉換模型。請確認建立的模型符合下列相容性規定。
如要進一步瞭解如何在 Android 和 iOS 應用程式中使用 TensorFlow Lite 模型,請根據您的用途,按照 Image Labeling API 或 Object Detection and Tracking API 指南操作。
TensorFlow Lite 模型相容性
您可以使用任何預先訓練的 TensorFlow Lite 圖片分類模型,前提是模型必須符合下列條件:
張量
- 模型只能有一個具有下列限制的輸入張量:
- 資料為 RGB 像素格式。
- 資料為 UINT8 或 FLOAT32。如果輸入張量類型為 FLOAT32,則必須附加中繼資料來指定 NormalizationOptions。
- 張量有 4 個維度:BxHxWxC,其中:
- B 是批量,此值必須為 1 (不支援較大的批次推論)。
- W 和 H 則為輸入的寬度和高度。
- C 是預期通道數量,必須為 3。
- 模型必須至少包含一個包含 N 個類別以及 2 或 4 個維度的輸出張量:
- (1xN)
- (1 x 1 x N)
- 目前僅支援單頭型號。多頭模型可能會輸出非預期的結果。
Metadata
您可以按照「為 TensorFlow Lite 模型新增中繼資料」的說明,將中繼資料新增至 TensorFlow Lite 檔案。
如要搭配 FLOAT32 輸入張量使用模型,您必須在中繼資料內指定 NormalizationOptions。
我們建議您將這個中繼資料附加至輸出張量 TensorMetadata:
- 標籤對應會指定每個輸出類別的名稱,做為 AssociatedFile 類型為 TENSOR_AXIS_LABELS (否則只能傳回數值輸出類別索引)
- 低於預設分數門檻,如果結果低於可信度門檻,就視為含有 ScoreThresholdingOptions 的 ProcessUnit。