本頁面由 Cloud Translation API 翻譯而成。
Switch to English

TensorFlow Lite入門

TensorFlow Lite提供了在移動,嵌入式和IoT設備上轉換和運行TensorFlow模型所需的所有工具。以下指南逐步介紹了開發人員工作流程的每個步驟,並提供了指向更多說明的鏈接。

1.選擇型號

TensorFlow模型是一種數據結構,其中包含經過訓練可以解決特定問題的機器學習網絡的邏輯和知識。從使用預訓練的模型到訓練自己的模型,有很多方法可以獲取TensorFlow模型。

要將模型與TensorFlow Lite一起使用,您必須將完整的TensorFlow模型轉換為TensorFlow Lite格式-您無法使用TensorFlow Lite創建或訓練模型。因此,您必須從常規TensorFlow模型開始,然後轉換模型

使用預先訓練的模型

TensorFlow Lite團隊提供了一組預訓練的模型,可以解決各種機器學習問題。這些模型已轉換為可與TensorFlow Lite一起使用,並準備在您的應用程序中使用。

預先訓練的模型包括:

請參閱我們的預先訓練模型完整列表模式

其他來源的模型

您可以在許多其他地方獲得預訓練的TensorFlow模型,包括TensorFlow Hub 。在大多數情況下,這些模型不會以TensorFlow Lite格式提供,您必須在使用前進行轉換

重新訓練模型(轉移學習)

轉移學習使您可以採用經過訓練的模型,然後對其進行重新訓練以執行其他任務。例如, 圖像分類模型可以被重新訓練以識別圖像的新類別。與從頭訓練模型相比,重新訓練花費的時間更少,所需的數據更少。

您可以使用轉移學習為應用程序定制預訓練的模型。在TensorFlow代碼實驗室中的“ 識別花”中學習如何執行轉移學習。

訓練定制模型

如果您已經設計並訓練了自己的TensorFlow模型,或者訓練了從其他來源獲得的模型,則必須將其轉換為TensorFlow Lite格式

您還可以嘗試TensorFlow Lite模型製作器庫 ,該簡化了使用自定義數據集訓練TensorFlow Lite模型的過程。

2.轉換模型

TensorFlow Lite旨在通過有限的計算和內存資源在移動和其他嵌入式設備上高效執行模型。這種效率的一部分來自使用特殊格式存儲模型。 TensorFlow模型必須先轉換為這種格式,然後才能由TensorFlow Lite使用。

轉換模型可減小文件大小,並引入不影響準確性的優化。 TensorFlow Lite轉換器提供了一些選項,使您可以進一步減小文件大小並提高執行速度,但需要權衡取捨。

TensorFlow Lite轉換器

TensorFlow Lite轉換器是Python API提供的工具,可將經過訓練的TensorFlow模型轉換為TensorFlow Lite格式。它還可以引入優化,這將在第4節“ 優化模型”中介紹

以下示例顯示了將TensorFlow SavedModel轉換為TensorFlow Lite格式的示例:

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

您可以以類似方式轉換TensorFlow 2.0模型

也可以從命令行使用轉換器,但建議使用Python API。

選件

轉換器可以從多種輸入類型進行轉換。

轉換TensorFlow 1.x模型時 ,這些是:

轉換TensorFlow 2.x模型時 ,這些是:

可以將轉換器配置為應用各種優化,以提高性能或減小文件大小。這將在第4節“ 優化模型”中介紹

作業相容性

TensorFlow Lite當前支持TensorFlow操作有限子集 。長期目標是支持所有TensorFlow操作。

如果要轉換的模型包含不受支持的操作,則可以使用TensorFlow Select包含來自TensorFlow的操作。這將導致將更大的二進製文件部署到設備。

3.對模型進行推斷

推論是通過模型運行數據以獲得預測的過程。它需要一個模型,一個解釋器和輸入數據。

TensorFlow Lite解釋器

TensorFlow Lite解釋器是一個庫,該庫接受模型文件,對輸入數據執行其定義的操作,並提供對輸出的訪問。

解釋器可在多個平台上工作,並提供簡單的API,用於運行Java,Swift,Objective-C,C ++和Python的TensorFlow Lite模型。

以下代碼顯示了從Java調用的解釋器:

try (Interpreter interpreter = new Interpreter(tensorflow_lite_model_file)) {
  interpreter.run(input, output);
}

GPU加速和代表

一些設備為機器學習操作提供硬件加速。例如,大多數手機具有GPU,其執行浮點矩陣運算的速度比CPU更快。

提速可能很大。例如,當使用GPU加速時,MobileNet v1圖像分類模型在Pixel 3手機上的運行速度快5.5倍。

TensorFlow Lite解釋器可以與Delegates一起配置,以利用不同設備上的硬件加速。 GPU委託允許解釋器在設備的GPU上運行適當的操作。

以下代碼顯示了Java使用的GPU委託:

GpuDelegate delegate = new GpuDelegate();
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Interpreter interpreter = new Interpreter(tensorflow_lite_model_file, options);
try {
  interpreter.run(input, output);
}

為了增加對新硬件加速器的支持,您可以定義自己的委託

Android和iOS

TensorFlow Lite解釋器可以在兩個主要的移動平台上輕鬆使用。首先,請瀏覽Android快速入門iOS快速入門指南。 示例應用程序可用於兩個平台。

要獲取所需的庫,Android開發人員應使用TensorFlow Lite AAR 。 iOS開發人員應將CocoaPods用於Swift或Objective-C

的Linux

嵌入式Linux是用於部署機器學習的重要平台。要開始使用Python對TensorFlow Lite模型執行推理,請遵循Python quickstart

要改為安裝C ++庫,請參閱Raspberry Pi基於Arm64的板的構建說明(適用於Odroid C2,Pine64和NanoPi等板)。

微控制器

TensorFlow Lite for MicrocontrollersTensorFlow Lite的實驗端口,用於僅具有千字節內存的微控制器和其他設備。

運作方式

如果您的模型需要TensorFlow Lite中尚未實現的TensorFlow操作,則可以使用TensorFlow Select在模型中使用它們。您需要構建一個自定義版本的解釋器,其中包括TensorFlow操作。

您可以使用自定義運算符來編寫自己的操作,也可以將新操作移植到TensorFlow Lite中。

操作員版本允許您向現有操作中添加新功能和參數。

4.優化模型

TensorFlow Lite提供了一些工具來優化模型的大小和性能,而對精度的影響通常很小。優化的模型可能需要稍微更複雜的訓練,轉換或集成。

機器學習優化是一個不斷發展的領域,隨著新技術的發展,TensorFlow Lite的模型優化工具包也在不斷增長。

性能

模型優化的目標是在給定設備上達到性能,模型尺寸和精度的理想平衡。 性能最佳實踐可以幫助您指導這一過程。

量化

通過降低模型中值和運算的精度,量化可以減少模型的大小和推理所需的時間。對於許多模型,只有最小的精度損失。

TensorFlow Lite轉換器使量化TensorFlow模型變得容易。以下Python代碼量化了SavedModel並將其保存到磁盤:

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_quantized_model)

TensorFlow Lite支持將值的精度從完整浮點降低到半精度浮點(float16)或8位整數。每種選擇的模型大小和精度都需要權衡取捨,並且某些操作針對這些精度降低的類型優化了實現。

要了解有關量化的更多信息,請參閱訓練後量化

模型優化工具包

模型優化工具包是一組工具和技術,旨在使開發人員可以輕鬆地優化其模型。許多技術可以應用於所有TensorFlow模型,並且並非特定於TensorFlow Lite,但是當在資源有限的設備上運行推理時,它們特別有價值。

下一步

現在您已熟悉TensorFlow Lite,請探索以下一些資源: