1. 嵌入式AI概述:从云端到边缘的AI部署趋势
各位同学好,我是你们这门课的主讲。在嵌入式领域摸爬滚打了十几年,我亲眼看着AI从云端一点点「下沉」到我们手边的单片机里。今天咱们先聊聊这个大趋势,以及为什么我最终选择了ARM Cortex-M和CMSIS-NN这条路。
1.1 从云端到边缘:AI部署的必然趋势
早几年做AI,大家第一反应就是上云。GPU集群、海量数据、高功耗——那是大厂的玩法。但实际项目做多了你会发现,很多场景根本不适合走云端。
举个例子。我之前做过一个工业振动监测的项目,传感器装在工厂的旋转设备上。如果每秒钟把振动波形传到云端去分析,先不说带宽够不够,光是网络延迟和设备成本就让人头疼。更别说有些工厂车间根本没有稳定的Wi-Fi覆盖。
所以这几年,行业里喊得最响的就是「边缘AI」。说白了,就是把推理计算从云端搬到设备本地。这样做有几个实实在在的好处:
- 低延迟:数据不用上传,本地处理,毫秒级响应
- 省带宽:只上传结果或异常事件,而不是原始数据
- 保护隐私:敏感数据不出设备,合规压力小
- 离线可用:断网了照样能跑推理
但问题来了——边缘设备的算力有限啊。你想想看,一个Cortex-M4单片机,主频撑死200MHz,RAM可能只有几十KB。要把一个几MB的神经网络模型塞进去,还要跑得动,这本身就是个技术活。
核心矛盾:云端模型追求精度,边缘模型追求效率。从云端到边缘的迁移,本质上是一场「精度与资源」的博弈。
1.2 为什么选择ARM Cortex-M与CMSIS-NN
市面上能做边缘AI的硬件不少。Cortex-A系列跑Linux,性能强但功耗高;RISC-V新秀崛起,但生态还不够成熟。我个人习惯,做产品选型时最看重三点:生态成熟度、工具链完善度、量产成本。
ARM Cortex-M系列在这三个维度上,目前没有对手。尤其是Cortex-M4和M7,带DSP和FPU,跑轻量级神经网络刚刚好。而CMSIS-NN,就是ARM官方为Cortex-M系列量身定做的神经网络推理库。
| 对比项 | Cortex-M + CMSIS-NN | Cortex-A + TFLite | RISC-V + 自研 |
|---|---|---|---|
| 功耗 | mW级 | W级 | mW级 |
| 成本 | 几元到几十元 | 几十到上百元 | 几元到几十元 |
| 生态成熟度 | 极高(Keil/IAR/STM32Cube) | 高(Linux/Python) | 低(工具链碎片化) |
| 推理速度 | 中等(依赖量化优化) | 快 | 慢(缺乏优化库) |
| 适用场景 | 传感器、可穿戴、IoT | 智能音箱、摄像头 | 极低成本定制 |
CMSIS-NN厉害在哪?它把卷积、池化、全连接这些算子,用ARM的DSP指令和SIMD指令做了深度优化。我做过对比测试,同样的量化模型,用CMSIS-NN比手写C代码快了4-6倍。嗯,这里要注意,CMSIS-NN只支持量化模型,不支持浮点。所以量化是绕不开的一步。
我的建议:如果你刚开始接触嵌入式AI,直接从Cortex-M4或M7入手。M0/M0+虽然更便宜,但算力太弱,跑不了什么像样的模型。M33也不错,支持TrustZone,安全性更好。
1.3 课程目标与前置知识准备
这门课的目标很明确:让你能独立完成一个量化模型的训练、量化、部署,最终在Cortex-M单片机上跑起来。不是纸上谈兵,是真正能烧录到板子上看到效果的那种。
具体来说,学完这门课你应该能做到:
- 理解模型量化的原理(对称/非对称、逐层/逐通道)
- 会用TensorFlow或PyTorch训练一个简单模型,并导出为量化格式
- 会用CMSIS-NN的API编写推理代码
- 能在STM32或类似开发板上跑通一个完整的AI应用
前置知识方面,我不要求你已经是AI专家,但有些基础还是得有:
- C语言基础:指针、结构体、内存管理——这些是嵌入式开发的命根子
- 单片机基础:GPIO、中断、定时器——至少用过STM32或类似平台
- Python基础:训练模型要用,不要求多深,能看懂脚本就行
- 机器学习基础:知道什么是神经网络、卷积、池化——不用精通,但概念得清楚
避坑提醒:我曾经遇到过学员连指针都搞不清楚,直接上手做量化部署,结果在内存对齐上卡了两周。C语言基础不牢的话,建议先花一周补一补。磨刀不误砍柴工。
1.4 本章知识体系总览
为了让你对整门课有个全局认识,我画了一张结构图。你可以把它当作地图,后面每学一章,就回来看看自己走到了哪里。
从这张图你能看到,整个知识体系分四层。最上层是云端训练,这是AI的起点。然后通过量化,把浮点模型压缩成INT8格式。接着用CMSIS-NN在Cortex-M平台上做推理优化。最后落到具体的单片机应用上。
这门课30章,就是沿着这条路径一步步走下来。每一章我都会把我在项目中踩过的坑、总结的经验,原原本本地告诉你。量化参数怎么选?内存怎么对齐?算子调用有什么注意事项?这些实战细节,才是真正能帮你省时间的部分。