低功耗MCU也能跑AI?揭秘TinyML應用實戰!
關鍵詞: 邊緣設備AI TinyML MCU 模型優化 實際應用
邊緣設備上的人工智能(AI)正憑借其直接在低功耗設備上實現先進的計算能力,徹底改變嵌入式電子設備領域。傳統上,神經網絡需要強大的硬件和豐富的資源,但隨著微型機器學習(TinyML)等技術的發展,即使計算資源有限,也能直接在設備上進行推理。在微控制器(MCU)上部署神經網絡可以降低延遲、增強數據隱私并提高能效,而無需依賴昂貴且集中的云基礎設施。
TinyML與邊緣AI
TinyML為嵌入式系統帶來了革命性的進步,使得在僅有數十KB RAM的設備上也能直接部署機器學習模型。其應用涵蓋語音分析、圖像識別以及基于信號處理的異常檢測等多個領域。借助適用于MCU的TensorFlow Lite等優化框架,神經網絡可以在MCU(STM32、ESP32或nRF52)上運行,而無需使用復雜的操作系統。
采用TinyML的一個有趣方面是模型優化。神經網絡通常為高性能硬件設計,必須縮小尺寸并降低功耗才能在嵌入式設備上運行。量化和剪枝等技術可最大限度地減少內存占用并加快推理速度,使實施在廉價的低功耗MCU上成為可能。



圖1:TinyML——AI與嵌入式系統的交集(來源:t4.ftcdn.net)
為MCU優化AI模型
神經網絡訓練通常在資源充足的計算機上進行,然后將其轉換為與嵌入式設備兼容的格式。第一步是選擇合適的模型。輕量級網絡(例如MobileNet)或基于低復雜度卷積神經網絡(CNN)的模型非常適合此類應用。訓練完成后,模型將以TensorFlow Lite(TFLite)格式導出,從而減小模型大小并提高在資源受限的硬件上的性能。為了進一步優化模型,量化是最有效的技術之一。
通過將網絡權重從32位浮點數轉換為8位整數格式,不僅能在不影響精度的前提下大幅減少內存占用,還能顯著提升計算效率。另一方面,剪枝則可以消除冗余的神經元連接,從而在不改變網絡行為的情況下減輕其負擔。這兩個過程都可以使用TensorFlow模型優化工具包等工具執行,然后將模型編譯為可在MCU上運行的格式。
在MCU上部署AI模型
模型優化完成后,下一步就是集成到兼容的MCU上。一個實際案例是使用ESP32和適用于MCU的TensorFlow Lite。這款MCU支持Wi-Fi和藍牙,非常適合傳輸處理后的數據,因此特別適合邊緣機器學習。實現過程首先是將量化模型轉換為字節數組,然后將其包含在固件代碼中。
通過TensorFlow Lite Micro庫,模型被加載到MCU的RAM中,并可用于實時推理。典型的執行流程包括從傳感器捕獲數據、進行預處理,然后將其傳遞給神經網絡進行預測。例如,語音識別就是一個常見的應用。連接到MCU的麥克風會采集音頻樣本,并使用梅爾倒譜系數(MFCC)等特征提取技術進行處理。然后將預處理后的數據傳遞給神經網絡模型,以識別特定的關鍵詞。推理過程僅需幾毫秒,使系統無需連接到外部服務器即可響應。
MCU上TinyML的實際應用案例
TinyML的應用已在多個行業產生影響。在農業領域,基于TinyML的傳感器可以監控土壤濕度和溫度等環境參數,從而優化用水并提高作物產量。微軟FarmBeats開發了一項極具創新性的項目,利用集成TinyML的節能傳感器收集土壤狀況數據,以優化灌溉管理,在不浪費水資源的前提下提升作物產量。這些設備可在無網絡覆蓋的偏遠地區運行,因為它們可在本地處理數據,從而無需持續連接云端。
TinyML的實際應用正在改變在MCU上直接收集和處理數據的方式,使系統無需持續連接至網絡即可運行。在許多應用的開發過程中,開發人員可使用的工具包括廣為人知的適用于MCU的TensorFlow Lite,該工具允許在資源有限的設備上運行深度學習模型,而Edge Impulse則簡化了訓練數據的收集和管理。Arduino Nano 33 BLE Sense和Raspberry Pi Pico等開發板為實際解決方案的實施提供了絕佳的硬件平臺。
在工業監控領域,搭載機器學習模型的MCU可用于檢測機器異常、分析振動和噪聲,并實施預測性維護,從而降低成本并防止突發故障。例如,可以在制造工廠中部署一個基于TinyML的電機控制系統,該系統在本地處理MEMS傳感器采集的數據,并在檢測到異常振動時觸發干預警報。
在安防領域,集成AI的MCU可用于識別可疑動作或檢測異常聲音,并觸發實時通知,而無需將敏感數據發送到外部服務器。Arduino與博世合作開發了一個具體的應用:基于Arduino Nano 33 BLE Sense的TinyML系統通過分析陀螺儀和加速度計數據識別突發運動,適用于家庭安防系統或貴重物品的監控。通過這種方式,無需將敏感數據發送到外部服務器即可觸發實時通知,從而確保隱私和安全。
邊緣AI(Edge AI)的一個實際應用案例是構建用于控制家居設備的語音識別系統。該系統基于Arduino Nano 33 BLE Sense開發板實現,并通過Edge Impulse進行訓練,形成一個超低功耗的語音助手,可在無網絡連接的情況下識別“開燈”或“開門”等簡單命令。該系統特別適用于行動不便、希望獨立操作家用設備的用戶。
另一個基于Arduino Nano 33 BLE Sense的有趣項目是室內空氣質量監控。該設備使用集成在開發板中的HTS221傳感器來檢測環境的溫度和濕度。項目實現的第一步是通過USB將MCU連接到計算機進行編程。完成此初始步驟后,需要安裝相應的庫文件,例如Arduino_HTS221,以訪問環境數據。
圖2:Arduino Nano 33 BLE Sense Rev2(來源:Arduino)
圖3:Arduino Nano 33 BLE Sense上的HTS221傳感器(來源:Arduino)
如果您還想包括揮發性有機化合物的檢測,可以將附加傳感器(例如盛思銳SGP40)及其相應的庫文件集成到您的項目中,并查閱數據手冊。
圖4:盛思銳SGP40傳感器(來源:盛思銳)
環境數據收集可通過Edge Impulse實現,記錄不同條件下的溫度和濕度值,用于訓練一個能夠識別可能預示異常狀況的變化模式的機器學習模型。訓練完成后,該模型將通過適用于MCU的TensorFlow Lite上傳到Arduino Nano 33 BLE Sense開發板。編程草圖讀取傳感器數據并運行模型,以實時分析環境。若檢測到異常,系統可觸發相應動作,如點亮警告LED或向外部設備發送藍牙信號。
以下是讀取HTS221傳感器數據并將其顯示在串口監視器上的示例代碼:
#include <Arduino_HTS221.h>
void setup() {
Serial.begin(115200);
while (! Serial);
if (! HTS221.begin()) {
Serial.println("Error initializing the HTS221 sensor!");
while (1);
}
}
void loop() {
float temperatura = HTS221.readTemperature();
float umidita = HTS221.readHumidity();
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.print(" °C, Umidità: ");
Serial.print(humidita);
Serial.println(" %");
delay(2000);
}
在空氣質量監控項目中,提供的代碼允許從集成在Arduino Nano 33 BLE Sense中的HTS221傳感器讀取數據,以檢測環境的溫度和濕度。在setup()函數中,初始化串行通信并驗證傳感器初始化是否成功。如果傳感器未被正確檢測到,程序將進入無限循環,并通過串行監視器報告錯誤。
在loop()函數中,代碼分別使用readTemperature()和readHumidity()方法從傳感器讀取溫度和濕度值。隨后,將獲取的值打印在串行監視器上,以實時顯示環境條件。數據每2秒讀取一次,這是通過delay(2000)函數實現的,從而實現定期更新。這種基本結構可輕松監控環境條件,并可將系統適配于其他應用,例如異常檢測或與機器學習模型集成,以分析并做出智能數據驅動的決策。
為確保系統的可靠性,必須在不同的環境條件下進行測試,驗證模型的準確性,并盡可能優化檢測閾值以減少誤報。該項目的進一步擴展包括與移動應用程序的集成,借助低功耗藍牙(BLE)技術,可實現空氣質量的實時監控。開發簡潔的用戶界面可借助MIT App Inventor或Flutter等工具實現,這些工具提供了在智能手機上直接可視化數據的實用解決方案。
要深入了解開發此項目所需的資源,可查閱Arduino_HTS221庫的官方文檔。Arduino論壇是解決各種技術問題的有效支持渠道。Edge Impulse提供了針對嵌入式設備收集和訓練機器學習模型的分步教程,而適用于MCU的TensorFlow Lite則提供了在低功耗MCU上實施機器學習的指南。
資源管理與性能優化
在MCU上執行AI模型會對可用資源的管理提出嚴格要求,這需要對內存、計算能力和能效進行仔細的優化。其中一個最關鍵的方面是內存的管理,而MCU中的內存通常極其有限;因此,必須采用避免浪費的內存分配策略,并盡可能使用靜態緩沖區。
此外,使用AI模型量化技術有助于減小神經網絡的規模,從而減少內存消耗并提高性能,而使用硬件加速器(如果可用的話)則代表著提高處理速度的機會。一些先進的MCU集成了專門用于處理神經網絡的數字信號處理器(DSP),從而可減輕主CPU的計算負擔,并更快、更高效地執行推理。此外,使用修剪技術可以減少所需的運算次數,在不影響模型準確性的情況下提高性能。
關于能效,尤其是對于電池供電的設備,可通過使用低功耗模式(例如深度睡眠模式)以及根據操作需求動態調整模型執行頻率來降低非活動期間的功耗。此外,采用觸發事件是一種有效的策略,僅在特定刺激下觸發推理,從而減少活動處理時間并優化計算資源的使用。
精心選擇AI模型架構也會影響其在MCU上的實現效率:輕量級神經網絡專為資源受限的環境而設計,能夠在準確性和計算消耗之間取得良好的平衡。這些技術的集成使我們能夠構建兼具高性能與高效率的AI模型,足以應對MCU在資源上的限制。
總結與展望
TinyML在嵌入式系統中的應用為在資源受限的設備上實現AI開辟了新的可能性。直接在MCU上執行推理的能力可實現更快、更安全、更節能的應用。隨著優化技術的發展和專用硬件的改進,邊緣設備上的機器學習將繼續擴展,為家庭自動化、安防和環境監控等領域帶來創新。
將AI集成到嵌入式系統中已不再是遙不可及的夢想,而是人人皆可實現的現實,即使使用廉價硬件也是如此。借助正確的優化技術和精心的資源管理,智能解決方案可直接在MCU上實現,從而催生新一代自主互聯的設備。
