使用高階MCU實現加速的機器學習應用

作者 : Brian Rodrigues,Silicon Labs資深現場應用工程師

之前AI依賴GPU/CPU甚至是DSP技術,而現在AI卻藉由運作於小型微控制器上的特定應用程序的整合而進入到資料獲取系統中…

之前人工智慧(AI)依賴GPU/CPU甚至是DSP技術,而現在AI卻藉由運作於小型微控制器(也就是MCU)上的特定應用程序的整合而進入到資料獲取系統中。物聯網(IoT)市場是這一趨勢的主要推動者,而Silicon Labs則擔任其中要角。

為了因應物聯網新趨勢,Silicon Labs推出了一款可以執行硬體加速AI操作的無線MCU。為了實現此目標,這款MCU在設計中整合了矩陣向量處理器(MVP),命名為EFR32xG24。

本文將首先介紹一些能夠突顯使用案例中MVP使用情況的AI基礎知識,然後重點介紹如何使用EFR32xG24進行物聯網應用中的AI設計。

AI、機器學習和邊緣運算

AI是一套嘗試模仿人類行為的系統。具體而言,AI是一個電氣和/或機械實體,模仿人類會做的事,對輸入做出類似的響應。儘管人們經常將AI和機器學習(ML)術語混用,但這兩個術語代表著兩種不同的研究方法。AI的概念更加廣泛,而ML是AI的一個子集。

藉由ML,系統可以在多次重複使用所謂的「模型」後做出預測並改進(或訓練)自身。模型採用經過訓練的演算法,並最終用於模仿決策的制定。可以透過收集資料或使用現有資料集來訓練該模型,當該系統將「訓練過的」模型應用於新取得的資料用以做出決策時,我們將其稱為ML推理。

如前所述,推理對運算能力有要求,通常只有高階電腦才具備這種運算能力。但現在,無需連接到此類高階電腦便可以在更多運算能力受限裝置上執行推理,這就是所謂的「邊緣運算」。

在MCU上執行推理即可看作是在執行邊緣運算。邊緣運算涉及到在距離取得資料的最近點執行資料處理演算法,邊緣裝置通常是簡單且運算能力受限的裝置,如感測器或基本開關器(燈泡、恆溫器、門窗感測器、電表等),這些裝置通常在低功耗ARM Cortex-M類型的MCU上執行。

 

 

採用邊緣運算好處良多。毫無疑問,最大的好處就是,採用邊緣運算的系統不依賴於外部實體。裝置可以在本地「自行決策」。

本地決策帶來的好處如下:

  • 降低系統延遲:原始資料無需傳輸到雲端處理,這表示可以在裝置上進行及時決策;
  • 降低所需的網際網路頻寬:感測器產生大量及時資料時,即使沒有需要「上報」的資料,也會產生大量頻寬需求,而這會使無線頻譜飽和並增加執行成本;
  • 降低功耗:與資料傳輸相比,在本地(使用AI)進行資料分析所需的功耗大幅降低;
  • 確保符合隱私和安全要求:進行本地決策無需將詳細的原始資料發送到雲端,而只需發送推理結果和元資料(metadata),進而消除了資料隱私洩漏的可能性;
  • 降低成本:在本地分析感測器資料可以節省使用雲端基礎設施和流量的費用;
  • 增加彈性:如果與雲端的連接中斷了,邊緣節點仍能自主運作。

Silicon Labs用於邊緣運算的無線MCU

EFR32xG24是一款安全無線MCU,支援多種2.4GHz IoT協議(如藍牙低功耗協議、Matter協議、Zigbee協議和OpenThread協議)。該款產品還包括Secure Vault,這是一種改進的安全功能集,適用於所有Silicon Labs Series 2平台。

但除了提高安全性能和連接性能外,該MCU的特別之處在於它還配置了用於ML模型推理的硬體加速器(以及其他加速功能),即矩陣向量處理器(MVP)。

與不具備硬體加速功能的ARM Cortex-M相比,MVP能夠更有效率地執行ML推理,低功耗性能最多可提高6倍,推理速度提高2~4倍(實際改善效果取決於具體的模型和應用)。

 

 

MVP透過處理密集的浮點運算來卸載CPU負荷,專門用於複雜的矩陣浮點乘法和加法運算。MVP由專用硬體算術邏輯單元(ALU)、載入/儲存單元(LSU)和定序器組成。

 

 

因此,MVP有助於在節約功耗的同時加速各種應用程式的處理,這些程式包括:到達角(AoA)、MUSIC演算法、ML (Eigen用於線性代數的C++模板庫或基礎線性代數程式集BLAS)等。

由於該裝置僅是一款MCU,因此無法解決AI/ML所能涵蓋的所有使用案例,但能夠解決實際應用中出現的下述四類問題:

  • 感測器訊號處理:包括預測性維護、生物訊號分析、冷鏈監控,以及加速度感測器使用案例;
  • 音訊模式配對:包括玻璃破碎偵測、槍聲偵測;
  • 語音指令:包括智慧裝置語音指令集、喚醒詞偵測;
  • 低解析度影像辨識:包括人員存在偵測、看圖計數、指紋辨識。

Silicon Labs提供專用的範例應用程式,這些程式基於TensorFlow的AI/ML框架,能夠幫助解決這些問題。

TensorFlow是Google用於ML的端到端開源平台,也是由各種工具、函式庫和社群資源組成的全面、靈活的生態系統。研究人員可以利用這些資源引領ML先進技術,同時,開發人員也可以輕鬆建構並部署ML驅動的應用程式。

TensorFlow項目還特別針對嵌入式硬體進行最佳化而推出TFLM (TensorFlow Lite for Microcontrollers)專案。該專案為開源專案,其中大部分程式碼由社群工程師提供,包括來自Silicon Labs和其他晶片供應商的工程師。目前,這是與Silicon Labs Gecko SDK軟體套件一起發佈的用於建立AI/ML應用程式的唯一框架。

Silicon Labs提供的AI/ML範例如下:

  • 具備語音啟動功能的Zigbee 3.0照明開關;
  • TensorFlow魔法棒;
  • 語音啟動LED;
  • TensorFlow Hello World;
  • TensorFlow麥克風語音。

無論是新手還是專家,都可以透過以上任一範例進行應用程式開發。Silicon Labs提供多種ML開發工具,可以根據自己的ML專業經驗進行選擇。

對於首次進行ML開發的人員來說,可以從其中的一個範例開始,也可以從第三方合作夥伴所提供的範例開始。Silicon Labs在ML方面的第三方合作夥伴支援完整的端到端工作流程,提供功能豐富且易於使用的GUI介面,能夠建構針對Silicon Labs晶片設計的最佳ML模型。

對於希望直接使用Keras/TensorFlow平台的ML專家,Silicon Labs提供自助自給型參考包,以建構模型開發工作流程,該流程專門用於建構Silicon Labs晶片ML模型。

 

 

支援ML應用的開發範例

要建立支援ML的應用程式,有兩個步驟不可或缺。第一步是建立無線應用程式,這可以使用Zigbee、藍牙低功耗、Matter或基於2.4GHz協議的專有應用程式來完成。該應用程式甚至可以是未連接的;第二步是建構ML模型以將其與應用程式整合。

如上所述,Silicon Labs提供多種專案以便為MCU建立ML應用程式。此處採用的方法是使用具有預定義模型的、現成的範例應用程式。在該範例中,模型經過訓練後能夠偵測「on」和「off」兩個語音指令。

EFR32xG24應用入門

開始前,請先取得EFR32MG24開發者套件BRD2601A。

該開發套件採用緊密的電路板設計,嵌入了多個感測器(IMU、溫度感測器、相對濕度感測器等)、LED,以及立體聲I2S麥克風。

該專案將採用I2S麥克風。與市面上比較少見的GPU不同,這些裝置很常見。但如果未能取得這些套件也沒關係,還可以使用之前的基於Series 1的開發套件,即「Thunderdoard Sense 2」,型號是SLTB004A。

但是,該MCU沒有配置MVP,所有推理將只能透過晶片主核心完成,且沒有加速。

接下來,需要用到Silicon Labs的IDE (Simplicity Studio)來建立ML專案。下載Silicon Labs的Gecko SDK軟體套件的方法很簡單。該套件提供了應用程式所需的函式庫和驅動程式,具體如下所示:

  • 無線網路協議堆疊(本例中使用Zigbee);
  • 硬體驅動程式(用於I2S麥克風和MVP);
  • TensorFlow Lite框架;
  • 訓練過的、用於偵測語音指令的模型。

 

 

此外,IDE提供的工具還可以用於進一步分析應用程式功耗或無線網路執行狀態。

建立配有MVP的Zigbee 3.0 Switch專案

Silicon Labs提供即用的可建立和編譯的範例應用程式Z3SwitchWithVoice。此外,該應用程式已經附帶了ML模型,因此無需另行建立。

在範例項目建立之後,可注意到:Simplicity Studio項目是由元件相關的原始檔案組成。這些元件是GUI實體,它們透過簡化複雜軟體的整合,讓設計者可以輕鬆使用Silicon Labs的MCU。在這個範例中,可以看到已經預設安裝了MVP支援和Zigbee網路協議堆疊。

 

 

主應用程式碼於app.c原始檔案中。就網路端功能而言,只要輕輕按下開發套件上的按鈕,應用程式就可以與周邊任何Zigbee 3.0網路進行配對,也稱為「流量導引」。一旦入網後,MCU就將尋找相容且可配對的照明設備,這也稱為「綁定」。

當應用程式的網路功能啟動並執行後,MCU將週期性輪詢麥克風資料樣本並執行推理。這些程式碼位於keyword_detection.c中。

 

 

偵測到關鍵字後,app.c中的事件處理器程式碼將發送相應的Zigbee指令:

 

 

此時,硬體加速推理已經在無線MCU上執行並進行邊緣運算了。

自訂TensorFlow模型以使用不同的語音指令

如前所述,實際模型已經整合到該應用程式中,且未進一步修改。但如果想自己整合模型,可以透過以下步驟達成:

1.收集並標記資料;

2.設計和建構模型;

3.評估和驗證模型;

4.轉換模型供嵌入式裝置使用。

無論設計者多麼熟悉ML,都必須遵循以上步驟。但在如何建構模型這一問題上可以有所不同,具體如下:

1.如果在ML領域還是新手,又想要建構模型,Silicon Labs建議使用簡單易用的、端到端的第三方合作平台:Edge Impulse或SensiML;

2.如果是Keras/TensorFlow方面的專家且不想使用第三方工具,可以使用ML工具包(MLTK)。該工具包是自助自給型python包,Silicon Labs圍繞音訊使用案例建立了這個參考包,可進行擴展、修改,專業用戶也可以根據喜好擇優使用,該軟體包及其附帶文件可在GitHub上取得。

此外,還可以直接導入.tflite文件,而該文件可執行在專為EFR32產品線而編譯的TensorFlow lite for micro的一個嵌入式版本之上。請注意,必須確保訓練模型時提取的資料特徵與在目標晶片上執行推理時提取的完全相同。

在Simplicity Studio整合開發環境中,導入.tflite文件是最簡單的。要在Simplicity Studio中更改模型,只需要將.tflite模型文件複製到項目的config/tflite資料夾中。專案配置器提供的工具可以自動將.tflite文件轉換為sl_ml_model原始檔案和標頭檔案。此工具的完整文件可在Flatbuffer Conversion中取得。

 

 

 

 

加入我們官方帳號LINE@,最新消息一手掌握!

發表評論