使用程式庫、平台和工作流程實施TinyML

作者 : Mark Patrick,Mouser Electronics

文中討論TensorFlow Lite、Edge Impulse和Fraunhofer AIES等用於在入門級微控制器(MCU)簡化訓練和部署AI 模型的方法...

為了趕上TinyML等新的人工智慧(AI)工具發展步伐,似乎還存在著很大挑戰性。選擇合適神經網路模型,然後對其進行訓練和調整以用於特定應用的過程並非易事,但可以透過數量越來越多且還在不斷創建的TinyML資源尋求幫助。

在本文中,我們考量TensorFlow Lite、Edge Impulse和Fraunhofer AIES等用於在入門級微控制器(MCU)簡化訓練和部署AI 模型的方法。

在邊緣應用部署 TinyML

為了監控工業應用中馬達振動,開發人員可能會首先從安裝在許多不同馬達的加速度計擷取有關振動訊息。為確保分析中包含足夠廣泛資料,理想情況下,每個馬達應處於其各自維護週期不同階段,並且樣本還應包括一個少有磨損或沒有磨損新馬達。

下一步則是選擇一種演演算法與感測器資料一起匹配,以協助揭示振動特徵與磨損進展之間關係。然後可使用感測器資料來對演算法進行訓練,透過訓練該演算法能夠成為可用於預測馬達狀況系統模型。雖然機器學習(ML)模型很有幫助,但推論得到結果是僅基於可用訓練資料進行預測,而不是一門精確科學。

基於邊緣推論越來越流行,這其中有幾個因素。首先,它不再需要將資料串流傳輸到雲端,從而減輕了延遲和頻寬問題。出於同樣原因,隱私也不是一個問題。邊緣裝置通常還可使用低功耗微控制器(以mW計),這意味著它們可以在電池供電狀況下長時間運作。

廣泛資源簡化 TinyML 開發和應用

伴隨邊緣推論變得越來越流行,出現了許多支援這種技術的資源。

用於MCU的TensorFlow Lite

TensorFlow由Google於2015年創建,是一個成熟機器學習資源。它是一個用於機器學習開源平台,可提供一整套工具、程式庫和共用資源,使開發人員能夠將機器學習應用於科學、醫學和商業應用等領域。

2017 年,Google推出了針對MCU的TensorFlow Lite (TensorFlow Lite for Microcontrollers),以回應人們對使用只有數十KB可用記憶體低功耗裝置進行推論日益增加的需求。TensorFlow Lite核心運作時,二進位庫在Arm Cortex M3中僅佔用18kB記憶體,並且能夠運作基本神經網路模型。它不需要作業系統、C或C++庫,也不需要直接分配記憶體。該庫是採用C++ 11編寫,只需一個32位元MCU。

TensorFlow Lite for Microcontrollers使用模型則是完整TensorFlow訓練環境中模型最佳化版本,並得到很好支援,已經在Arm Cortex-M系列上進行了測試,後來移植到其他MCU架構,例如基於 Tensilica的Espressif ESP32系列和Synopsys ARC處理器核心系列。

另一組資源TensorFlow Lite可用於Android、iOS和基於嵌入式Linux單板電腦,例如Raspberry Pi和 Coral Edge TPU。

圖 1 展示了使用TensorFlow Lite for Microcontrollers時的工作流程。

圖 1:TensorFlow Lite for Microcontrollers工作流程。(資料來源:TensorFlow.org)

Edge Impulse

Edge Impulse能夠為嵌入式MCU提供了一個全面機器學習開發平台。Edge Impulse目標是讓嵌入式 ML專案在盡可能短時間內實現從開始到生產,它已應用於全球20,000多個專案,將開發時間縮短到數週(而不是以年計)。重點是使用配備各種感測器嵌入式裝置,包括音訊和視覺,並得到大量部署。它針對從入門級MCU到高階微處理器和CPU等各種裝置,其中包括TensorFlow和Keras。

圖 2:Edge Impulse是一個用於MCU機器學習開發之完整綜合平台。(圖片來源:Edge Impulse)

Edge Impulse TinyML可用於工業(預測性維護)、醫療保健(身體感測)和物流(資產追蹤)等應用。Edge Impulse採用了Responsible AI Institute行為準則,要求其不得用於犯罪、監視或國防目的。

Edge Impulse模型測試功能如圖 3 所示。這裡,連接到數位麥克風的STMicroelectronics MCU可辨識兩個詞:house和zero。模型測試表明將每個單詞與背景雜訊或其他單詞區分開概率。

圖 3:Edge Impulse 模型測試功能。(資料來源:Mouser)

Fraunhofer AIfES

德國Fraunhofer研究所使用嵌入式系統 C 程式設計語言(AIfES),並開發了一個獨立於平台程式庫。這個開源程式庫在GNU通用公眾授權條款(General Public License;GPL)安排下可用,它使用標準庫 GNU GCC,使其易於實現,並且幾乎可以在任何硬體處理裝置上運作,包括從基礎8位元MCU到PC CPU。該程式庫的一個版本也可供 Arduino 開發人員使用。 AIfES可免費供個人使用,但對於商業應用則需要授權合約。

圖 4 說明了AIfES與不同平台的可互通性和相容性。它與TensorFlow、Keras和PyTorch等Python ML常見架構相容,並能夠以類似方式運作。

 

圖 4:用於嵌入式系統Fraunhofer AI AIfES 庫功能。(圖片來源:Fraunhofer Institute for Microelectronic Circuits and Systems)

部署 TinyML:後續步驟

在本文中,我們介紹了三種機器學習庫和平台,它們可以加速基於邊緣TinyML應用開發。掌握如何在邊緣部署機器學習看起來具有很大挑戰性,但越來越多可用資源能夠提高對複雜神經網路和資料科學原理的理解。

加入LINE@,最新消息一手掌握!

發表評論