Chapter 2 Introducing TFLM (TensorFlow Lite for Microcontroller)

Google 推出 TensorFlow 框架, 可以在 CPU/GPU/TPU 上執行 training 的任務, 考慮手機上的侷限的運算能力不如 PC, 接著推出 Tensorflow Lite 的機器學習框架於手機, 至於 IoT 裝置上用的是 ARM M 系列及其它 embedded MCU (microcontrollers) 的算力以及侷限的 ROM/RAM 空間 (參考附錄 A §A的開發板運算能力比較), 也針對這類型的開發板陸續推出支援機器學習 inference 的 TensorFlow Lite for Microcontrollers (TFLM) 框架, 也出書推廣 TinyML:TensorFlow Lite 機器學習.

截至本文上架(2021-05-18)為止, TFLM 支援的硬體已經有下列的開發板 (書中只有介紹前三種):

  • Arduino Nano 33 BLE Sense
  • SparkFun Edge
  • STM32F746 Discovery kit
  • Adafruit EdgeBadge
  • Adafruit TensorFlow Lite for Microcontrollers Kit
  • Adafruit Circuit Playground Bluefruit
  • Espressif ESP32-DevKitC
  • Espressif ESP-EYE
  • Wio Terminal: ATSAMD51
  • Himax WE-I Plus EVB Endpoint AI Development Board
  • Synopsys DesignWare ARC EM Software Development Platform

而介紹的範例則有

  • Hello World - 示範 TensorFlow Lite for Microcontrollers 的基本功能, 用機器學習的 inference 來推算出 sine 的值
    • Tutorial using any supported device
  • Micro speech - 從麥克風接收語音, 偵測 wake words: “yes,” “no,” “silence” 及 “unkown”
    • Tutorial using SparkFun Edge
  • Magic wand - 讀取 accelerometer 資料來判斷並區分 3 種不同手勢
    • Tutorial using Arduino Nano 33 BLE Sense
  • Person detection - 讀取 camera 的影像資料來偵測是否有人出現在精通前

而我在本文上架時, 已經實驗過的板子及範例有,
* Hello World : STM32 NUCLEO-F03RB, DISCO-F746NG, Arduino Nano 33 BLE Sense, ESP32-CAM (2021/4/5 新增), Sipeed Maix Amigo on RISC-V RV64GC(2021/4/27 新增, 但有問題還在 debug 中, 見 §5.4 )
* Micro speech : DISCO-F746NG, Arduino Nano 33 BLE Sense
* Magic wand : Arduino Nano 33 BLE Sense
* Person detection : ESP32-CAM (2021/4/6 新增) (期待中: 標的物 Arduino Nano 33 BLE Sense)

因為 TensorFlow Lite Micro 的核心程式及 Make 環境的開發持續進行中, 程式的更新過程會造成部分來不及更新的內容及操作產生錯誤, 尤其是 STM32 相關的設定參數, 著實花了一些時間, 並且發 PR 到 TFLM github 更新, ESP32-CAM 也需要注意些小地方.

再者, 從實驗的結果而言, 辨識的效果還有很大的改善空間, 這就當作下一個探討的題目吧.