MCU上跑AI—实时目标检测算法探索
本文将AI目标检测算法成功部署到资源有限的MCU上,展示了在Cortex-M33等微控制器上运行150层神经网络的可能性。通过模型优化、指令集加速和内存管理(仅占248KB RAM),实现了每秒8帧的推理速度,并在行人检测上达到60+ mAP。硬件成本仅需摄像头(5元)、显示器(10元)和MCU(6元)等基础模块。该方案可扩展至多种检测目标(人、动物、物品等)和输出控制(I/O设备),验证了STM
·
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)。
- 检测效果: 在行人检测数据集上, 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算法支持
更多推荐
所有评论(0)