1. 课程导论:边缘AI的崛起与STM32的机遇
各位同学好,我是你们这门课的主讲工程师。在嵌入式这行摸爬滚打了十几年,从最早的8位单片机做到现在的双核Cortex-M7,我亲眼看着AI从云端一点点「下沉」到了我们手边的MCU上。
说实话,五年前如果有人跟我说,要在STM32上跑图像识别,我肯定觉得他疯了。那时候我们连跑个JPEG解码都得精打细算,更别提卷积神经网络了。但现在不一样了——STM32Cube AI工具链成熟了,NPU加速器也集成进来了,边缘AI不再是噱头,而是实打实的工程需求。
1.1 为什么是STM32?
你可能会问:市面上那么多MCU,为什么偏偏选STM32做边缘AI?我个人的看法是,STM32的优势不在于算力最强,而在于生态最完整。
- 硬件覆盖广: 从低功耗Cortex-M0+到带NPU的Cortex-M55,一条产品线覆盖所有场景
- 工具链成熟: STM32CubeMX + CubeIDE + CubeAI,三件套打通从配置到部署的全流程
- 社区资源多: 遇到坑了,基本都能找到前人踩过的痕迹
我记得2019年第一次用CubeAI做手势识别时,模型量化后精度掉了8个点,折腾了两天才找到原因——是输入图像的归一化参数没对齐。这种经验,说白了就是靠时间和项目堆出来的。
1.2 课程目标:你能学到什么?
这门课不是讲理论,而是讲实战。我假设你已经会用STM32做基本的GPIO、UART、I2C操作,也大概知道什么是卷积神经网络。如果你还不会,也没关系,我会在关键地方补上必要的背景知识。
| 模块 | 核心内容 | 实战产出 |
|---|---|---|
| 图像预处理优化 | 色彩空间转换、缩放、归一化的加速方法 | 优化后的图像预处理流水线 |
| 模型部署 | STM32CubeAI工具链使用、量化、剪枝 | 在STM32上运行的TFLite模型 |
| 性能调优 | DMA、双缓冲、Cache策略、NPU加速 | 推理速度提升2-5倍的优化方案 |
| 实战项目 | 人脸检测、物体分类、手势识别 | 完整的边缘AI应用原型 |
1.3 学习路径:怎么学最有效?
这门课一共30章,我把它分成了四个阶段。你不需要一次性啃完,但建议按顺序来——因为后面的章节会用到前面的知识。
- 基础篇(第1-5章): 环境搭建、图像预处理基础、CubeAI工具链入门
- 优化篇(第6-15章): 预处理加速、模型量化、内存优化、推理加速
- 进阶篇(第16-25章): 多模型协同、NPU编程、功耗优化、调试技巧
- 实战篇(第26-30章): 三个完整项目从零到一,外加一个综合挑战
我个人习惯是每学完一个阶段,停下来做个复盘。把踩过的坑、用过的技巧、跑过的数据都记下来。这些东西在面试或者做下一个项目时,比任何理论都管用。
1.4 开发环境总览
工欲善其事,必先利其器。咱们先把环境搭好,后面才能专心搞优化。
硬件准备
我推荐以下三块开发板,覆盖了从入门到进阶的需求:
| 开发板 | 主控芯片 | 适用场景 | 参考价格 |
|---|---|---|---|
| STM32F746G-DISCO | STM32F746NG (Cortex-M7, 216MHz) | 入门级图像处理、LCD显示 | 约¥400 |
| STM32H747I-DISCO | STM32H747XI (双核M7+M4, 480MHz) | 高性能推理、双核协同 | 约¥600 |
| B-U585I-IOT02A | STM32U585 (Cortex-M33, 160MHz) | 低功耗AI、物联网场景 | 约¥350 |
软件工具链
软件方面,我们主要用以下工具。我会在第二章详细讲安装配置,这里先列个清单:
- STM32CubeMX: 图形化配置工具,生成初始化代码
- STM32CubeIDE: 集成开发环境,基于Eclipse,免费
- STM32CubeAI: 模型转换与优化工具,支持Keras/TFLite/ONNX
- X-CUBE-AI: 运行时库,提供推理API
- OpenCV(PC端): 用于预处理算法的原型验证
嗯,这里要注意一点:CubeAI的版本更新很快,不同版本对算子支持不一样。我建议统一用课程配套的版本,避免出现「我的代码明明跟你一样,为什么跑不通」的情况。
1.5 知识体系总览
下面这张图,是我自己整理的课程知识体系。你可以把它当作地图,随时回来看看自己走到哪了。
这张图把整个课程的核心流程串起来了。你注意看,从图像输入到最终输出,中间经过了预处理、模型部署、推理加速三个关键环节。每个环节都有对应的优化手段,这也是咱们这门课要重点攻克的内容。
1.6 写在开始之前
最后说几句心里话。做边缘AI,说白了就是在资源受限的环境下「戴着镣铐跳舞」。你不可能像在服务器上那样随意堆算力,每一KB内存、每一个CPU周期都得精打细算。
但正是这种限制,让这个领域变得有趣。当你看到自己优化的模型在STM32上以30fps跑起来的时候,那种成就感,是调参调出来的高精度给不了的。
好,咱们开始吧。