影像分類

識別圖片代表內容的任務稱為影像分類。影像分類模型經過訓練,可辨識各種圖片類別。例如,您可以訓練模型辨識代表三種不同動物類型的相片:兔子、倉鼠和狗。TensorFlow Lite 提供最佳化的預先訓練模型,您可以在行動應用程式中部署這些模型。進一步瞭解使用 TensorFlow 進行影像分類的相關資訊,請按一下這裡

下圖顯示 Android 上影像分類模型的輸出。

Screenshot of Android example

開始使用

如果您是 TensorFlow Lite 新手,而且正在使用 Android 或 iOS,建議您探索下列範例應用程式,這些應用程式可協助您開始使用。

您可以運用 TensorFlow Lite Task Library 的現成 API,只需幾行程式碼即可整合影像分類模型。您也可以使用 TensorFlow Lite Support Library 建構自己的自訂推論管線。

下方的 Android 範例示範了 lib_task_apilib_support 的兩種方法實作。

查看 Android 範例

查看 iOS 範例

如果您使用的平台不是 Android/iOS,或者您已熟悉 TensorFlow Lite API,請下載入門模型和支援檔案 (如果適用)。

下載入門模型

模型說明

運作方式

在訓練期間,影像分類模型會接收圖片及其相關聯的標籤。每個標籤都是模型將學習辨識的不同概念或類別的名稱。

如果有足夠的訓練資料 (每個標籤通常有數百或數千張圖片),影像分類模型可以學習預測新圖片是否屬於已訓練的任何類別。這種預測過程稱為推論。請注意,您也可以使用移轉學習,透過使用現有模型來識別新的圖片類別。移轉學習不需要非常龐大的訓練資料集。

當您後續提供新圖片做為模型的輸入時,模型會輸出圖片代表所訓練動物類型的機率。範例輸出可能如下所示

動物類型 機率
兔子 0.07
倉鼠 0.02
0.91

輸出中的每個數字都對應到訓練資料中的標籤。將輸出與模型訓練的三個標籤建立關聯後,您可以看到模型已預測圖片代表狗的機率很高。

您可能會注意到,所有機率 (兔子、倉鼠和狗) 的總和等於 1。這是多個類別模型常見的輸出類型 (詳情請參閱 Softmax)。

模稜兩可的結果

由於輸出機率總和始終為 1,因此如果圖片未被自信地識別為屬於模型訓練的任何類別,您可能會看到機率分佈在標籤中,而沒有任何一個值明顯較大。

例如,以下可能表示模稜兩可的結果

標籤 機率
兔子 0.31
倉鼠 0.35
0.34
如果您的模型經常傳回模稜兩可的結果,您可能需要不同的、更準確的模型。

選擇模型架構

TensorFlow Lite 為您提供各種影像分類模型,所有模型都在原始資料集上進行訓練。MobileNet、Inception 和 NASNet 等模型架構可在 TensorFlow Hub 上取得。若要為您的使用案例選擇最佳模型,您需要考量個別架構,以及各種模型之間的一些取捨。其中一些模型取捨是根據效能、準確度和模型大小等指標。例如,您可能需要速度更快的模型來建構條碼掃描器,而對於醫療影像應用程式,您可能偏好速度較慢但更準確的模型。請注意,提供的影像分類模型接受不同大小的輸入。對於某些模型,這會在檔案名稱中指出。例如,Mobilenet_V1_1.0_224 模型接受 224x224 像素的輸入。所有模型都需要每個像素三個顏色通道 (紅色、綠色和藍色)。量化模型每個通道需要 1 個位元組,而浮點模型每個通道需要 4 個位元組。AndroidiOS 程式碼範例示範如何將全尺寸相機圖片處理成每個模型所需的格式。

用途與限制

TensorFlow Lite 影像分類模型適用於單一標籤分類;也就是說,預測圖片最有可能代表哪個單一標籤。它們經過訓練,可辨識 1000 個圖片類別。如需類別的完整清單,請參閱模型 zip 中的標籤檔案。如果您想訓練模型以辨識新類別,請參閱自訂模型。對於下列使用案例,您應使用不同類型的模型
  • 預測圖片中一個或多個物件的類型和位置 (請參閱物件偵測)
  • 預測圖片的組成,例如主體與背景 (請參閱分區)
一旦入門模型在您的目標裝置上執行,您就可以試用不同的模型,以找到效能、準確度和模型大小之間的最佳平衡。

自訂模型

提供的預先訓練模型經過訓練,可辨識 1000 個圖片類別。如需類別的完整清單,請參閱模型 zip 中的標籤檔案。您也可以使用移轉學習來重新訓練模型,以辨識原始集合中沒有的類別。例如,您可以重新訓練模型以區分不同種類的樹木,儘管原始訓練資料中沒有樹木。為此,您需要一組要訓練之每個新標籤的訓練圖片。瞭解如何使用 TFLite Model Maker使用 TensorFlow 辨識花朵 程式碼研究室執行移轉學習。

效能基準

模型效能是根據模型在給定硬體上執行推論所需的時間來衡量。時間越短,模型速度越快。您需要的效能取決於您的應用程式。對於即時視訊等應用程式而言,效能可能很重要,在這些應用程式中,在繪製下一個影格之前的時間內分析每個影格可能很重要 (例如,推論必須快於 33 毫秒才能在 30fps 視訊串流上執行即時推論)。TensorFlow Lite 量化 MobileNet 模型的效能範圍為 3.7 毫秒到 80.3 毫秒。效能基準數字是使用基準化工具產生的。
模型名稱 模型大小 裝置 NNAPI CPU
Mobilenet_V1_1.0_224_quant 4.3 Mb Pixel 3 (Android 10) 6 毫秒 13 毫秒*
Pixel 4 (Android 10) 3.3 毫秒 5 毫秒*
iPhone XS (iOS 12.4.1) 11 毫秒**

* 使用 4 個執行緒。

** 在 iPhone 上使用 2 個執行緒,以獲得最佳效能結果。

模型準確度

準確度是根據模型正確分類圖片的頻率來衡量。例如,聲明準確度為 60% 的模型預計平均有 60% 的時間可以正確分類圖片。

最相關的準確度指標是 Top-1 和 Top-5。Top-1 是指正確標籤在模型輸出中作為機率最高的標籤出現的頻率。Top-5 是指正確標籤在模型輸出中機率最高的 5 個標籤中出現的頻率。

TensorFlow Lite 量化 MobileNet 模型的 Top-5 準確度範圍為 64.4% 到 89.9%。

模型大小

模型在磁碟上的大小會隨著效能和準確度而變化。大小對於行動裝置開發 (可能會影響應用程式下載大小) 或使用硬體 (可用儲存空間可能有限) 而言可能很重要。

TensorFlow Lite 量化 MobileNet 模型的大小範圍為 0.5 到 3.4 MB。

延伸閱讀和資源

使用下列資源進一步瞭解與影像分類相關的概念