MCU上跑實時目標檢測算法
前幾年一直忙著別的事情沒有在技術分享上下功夫, 這段時間穩定下來就想和幾個志同道合的朋友做點有意義的事情, 于是乎就使用MCU做了個與AI有識別相關的 “小玩意兒”.
本人負責嵌入式端相關的編碼, AI相關的工作由好友 AgeWang 負責.
這兒把一些成果給大家展示一下, 希望能給廣大開發者提供一個簡單的思路, 僅作參考
在大家印象中, AI 這種高大上的玩意兒一般是在 A系列
的芯片上面跑的, 當然本人也接觸過一些 A系列
芯片, 一般的性能差一點的芯片跑起來也非常吃力, 但要說在 MCU
芯片上冕能跑AI是都不都不敢想. 但是現如今確確實實是行, 而且效果還不錯.
話不多說進入真題, 先給大家展示一下效果:
展示環節
- 模型優化: 在 MCU 資源限制下重新設計算法結構, 網絡結構依然超過了150層, 確保檢測精度不崩。
- 部署優化: 針對
Cortex M
指令集做了底層優化。 - 后處理: 用了簡化版的 NMS, 保證速度夠快, 占用也小。
- 內存管理: 最大化復用中間 Buffer, 推理時只占用 248KB RAM, 這對于一般 512KB RAM 的中高端 MCU 來說完全可以接受。
- 推理性能: 在
Cortex-M33
上, 通過指令集加速優化, 算法一秒大約推理 8幀 圖像(單幀 124ms)。



MCU實時目標檢測
- 檢測效果: 在行人檢測數據集上, mAP 超過 60, 同時也能遷移到火焰、任意自定義目標檢測任務。

所需資源
模塊 | 介紹 | 最低成本(元) |
---|---|---|
攝像頭 | 主要用于視頻圖像的采集 | 5 |
顯示器 | 主要用于視頻圖像的顯示 | 10 |
MCU | 主要是協調攝像頭得采集, AI的計算以及LCD顯示屏的顯示 | 6 |
外圍電路 | PCB板(最小系統所需的基本電路) | 略 |
備注: 以上成本僅供參考(如果想要顯示效果更好, AI識別更快價格也就更貴)
以上是所需的基本硬件模塊, 當然也可以直接打板不使用模塊.
本演示主要是通過攝像頭采集圖像至 MCU
, MCU
執行 AI yolo
算法, 獲取結果, 通過 LCD
顯示. 如下圖所示:

- 輸入端除了火焰, 還可以是其他物品貓, 狗, 鳥, 也可以是人, 也可以是人的不同形態, 如跌倒的老人或者小孩兒.
- 輸入的除了圖像也可以是音頻, 溫濕度, 光照強度, 當然也可以是他們的組合
- 輸出端除了
LCD顯示屏
, 也可以I/O
輸出, 如開關門, 澆水, 喂魚等
其他嘗試
- 本人在多款MCU都測試過, 如
STM32
ESP32
等, 只要基本的RAM合適, 看理論上都能進行運行AI算法. STM32
有STM32Cube.AI
專門為 AI 進行了優化ESP32
也有專門的庫以及demo, 可供大家參考



備注
- 感謝 AgeWang 提供AI算法支持