如何在 MCU 上實現(xiàn)物聯(lián)網(wǎng)人工智能 (AIoT)
物聯(lián)網(wǎng) (IoT) 設備中越來越多人工智能 (AI) 的出現(xiàn),從而創(chuàng)造出智能“AIoT”設備,而各種應用都從這些智能設備中受益。這些設備從數(shù)據(jù)中學習,無需人工干預即可自主決策,從而使產(chǎn)品與其環(huán)境的交互更加合乎邏輯、更像人類。
AI 與物聯(lián)網(wǎng)的結合為 MCU(微控制器)開辟了新的市場。它使越來越多的新應用和用例成為可能,這些應用和用例可以使用簡單的 MCU 搭配 AI 加速來實現(xiàn)智能控制。這些支持 AI 的 MCU 提供了獨特的 DSP 計算能力和機器學習 (ML) 推理能力,目前正用于關鍵字識別、傳感器融合、振動分析和語音識別等各種應用中。更高性能的 MCU 可實現(xiàn)視覺和成像領域更復雜的應用,例如人臉識別、指紋分析和自主機器人。
人工智能技術
以下是一些在物聯(lián)網(wǎng)設備中實現(xiàn)人工智能的技術:
機器學習 (ML):機器學習算法基于代表性數(shù)據(jù)構建模型,使設備能夠自動識別模式而無需人工干預。ML 供應商提供訓練模型所需的算法、API 和工具,然后可以將其內置到嵌入式系統(tǒng)中。然后,這些嵌入式系統(tǒng)使用預先訓練的模型根據(jù)新輸入數(shù)據(jù)進行推理或預測。應用示例包括傳感器集線器、關鍵字識別、預測性維護和分類。
深度學習:深度學習是一種機器學習,它使用多層神經(jīng)網(wǎng)絡來訓練系統(tǒng),從復雜的輸入數(shù)據(jù)中逐步提取更高級別的特征和見解。深度學習可以處理非常龐大、多樣且復雜的輸入數(shù)據(jù),并使系統(tǒng)能夠迭代學習,從而每一步都改進結果。使用深度學習的應用程序示例包括圖像處理、客戶服務聊天機器人和人臉識別。
自然語言處理 (NLP):NLP 是人工智能的一個分支,它使用自然語言處理系統(tǒng)與人類之間的交互。NLP 幫助系統(tǒng)理解和解釋人類語言(文本或語音)并據(jù)此做出決策。應用示例包括語音識別系統(tǒng)、機器翻譯和預測打字。
計算機視覺:機器/計算機視覺是人工智能的一個領域,它訓練機器收集、解釋和理解圖像數(shù)據(jù),并根據(jù)這些數(shù)據(jù)采取行動。機器從相機收集數(shù)字圖像/視頻,使用深度學習模型和圖像分析工具準確識別和分類對象,并根據(jù)它們“看到”的內容采取行動。例如制造裝配線上的故障檢測、醫(yī)療診斷、零售店的人臉識別和無人駕駛汽車測試。
MCU 上的 AIoT
過去,人工智能是 MPU 和 GPU 的專屬,它們擁有強大的 CPU 內核、大容量內存資源和用于分析的云連接。然而,近年來,隨著邊緣智能化的趨勢日益增強,我們開始看到 MCU 被用于嵌入式 AIoT 應用中。向邊緣的轉變是出于延遲和成本方面的考慮,涉及將計算移近數(shù)據(jù)?;?MCU 的物聯(lián)網(wǎng)設備上的人工智能允許實時決策和更快地響應事件,并且具有帶寬要求低、功耗低、延遲低、成本低和安全性高等優(yōu)勢。AIoT 得益于最新 MCU 的更高計算能力以及更適合這些終端設備中使用的資源受限的 MCU 的薄神經(jīng)網(wǎng)絡 (NN) 框架。
神經(jīng)網(wǎng)絡是一組節(jié)點,按層排列,接收來自上一層的輸入并生成由輸入的加權和偏差總和計算得出的輸出。此輸出沿著其所有傳出連接傳遞到下一層。在訓練期間,訓練數(shù)據(jù)被輸入到網(wǎng)絡的第一層或輸入層,每層的輸出被傳遞到下一層。最后一層或輸出層產(chǎn)生模型的預測,這些預測與已知的預期值進行比較以評估模型誤差。訓練過程涉及在每次迭代中使用稱為反向傳播的過程來細化或調整網(wǎng)絡每一層的權重和偏差,直到網(wǎng)絡的輸出與預期值緊密相關。換句話說,網(wǎng)絡反復從輸入數(shù)據(jù)集中“學習”,并逐步提高輸出預測的準確性。
神經(jīng)網(wǎng)絡的訓練需要極高的計算性能和內存,通常在云端進行。訓練完成后,這個預先訓練好的 NN 模型會嵌入到 MCU 中,并根據(jù)訓練結果用作新傳入數(shù)據(jù)的推理引擎。
這種推理生成所需的計算性能比模型訓練低得多,因此適合 MCU。這種預先訓練的 NN 模型的權重是固定的,可以放在閃存中,從而減少所需的 SRAM 數(shù)量,使其適合資源更受限的 MCU。
在 MCU 上的實現(xiàn)
在 MCU 上實施 AIoT 涉及幾個步驟。最常見的方法是使用可用的神經(jīng)網(wǎng)絡 (NN) 框架模型之一,例如 Caffe 或 Tensorflow Lite,適用于基于 MCU 的終端設備解決方案。機器學習的 NN 模型的訓練由 AI 專家在云端使用 AI 供應商提供的工具完成。使用 AI 供應商和 MCU 制造商的工具對 NN 模型進行優(yōu)化和在 MCU 上的集成。使用預先訓練的 NN 模型在 MCU 上進行推理。
該流程的第一步是完全離線完成的,涉及從終端設備或應用程序捕獲大量數(shù)據(jù),然后用于訓練 NN 模型。模型的拓撲由 AI 開發(fā)人員定義,以充分利用可用數(shù)據(jù)并提供該應用程序所需的輸出。NN 模型的訓練是通過將數(shù)據(jù)集迭代地傳遞到模型中來完成的,目標是不斷最小化模型輸出的誤差。NN 框架中有一些工具可以幫助完成此過程。
在第二步中,這些針對某些功能(如關鍵字識別或語音識別)進行了優(yōu)化的預訓練模型被轉換為適合 MCU 的格式。此過程的第一步是使用 AI 轉換器工具將其轉換為平面緩沖文件。這可以選擇通過量化器運行,以減小大小并針對 MCU 進行優(yōu)化。然后,將此平面緩沖文件轉換為 C 代碼并作為運行時可執(zhí)行文件傳輸?shù)侥繕?MCU。
這款配備預訓練嵌入式 AI 模型的 MCU 現(xiàn)在可以部署在終端設備中。當新數(shù)據(jù)進入時,它會通過模型運行,并根據(jù)訓練生成推理。當新的數(shù)據(jù)類進入時,NN 模型可以發(fā)送回云端進行重新訓練,新的重新訓練模型可以在 MCU 上進行編程,可能通過 OTA(無線)固件升級實現(xiàn)。
基于 MCU 的 AI 解決方案有兩種不同的架構方式。為了便于討論,我們假設在目標 MCU 中使用 Arm Cortex-M 內核。
在第一種方法中,轉換后的 NN 模型在 Cortex-M CPU 內核上執(zhí)行,并使用 CMSIS-NN 庫進行加速。這是一種簡單的配置,無需任何額外的硬件加速即可處理,適用于較簡單的 AI 應用,例如關鍵字識別、振動分析和傳感器集線器。
更復雜、性能更高的選項涉及在 MCU 上包含 NN 加速器或微神經(jīng)處理單元 (u-NPU) 硬件。這些 u-NPU 可加速資源受限的 IoT 終端設備中的機器學習,并且可能支持壓縮,從而降低模型的功耗和尺寸。它們支持可以完全執(zhí)行大多數(shù)常見 NN 網(wǎng)絡的運算符,用于音頻處理、語音識別、圖像分類和對象檢測。u-NPU 不支持的網(wǎng)絡可以回退到主 CPU 核心,并由 CMSIS-NN 庫加速。在這種方法中,NN 模型在 uNPU 上執(zhí)行。
這些方法只展示了幾種將人工智能納入基于單片機的設備的方法。隨著mcu將性能邊界推到更高的水平,更接近mpu的預期,我們希望開始看到完整的人工智能能力,包括輕量級學習算法和推理,直接建立在mcu上。
邊緣人工智能是未來
實現(xiàn)人工智能在資源受限的mcu將呈指數(shù)級增長在未來,我們將繼續(xù)看到新的應用程序和用例出現(xiàn)在mcu推動邊界性能和模糊mcu和mpu之間的界限,和越來越多的“薄”神經(jīng)網(wǎng)絡模型,適合資源受限的設備,變得可用。
未來隨著 MCU 性能的提升,除了推理之外,我們很可能會看到輕量級學習算法直接在 MCU 上運行。這將為 MCU 制造商開辟新的市場和應用,并將成為他們重點投資的領域。