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

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

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