瞭解 C++ 程式庫

LiteRT for Microcontrollers C++ 程式庫是 TensorFlow 存放區。 不僅易於閱讀、修改、測試良好、整合方便 且與一般 LiteRT 相容

以下文件概述 C++ 程式庫和 提供了建立專案的相關資訊

檔案結構

micro敬上 根目錄的結構相對簡單不過,因為 我們在廣泛的 TensorFlow 存放區中 建立了指令碼 預先產生的專案檔案 (單獨提供相關來源檔案) 各種內嵌開發環境的高可用性

金鑰檔案

使用 LiteRT for Microcontrollers 最重要的檔案 譯者位於專案的根目錄,並隨附測試:

[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.

請參閱「開始使用微控制器」, 會逐步介紹常見的用法

建構系統可為某些平台專屬的 檔案。這些管道位於具有平台名稱的目錄中 cortex-m

還有幾個其他目錄,包括:

  • kernel、 當中包含作業實作項目和相關程式碼。
  • tools、 當中包含建構工具和輸出內容
  • examples、 ,其中包含程式碼範例

建立新專案

我們建議使用 Hello World 範例做為新專案的範本。個人中心 可取得所選平台的版本,做法如下: 請參閱本節的操作說明。

使用 Arduino 程式庫

如果您使用的是 Arduino,Hello World範例包含在 Arduino_TensorFlowLite Arduino 程式庫 (可手動安裝到 Arduino IDE 和 Arduino Create

新增程式庫後,請前往 File -> Examples。您應該會看到 位於名為 TensorFlowLite:hello_world 的清單底部附近。選取 並點選 hello_world 來載入範例。接著,您可將 做為專案基礎

為其他平台產生專案

微控制器的 LiteRT 可以產生獨立的專案 或使用 Makefile 來納入所有必要來源檔案。目前 以及 Keil、Make 和 Mbed 這兩個支援的環境

如要透過 Make 產生這些專案,請複製 TensorFlow/tflite-micro 存放區 然後執行下列指令:

make -f tensorflow/lite/micro/tools/make/Makefile generate_projects

這會需要幾分鐘的時間,因為必須下載一些大型工具鍊, 依附元件完成後,您應該會看到一些已建立的資料夾 位於類似 gen/linux_x86_64/prj/ 的路徑中 ( 確切路徑則視主機作業系統而定)。這些資料夾包含 產生的專案和來源檔案

執行指令後,您即可在以下位置找到 Hello World 專案: gen/linux_x86_64/prj/hello_world。適用對象 例如,hello_world/keil 會包含 Keil 專案。

執行測試

如要建構程式庫並執行所有單元測試,請使用下列指令:

make -f tensorflow/lite/micro/tools/make/Makefile test

如要執行個別測試,請使用下列指令,將 <test_name> 替換為 取代為:

make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>

您可以在專案的 Makefiles 中找到測試名稱。例如: examples/hello_world/Makefile.inc 會指定 Hello World 範例。

建構二進位檔

如要為特定專案 (例如範例應用程式) 建構可執行的二進位檔, 請使用以下指令,將 <project_name> 替換為所需的專案 建構:

make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin

例如,下列指令將為 Hello World 建構二進位檔 應用程式:

make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin

根據預設,專案會針對主機作業系統進行編譯。目的地: 指定不同的目標架構,請使用 TARGET=TARGET_ARCH=。 下例說明如何為一般 API 建構 Hello World 範例 cortex-m0:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin

指定目標後,所有可用的目標專屬來源檔案將成為 來取代原始程式碼例如子目錄 examples/hello_world/cortex_m_generic 包含 SparkFun Edge 實作 「constants.cc」和「output_handler.cc」中,以供當 目標 cortex_m_generic 已指定。

您可以在專案的 Makefiles 中找到專案名稱。例如: examples/hello_world/Makefile.inc 會指定 Hello World 範例。

最佳化核心

tensorflow/lite/micro/kernels 根的參照核心為 在純 C/C++ 中實作,且不包含平台專屬硬體 以及最佳化調整

子目錄會提供最佳化的核心版本。例如: kernels/cmsis-nn 包含數個使用 Arm 的最佳化核心 CMSIS-NN 程式庫。

如要使用最佳化核心產生專案,請使用下列指令: 將 <subdirectory_name> 換成包含 最佳化:

make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects

如要自行建立最佳化設定,你可以為其建立新的子資料夾。三 建議對新的最佳化實作提出提取要求。

產生 Arduino 程式庫

如需產生新的程式庫版本,可以執行以下程式碼: 編寫指令碼:

./tensorflow/lite/micro/tools/ci_build/test_arduino.sh

您可以在以下位置找到產生的程式庫 gen/arduino_x86_64/prj/tensorflow_lite.zip

攜碼轉移至新裝置

將微控制器的 LiteRT 移植到新平台和 裝置位於 micro/docs/new_platform_support.md