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

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

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