人工智慧之 TensorFlow 簡介

關鍵字 : AI人工智慧

TensorFlow 簡介

TensorFlow是一個用於機器學習和人工智慧的免費的開源軟體庫,用於各種機器學習與數據處理任務,特別是深度神經網絡的訓練和推理。TensorFlow是由Google Brain團隊開發,最初主要用於Google內部的研究和生產,如語音識別、Gmail、相冊和搜索等。TensorFlow最初版本於2015年11月9日在Apache 2.0開源許可證下發布。

2017年5月,Google宣布了一個專門用於移動開發的軟體棧TensorFlow Lite,是針對移動設備和邊緣設備的輕量級解決方案。TensorFlow Lite 可以在 Android、iOS、Edge TPU 和 Raspberry Pi 等移動設備和嵌入式設備上進行推斷。

2019年5月,Google的Tensor Flow Lite Micro與ARM的uTensor宣布合併。uTensor可以將機器學習模型轉換為可讀和獨立的C++源文件,簡化了與任何嵌入式項目的集成,特別是為低功耗、資源受限的嵌入式設備而設計,支持廣泛的基於Arm Cortex-M內核的微控制器。


TensorFlow 平台及其生態系統

TensorFlow 是一個端到端的機器學習開源平台。由工具、庫和社區資源組成的全面、靈活的生態系統,使研究人員能夠推動機器學習最新技術的發展,開發人員能夠輕鬆構建和部署由機器學習驅動的應用。

針對不同的應用,TensorFlow提供了3種類型的庫:

  • TensorFlow (library) 是可以幫助開發和訓練機器學習模型的核心開源庫。

  • TensorFlow Lite 是用於在移動、微處理器和其他邊緣設備上部署模型的庫。

  • TensorFlow Lite Micro (TFLM) 是在DSP、微控制器和其他嵌入式目標上運行機器學習模型的庫,具有較小的內存占用和極低的功耗。

其中,TensorFlow Lite Micro 是 TensorFlow Lite 的一個移植版本,主要面向微控制器(MCU)、DSP(digital signal processors)和其他存儲資源受限的設備部署的機器學習模型。

TensorFlow Lite Micro可以直接在微控制器(MCU)上運行,不需要操作系統支持,也不需要任何標準 C/C++ 庫和動態內存分配。核心運行時(core runtime)在 Arm Cortex M3 上運行時僅需16KB字節的存儲空間。即使運行語音關鍵字檢測模型,也只需 22KB 字節的存儲空間。

利用TensorFlow生態系統的模型優化工具,並另有嵌入式專用的離線和在線優化工具,以減少模型和框架的內存占用。TensorFlow Lite Micro提供了工具、CI以及如何將其集成到各種嵌入式開發環境中的例子。

TensorFlow Lite Micro 支持的平台

適用於微控制器的 TensorFlow Lite Micro 用 C++ 11 編寫而成,需要使用 32 位平台。針對基於 Arm Cortex-M 系列架構的眾多處理器,它已經過了廣泛的測試,並已移植到其他架構(包括 ESP32)。

TensorFlow Lite Micro功能和組件:

  • C++ API,其運行時(runtime)在 Cortex M3 上僅需 16KB

  • 使用標準的 TensorFlow Lite FlatBuffer 架構(schema)

  • 為 Arduino、Keil 和 Mbed 等較為流行的嵌入式開發平台預生成的項目文件

  • 針對多個嵌入式平台優化

  • 演示口語熱詞檢測的示例代碼


支持的開發板包括:

  • Arduino Nano 33 BLE Sense - 基於 Nordic nRF52840 微控制器,Arm Cortex-M4內核,頻率64MHz,運行在 Arm® Mbed™ OS 上

  • SparkFun Edge - 基於Ambiq Micro Apollo3 Blue微控制器,ARM Cortex-M4F內核,頻率48MHz

  • STM32F746 Discovery kit - STMicroelectronics STM32F746NG微控制器,Arm® Cortex®-M7內核,頻率216MHz

  • Adafruit EdgeBadge - 基於Microchip ATSAMD51J19微控制器,ARM Cortex-M4F內核,頻率120MHz

  • Adafruit TensorFlow Lite for Microcontrollers Kit - 基於Microchip ATSAMD51J19微控制器,ARM Cortex-M4F內核,頻率120MHz

  • Adafruit Circuit Playground Bluefruit - 基於 Nordic nRF52840 微控制器,Arm Cortex-M4內核,頻率64MHz

  • Espressif ESP32-DevKitC - 基於樂鑫的ESP32微控制, Xtensa® 32-bit LX6內核, 主頻達 240 MHz

  • Espressif ESP-EYE - 基於樂鑫的ESP32-S3 SoC,Xtensa® 32 位 LX7內核,主頻達 240 MHz

  • Wio Terminal:ATSAMD51 - 基於Microchip ATSAMD51P19微控制器,ARM Cortex-M4F內核,頻率 120MHz

  • Himax WE-I Plus EVB Endpoint AI 開發板 - 基於奇景光電 HX6537-A處理器,Synopsys ARC® EM9D內核,頻率達400MHz

  • Synopsys DesignWare ARC EM 軟體開發平台 - ARC EM處理器和子系統

  • Sony Spresense - Sony 多核微處理器,基於ARM® Cortex®-M4F,頻率達156MHz


社區支持的TFLM例程:

  • Arduino

  • Coral Dev Board Micro - NXP RT1176 microcontroller, dual-core MCU with Cortex M7 and M4

  • Espressif Systems Dev Boards

  • Renesas Boards - Renesas Advanced (RA) 32-bit microcontrollers (MCUs) ,Arm® Cortex®-M33,up to 240MHz(RA8), 60MHz(RA2)

  • Silicon Labs Dev Kits - EFR32xG24 Dev Kit, ARM® Cortex®-M33, 78 MHz

  • Sparkfun Edge

  • Texas Instruments Dev Boards


社區支持的內核:

  • Cortex-M

  • Hexagon

  • RISC-V

  • Xtensa


TensorFlow Lite Micro 的工作流程

若要在微控制器上部署並運行 TensorFlow 模型,必須執行以下步驟:

  • 訓練模型:

    • 生成小型 TensorFlow 模型,該模型適合您的目標設備並包含支持的操作。

    • 使用 TensorFlow Lite 轉換器轉換為 TensorFlow Lite 模型。

    • 使用標準工具轉換為 C 語言字節數組,以將其存儲在設備上的只讀程序內存中。

  • 使用 C++ 庫在設備上進行推斷並處理結果。


TensorFlow Lite Micro 的限制

適用於微控制器的 TensorFlow Lite 專為滿足微控制器開發的特定限制條件而設計。如果您使用的是更強大的設備(例如 Raspberry Pi 等嵌入式 Linux 設備),那麼標準 TensorFlow Lite 框架可能更易於集成。

應考慮以下限制:

  • 支持的 TensorFlow 操作有限

  • 支持的設備有限

  • 需要手動管理內存的低階 C++ API

  • 不支持設備端訓練

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能