產經情報

如何在MCU上實現AIoT?

日期:2022-01-06

AI和物聯網的結合為MCU開闢了新的市場,使越來越多的新應用得以利用簡單的 MCU搭配AI加速來促進智慧控制…

物聯網(IoT)裝置越來越多地採用人工智慧(AI)技術來創建AIoT,這使很多應用從中受益。這些AIoT裝置從資料中學習,並在無需人工干預的情況下做出自主決策,從而使產品與其環境之間實現更合乎邏輯、更接近人類的互動。

AI和物聯網的結合為微控制器(MCU)開闢了新的市場,使越來越多的新應用得以利用簡單的 MCU搭配AI加速來促進智慧控制。這些AI加持的MCU融合了DSP運算和機器學習(ML)推理能力,適合關鍵字辨識、感測器融合、振動分析和語音辨識等多種應用。更高性能的MCU還可以支援更複雜的視覺和成像應用,例如人臉辨識、指紋分析和自主機器人等。

AI技術

以下是為物聯網裝置帶來AI功能的部分使能技術:

機器學習:機器學習演算法根據代表性資料建構模型,使裝置能夠在無需人工干預的情況下自動辨識模式。機器學習供應商提供演算法、API和工具以建構訓練模型,然後將模型植入到嵌入式系統中。輸入新的資料後,這些嵌入式系統就可以利用預先訓練的模型進行推理或預測,這類應用示例包括感測器融合、關鍵字辨識、預測性維護和分類等。
深度學習(DL):深度學習是機器學習的一種,它使用多層神經網路(NN)從複雜的輸入資料中逐步提取更高等級的特徵和模式,從而訓練系統。深度學習可以適應非常龐大、多樣化和複雜的輸入資料,並讓系統不斷演進學習,逐步改善輸出結果。其應用示例包括影像處理、客服機器人和人臉辨識等。
自然語言處理
自然語言處理(NLP):NLP是AI的一個分支,可以實現系統與人類之間用自然語言進行互動。NLP協助系統理解和解釋人類語言(文本或語音),並基於此做出決策。其應用示例包括語音辨識系統、機器翻譯和預測性打字等。
電腦視覺:機器視覺/電腦視覺是AI的一個領域,它訓練機器收集、解釋並理解影像資料,並根據這些資料採取行動。機器透過攝影機收集數位影像/視訊,使用深度學習模型和影像分析工具準確辨識和分類物件,並根據它們所「看到」的採取相應的行動。其應用示例包括製造裝配線上的故障檢測、醫療診斷、零售店的人臉辨識和無人駕駛車測試等。

透過MCU實現AIoT

過去,AI屬於MPU和GPU的應用範疇,它們擁有強大的CPU核心、大記憶體資源和進行AI分析的雲端連接。但近年來,隨著邊緣智慧程度的不斷提高,我們開始看到MCU被用於嵌入式AIoT應用中。向邊緣轉移是基於延遲和成本的考慮,同時還可以讓運算處理更接近資料來源。基於MCU的物聯網裝置具有AI功能可以實現即時決策和更快的事件回應,而且還有更多其他優勢,諸如更低的頻寬要求、更低的功耗、更低的延遲、更低的成本和更高的安全性。有了更高運算能力的新型MCU加持,再加上更適合資源受限MCU的瘦神經網路框架,AIoT得以實現。

神經網路是很多節點的集合,這些節點按層排列。每一層都接收來自前一層的輸入,並根據輸入的權重和偏置總和進行運算,以生成輸出。輸出沿其所有傳出連接傳遞到下一層。在訓練過程中,訓練資料被饋入網路的第一層或輸入層,每一層的輸出再傳遞到下一層。最後一層或輸出層生成模型的預測,將其與已知的預期值進行比較從而評估模型的誤差。訓練的過程需要在每次演進中使用稱為「反向傳播」的過程完善步驟,或調整網路每一層的權重和偏置,直到網路輸出與預期值密切相關。換句話說,網路從輸入資料集中演進「學習」,並逐步提高輸出預測的準確性。

神經網路的訓練需要極高的運算性能和記憶體,通常在雲端進行。訓練之後,這個預訓練的神經網路模型被嵌入到MCU中,即可作為推理引擎對新傳入資料進行處理。

這種推理生成所需要的運算性能比訓練模型要低很多,在MCU上即可實現。這種預訓練的神經網路模型權重是固定的,可以保存在快閃記憶體中,從而減少所需的SRAM數量,使其適用於更多資源受限的MCU。

如何在MCU上實現AIoT?

MCU上的AIoT實現包含多個步驟。最常見的實現方法是使用現有的神經網路框架模型之一,例如Caffe或Tensorflow Lite,它們適用於基於MCU的終端裝置解決方案。用於機器學習的神經網路模型訓練可由AI專業人員使用AI供應商提供的工具在雲端完成。神經網路模型最佳化和MCU整合可以使用AI供應商和MCU製造商提供的工具進行。推理則在MCU上採用預訓練的神經網路模型完成。

上述過程的第一步可以完全離線完成,涉及從終端裝置或應用捕獲大量資料,並用於訓練神經網路模型。模型的拓撲結構由AI開發人員定義,以充分利用現有資料並提供應用要求的輸出。神經網路模型的訓練是透過將資料集演進傳遞給模型來完成的,目的是不斷最小化模型輸出的誤差,神經網路框架提供的工具可以幫助完成這個過程。

在第二步中,針對特定功能(如關鍵字辨識或語音辨識)進行了最佳化的預訓練模型被轉換為適應MCU的格式。在這個過程中,首先利用AI轉換器工具將模型轉換為flat buffer檔,也可以選擇透過量化器來轉換,以縮小尺寸並針對MCU最佳化。然後,將該flat buffer檔轉換為C語言,並作為運作時可執行檔傳輸給目標MCU。

配備了預訓練嵌入式AI模型的MCU現在就可以部署在終端裝置中了。當新資料導入時,它在模型中運作,並根據訓練生成推理。當新的資料類別出現時,神經網路模型可以被發送回雲端重新進行訓練,然後可以透過OTA韌體升級將重新訓練後的新模型編入MCU。

建構基於MCU的AI解決方案有兩種不同的方式。為便於討論,本文假設目標MCU採用Arm Cortex-M核心。

在第一種方法中,轉換後的神經網路模型在Cortex-M CPU核心上執行,並透過CMSIS-NN函式庫加速。這是一種簡單的配置,無需任何額外的硬體加速,適用於較簡單的AI應用,例如關鍵字辨識、振動分析和感測器集合等。

另一種更複雜和更高性能的選擇則需要在MCU上配置神經網路加速器或微神經處理單元(u-NPU)硬體。這些u-NPU可在資源受限的IoT終端裝置中加速機器學習,並且可能還支援壓縮以降低模型的功耗和大小。所支援的運算可以完全執行大多數常見的神經網路網路,以用於音訊處理、語音辨識、影像分類和物件檢測。u-NPU不支援的網路可以回退到主CPU核心,並由CMSIS-NN函式庫加速。在這種方法中,神經網路模型是在u-NPU上執行的。

在配置了MCU的裝置中實現AI不只有這兩種方法。隨著MCU的性能不斷推向更高的水準,逐漸接近MPU的預期水準,我們將會看到完全的AI功能直接建構在MCU上,而且具有羽量級的學習演算法和推理功能。

邊緣AI才是未來

在資源受限的MCU上實現AI將在未來呈指數級成長。隨著MCU性能的不斷提升,MCU和MPU之間的界限越來越模糊,同時出行越來越多適用於資源受限裝置的「瘦」神經網路模型,新的應用和案例將不斷浮現。

未來,隨著MCU性能的提高,我們將會看到除推理之外的羽量級學習演算法直接在MCU上實現。這將為MCU製造商開闢新的市場與應用,並將成為其重要的投資領域。