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