實(shí)現(xiàn)TinyML需要哪些庫(kù)、平臺(tái)以及工作流程,你知道嗎?
在開(kāi)始使用TinyML時(shí),可能都有一個(gè)令人生畏的經(jīng)歷。隨著時(shí)間的推移,機(jī)器學(xué)習(xí) (ML) 在基于邊緣的工業(yè)應(yīng)用中得到了發(fā)展和普及。從傳統(tǒng)意義上來(lái)說(shuō),選擇合適的神經(jīng)網(wǎng)絡(luò)模型、并對(duì)其進(jìn)行訓(xùn)練和調(diào)整以進(jìn)行部署,是一個(gè)非常復(fù)雜的過(guò)程。不過(guò),隨著專為T(mén)inyML應(yīng)用而設(shè)計(jì)的人工智能 (AI)/ML資源的不斷豐富,可以提供的幫助也越來(lái)越多。
圖源: NicoElNino/Stock.adobe.com
作者:Mark Patrick,貿(mào)澤電子專稿
在本文中,我們將為大家介紹TensorFlow Lite、Edge Impulse和Fraunhofer AIfES在資源有限的微控制器上訓(xùn)練和部署AI模型時(shí)常用的方法。
部署邊緣應(yīng)用
在工業(yè)電機(jī)振動(dòng)監(jiān)測(cè)應(yīng)用中,開(kāi)發(fā)人員在設(shè)計(jì)時(shí)通常需要使用加速度計(jì),收集數(shù)十個(gè)不同電機(jī)的振動(dòng)傳感器數(shù)據(jù)。每個(gè)電機(jī)都應(yīng)處于不同的潛在故障階段,這樣開(kāi)發(fā)人員才能收集到具有代表性的數(shù)據(jù)。同樣,他們需要記錄處于完美工作狀態(tài)的電機(jī)數(shù)據(jù),然后選擇合適的算法。這些算法本質(zhì)上是幾行代碼,可用于發(fā)現(xiàn)偏離完美運(yùn)行狀態(tài)的振動(dòng)信號(hào)的構(gòu)成規(guī)則。開(kāi)發(fā)團(tuán)隊(duì)在不了解各個(gè)振動(dòng)傳感器數(shù)據(jù)之間關(guān)系和復(fù)雜性的情況下,訓(xùn)練算法根據(jù)傳感器數(shù)據(jù)進(jìn)行預(yù)測(cè)。因此,所創(chuàng)建的機(jī)器學(xué)習(xí)算法構(gòu)成了一個(gè)系統(tǒng)模型,并可以預(yù)測(cè)電機(jī)運(yùn)行狀況。要強(qiáng)調(diào)的是,雖然ML模型是一種有益的資源,但其推理是基于訓(xùn)練數(shù)據(jù)的預(yù)測(cè)、估計(jì)和近似值,而不是精確的答案。
基于網(wǎng)絡(luò)邊緣的推理越來(lái)越受歡迎,原因有很多。首先,無(wú)需將數(shù)據(jù)回傳至服務(wù)器進(jìn)行推理, 沒(méi)有延遲和帶寬成本。同時(shí),由于數(shù)據(jù)不會(huì)被傳輸或存儲(chǔ)在云服務(wù)器上,因此不存在隱私問(wèn)題。為這些邊緣應(yīng)用選擇的微控制器通常功耗很小,甚至有些還能夠長(zhǎng)期使用電池工作,從而降低了安裝復(fù)雜性。要知道,許多用于科學(xué)推理應(yīng)用的高性能GPU需要消耗數(shù)百瓦的能量,在某些情況下可能達(dá)到500W, 而微控制器的典型功耗曲線則為毫瓦甚至微瓦級(jí)。
加速開(kāi)發(fā)和部署的資源
隨著在網(wǎng)絡(luò)邊緣推理概念的興起,也出現(xiàn)了一些專門(mén)為低功耗微控制器設(shè)計(jì)的資源。
適用于微控制器的TensorFlow Lite
TensorFlow是成熟的ML資源之一。它是Google在2015年開(kāi)發(fā)的一個(gè)端到端ML開(kāi)源平臺(tái),可提供一個(gè)由工具、庫(kù)和社區(qū)資源組成的全面、靈活生態(tài)系統(tǒng)。TensorFlow允許開(kāi)發(fā)人員構(gòu)建和部署各種ML應(yīng)用,例如科學(xué)、醫(yī)學(xué)和各種商業(yè)應(yīng)用等。
適用于微控制器的TensorFlow Lite的開(kāi)源代碼庫(kù)由Google于2017年推出,旨在滿足人們對(duì)在只有數(shù)十KB內(nèi)存的低功耗微控制器上進(jìn)行推理的日益增長(zhǎng)的需求。TensorFlow Lite的核心運(yùn)行時(shí)二進(jìn)制庫(kù)僅占用18kB的Arm® Cortex®-M3處理器內(nèi)存,并且可運(yùn)行多種不同的基本神經(jīng)網(wǎng)絡(luò)模型。它不需要操作系統(tǒng)支持、C或C++庫(kù)甚至是直接內(nèi)存分配,可以在“裸機(jī)”上運(yùn)行。其代碼庫(kù)用C++ 11編寫(xiě)而成,需要使用32位微控制器。
適用于微控制器的TensorFlow Lite使用的是TensorFlow訓(xùn)練環(huán)境中針對(duì)微控制器優(yōu)化的轉(zhuǎn)換模型。適用于微控制器的TensorFlow Lite在Arm Cortex-M系列上得到了很好的支持和廣泛測(cè)試,并可移植到其他MCU架構(gòu),例如基于Tensilica的Espressif ESP32系列和Synopsys ARC處理器內(nèi)核系列。
除了適用于微控制器的TensorFlow Lite,還有一組可用于Android、iOS和Linux嵌入式單板計(jì)算機(jī)(如Raspberry Pi和Coral Edge TPU)的TensorFlow Lite優(yōu)化代碼庫(kù)資源。
下面列出了適用于微控制器的TensorFlow Lite的工作流程(來(lái)源:tensorflow.org):
訓(xùn)練模型:
生成適合目標(biāo)設(shè)備并包含支持操作的小型TensorFlow模型。
使用TensorFlow Lite轉(zhuǎn)換器轉(zhuǎn)換為T(mén)ensorFlow Lite模型。
使用標(biāo)準(zhǔn)工具轉(zhuǎn)換為C語(yǔ)言字節(jié)數(shù)組,以將其存儲(chǔ)在設(shè)備上的只讀程序內(nèi)存中。
使用C++庫(kù)進(jìn)行推斷并處理結(jié)果。
Edge Impulse
Edge Impulse為嵌入式微控制器設(shè)備提供了一個(gè)完整的機(jī)器學(xué)習(xí)培訓(xùn)到部署平臺(tái)(圖1)。Edge Impulse預(yù)計(jì)將用于全球20,000多個(gè)項(xiàng)目,其目標(biāo)是在最短的時(shí)間內(nèi)讓嵌入式ML項(xiàng)目投入到生產(chǎn),并將部署時(shí)間從幾年縮短到幾周。其重點(diǎn)是使用配備各種傳感器的嵌入式設(shè)備,包括音頻和視覺(jué)設(shè)備,并進(jìn)行大規(guī)模部署。目標(biāo)設(shè)備包括從資源受限的低功耗微控制器到功能更強(qiáng)大的微處理器和CPU,所支持的模型類型包括TensorFlow和Keras。
圖1: Edge Impulse — 用于微控制器機(jī)器學(xué)習(xí)開(kāi)發(fā)的完整綜合平臺(tái) (圖源:Edge Impulse)
Edge Impulse的典型ML應(yīng)用包括工業(yè)、物流和醫(yī)療保健應(yīng)用,例如預(yù)測(cè)性維護(hù)、資產(chǎn)跟蹤和監(jiān)控以及人類和動(dòng)物感測(cè)等。
Edge Impulse遵守Responsible AI Institute的行為準(zhǔn)則,要求其用戶簽署一份許可,證明他們的應(yīng)用不涉及犯罪、監(jiān)視或國(guó)防用途。
圖2說(shuō)明了Edge Impulse的模型測(cè)試功能。此示例將STMicroelectronics MCU與數(shù)字麥克風(fēng)相結(jié)合,目的是識(shí)別兩個(gè)單詞,即house和zero。模型測(cè)試輸出顯示了這兩個(gè)單詞、背景噪聲和其他未分類單詞的可能概率百分比。
圖2: Edge Impulse的模型測(cè)試功能 (圖源:Edge Impulse)
Fraunhofer AIfES
德國(guó)研究機(jī)構(gòu)Fraunhofer開(kāi)發(fā)了一款用C語(yǔ)言編寫(xiě)的人工智能嵌入式系統(tǒng) (AIfES) 框架,具有獨(dú)立于平臺(tái)的庫(kù)。AIfES為開(kāi)源架構(gòu),并遵守GNU通用公共許可 (GPL) 協(xié)議。它使用標(biāo)準(zhǔn)庫(kù)GNU GCC,因而可顯著簡(jiǎn)化系統(tǒng)實(shí)施,并且?guī)缀蹩梢栽谌魏斡布O(shè)備上運(yùn)行,包括從8位微控制器到功能更強(qiáng)大的智能手機(jī)處理器和臺(tái)式計(jì)算機(jī)CPU等。 此外,還為基于Arduino平臺(tái)進(jìn)行設(shè)計(jì)的創(chuàng)新人員提供了合適的AIfES庫(kù)。
AIfES可免費(fèi)用于個(gè)人項(xiàng)目,而對(duì)于商業(yè)應(yīng)用則需要許可協(xié)議。
圖3展示了AIfES庫(kù)在各種平臺(tái)類型上的功能和兼容性。Fraunhofer AIfES庫(kù)與TensorFlow、Keras和PyTorch等流行的Python ML框架兼容,在流程上也類似。
圖3:The Fraunhofer人工智能嵌入式系統(tǒng) (AIfES) 庫(kù)功能 (圖源:Fraunhofer Institute for Microelectronic Circuits and Systems)
TinyML實(shí)施的后續(xù)步驟
在本文中,我們重點(diǎn)介紹了適合快速開(kāi)發(fā)和部署基于網(wǎng)絡(luò)邊緣TinyML應(yīng)用的三個(gè)機(jī)器學(xué)習(xí)庫(kù)和平臺(tái)。開(kāi)發(fā)用于邊緣部署的嵌入式ML IIoT應(yīng)用可能是一項(xiàng)艱巨的任務(wù)。然而,這些資源和工作流程能夠極大地簡(jiǎn)化神經(jīng)網(wǎng)絡(luò)的復(fù)雜性,也減少了對(duì)深入理解數(shù)據(jù)科學(xué)原理的需求。
我們還需要了解文中所述開(kāi)發(fā)資源支持的各種微控制器平臺(tái)和評(píng)估套件。這樣,我們就可以借助較少的其他組件、一塊簡(jiǎn)單的低功耗微控制器評(píng)估板、一個(gè)傳感器和上述資源,在不到一個(gè)小時(shí)的時(shí)間內(nèi)制作出一個(gè)TinyML演示項(xiàng)目。
作者簡(jiǎn)介
Mark于2014年7月加入了貿(mào)澤電子,此前他曾在RS Components擔(dān)任高級(jí)營(yíng)銷職務(wù)。在加入RS之前,Mark在Texas Instruments擔(dān)任了8年的應(yīng)用支持和技術(shù)銷售職位,并獲得了考文垂大學(xué)的電子工程一級(jí)榮譽(yù)學(xué)位。