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