動態環境中的物聯網 (IoT) 運用正在不斷擴展,已經超出物體檢測范圍,在諸如安全、環境監測、安防和工業物聯網 (IIoT) 之類應用中現已包括視覺物體識別。由于物體識別是自適應的,并且涉及使用機器學習 (ML) 模型,因此是一個復雜的領域,很難從頭開始學習并獲得有效實現。
困難在于 ML 模型只與其數據集好壞有關。一旦獲得了正確的數據,系統必須經過適當的訓練,然后根據數據集進行操作,才能實用。
本文將向開發者展示如何將 Google 的 TensorFlow Lite for Microcontrollers ML 模型實現到 Microchip Technology 微控制器中。然后將解釋如何使用圖像分類和物體檢測學習數據集以及 TensorFlow Lite 以最少的定制編碼輕松識別物體。
最后將介紹來自 Adafruit Industries 的 TensorFlow Lite ML 入門套件,讓開發人員了解 ML 的基礎知識。
用于嵌入式視覺系統的 ML
廣義上講,ML 給計算機或嵌入式系統賦予了類似人的模式識別能力。從人類感官的角度來看,這意味著使用麥克風和攝像頭之類傳感器來模仿人類的聽覺和視覺的感官感知。雖然傳感器很容易用于捕捉音頻和視覺數據,但是一旦數據被數字化和存儲起來,就必須對其進行處理,這樣才能與存儲在存儲器中代表已知聲音或物體的模式進行匹配。這種方式也面臨著挑戰,例如攝像頭捕捉到的視覺物體的圖像數據不會與存儲器中存儲的物體數據完全匹配。需要視覺識別物體的 ML 應用必須對數據進行處理,以便能夠準確有效地將攝像頭捕捉到的模式與存儲在存儲器中的模式進行匹配。
有不同的庫或引擎用于傳感器所捕獲數據的匹配。TensorFlow 就是一個用于模式匹配的開源代碼庫。TensorFlow Lite for Microcontrollers 代碼庫專門為在微控制器上運行而設計,因此降低了對存儲器和 CPU 的要求,可以在更有限的硬件上運行。具體來說,它只需要一個 32 位的微控制器和不到 25 千字節 (KB) 的閃存。
然而,雖然 TensorFlow Lite for Microcontrollers 就是 ML 引擎,但系統仍然需要一個模式學習數據集,供其進行識別學習。無論 ML 引擎有多好,系統也不會好過其學習數據集。對于視覺物體來說,一些學習數據集可能需要多個大型模型和無數 GB 的數據。更多的數據需要更高的 CPU 性能來快速尋找精確的匹配,這就是為什么這類應用通常要在高性能計算機或高端筆記本電腦上運行的原因。
對于嵌入式系統應用來說,應該只需要在學習數據集中存儲那些應用所需的特定模型。如果一個系統應該識別工具和五金件,那么代表水果和玩具的模型就可以去掉。這樣可以減少學習數據集的大小,進而降低嵌入式系統的存儲器需求,從而在降低成本的同時提高性能。
一個 ML 微控制器
為了運行 TensorFlow Lite for Microcontrollers,Microchip Technology 將機器學習目標主體投向了微控制器,即基于 Arm? Cortex?-M4F 的 ATSAMD51J19A-AFT 微控制器(圖 1)。它具有 512KB 的閃存和 192KB 的 SRAM,運行速度為 120 兆赫茲 (MHz)。ATSAMD51J19A-AFT 是 Microchip Technology ATSAMD51 ML 微控制器家族的一員。它符合汽車級 AEC-Q100 1 級質量標準,可在 -40°C 至 +125°C 的溫度下工作,因此適合用于最惡劣的物聯網和工業物聯網環境。它是一款低電壓微控制器,在 120 MHz 下運行時,工作電壓為 1.71 至 3.63 伏。

圖 1:ATSAMD51J19A 基于 Arm Cortex-M4F 內核,運行頻率為 120 MHz,是一款全功能的微控制器,具有 512 KB 閃存和 192 KB SRAM。(圖片來源:Microchip Technology)
ATSAMD51J19A 支持的網絡協議包括用于工業網絡的 CAN 2.0B 和用于大多數有線網絡的10/100 以太網。這樣該微控制器就可以在各種物聯網網絡上工作。其 USB 2.0 接口支持主機和設備兩種工作模式,可用于設備調試或系統聯網。
4 KB 的組合指令和數據緩存提高了處理 ML 代碼時的性能。浮點單元 (FPU) 對于提高 ML 代碼的性能以及處理原始傳感器數據也很有用。
存儲學習數據集
ATSAMD51J19A 還有一個 QSPI 接口,用于外部程序或數據存儲器存儲。當學習數據集超過片上閃存容量時,這非常有用,可外接額外數據存儲器。QSPI 還支持芯片內執行 (XiP),用于外部高速程序存儲器擴展。
ATSAMD51J19A 還具有 SD/MMC 存儲卡主控制器 (SDHC),這對于 ML 應用來說非常有用,因為它能夠輕松實現 ML 代碼和學習數據集的存儲器交換。TensorFlow Lite for Microcontrollers 引擎可以在 ATSAMD51J19A 的 512KB 閃存中運行,同時學習數據集可以定期升級和改進。學習數據集可以存儲在外部 QSPI 閃存或 QSPI EEPROM 中,根據網絡配置,可以通過網絡遠程升級。然而,對于某些系統來說,用另一張存儲卡進行改進學習數據集的物理交換可能更方便。在這種配置中,開發人員需要決定系統是否應該將存儲卡設計成支持熱插拔,或者是否需要關閉物聯網節點。
如果物聯網節點的空間極其有限,那么與其使用外部存儲器,不如盡可能多地將應用放到微控制器存儲器中,因為這可能更有利。Microchip Technology 的 ATSAMD51J20A-AFT 與 ATSAMD51J19A 類似,引腳兼容,只是它有 1 MB 的閃存和 256 KB 的 SRAM,為學習數據集提供了更多的片上存儲空間。
使用 TensorFlow Lite for Microcontrollers 進行開發
Adafruit Industries 支持使用 4317 TensorFlow Lite for Microcontrollers 開發套件在 ATSAMD51J19A 上進行開發(圖 2)。該板有 2 MB 的 QSPI 閃存,可用于存儲學習數據集。該套件附帶一個用于 ML 音頻識別的麥克風插孔。其 1.8 英寸彩色 160 × 128 TFT LCD 可用于開發和調試。當 TensorFlow Lite for Microcontrollers 與語音識別學習數據集一起使用時,該顯示屏也可用于語音識別演示。當應用識別出不同的單詞時,它們可以顯示在這塊屏幕上。
這個 Adafruit Industries 套件帶有八個按鈕、一個三軸加速計、一個光傳感器、一個迷你揚聲器和一塊鋰聚合物電池。ATSAMD51J19A 上的 USB2.0 端口連接了一個連接器,用于電池充電、調試和編程。

圖 2:Adafruit Industries 4317 TensorFlow Lite for Microcontrollers 開發套件配備了一個用于開發的彩色 TFT LCD,并可用于顯示 ML 操作的結果。(圖片來源:Adafruit Industries)
Adafruit 套件附帶最新版本 TensorFlow Lite for Microcontrollers。學習數據集可以使用 USB 端口加載到 ATSAMD51J19A 微控制器的 512KB 閃存中,也可以加載到外部 2MB 的 QSPI 存儲器中。
進行圖像識別評估時,可以將 TensorFlow 物體檢測學習數據集加載到開發板上。開發板帶有連接微控制器并口和串口的端口,其中許多端口可用于連接到外部攝像頭。在微控制器上加載了物體檢測學習數據集后,LCD 可以用來顯示物體檢測 ML 處理結果輸出。因此,當它識別出一個香蕉時,TFT 顯示屏就會顯示識別出的物體以及置信度百分比。以下為結果顯示示例:
香蕉:95%
扳手:12%
眼鏡:8%
梳子:2%。
對于物聯網物體檢測應用的開發,該套件可以加快開發速度,并幫助診斷任何不正確的檢測結果。
總結
ML 是一個不斷擴展的技術領域,需要專業的技能才能從頭開始開發微控制器引擎和模型并在邊緣有效地實現它們。但是,如果在低成本、高效率的微控制器或開發板上使用像 TensorFlow Lite for Microcontrollers 這樣的現有代碼庫,那么就可以節省時間和金錢,快速打造一個高性能的 ML 系統,在一個物聯網節點快速、可靠、高效地檢測物體。
評論