1. AI部署概述:边缘AI与STM32生态
各位同学,欢迎来到《STM32Cube AI推理加速与部署优化实战》的第一章。咱们先不急着敲代码,花点时间把整个AI部署的版图看清楚。我做了这么多年嵌入式AI,最大的感触就是:方向比蛮力重要。你先把生态摸透了,后面踩坑的概率能少一半。
1.1 边缘AI:为什么非要在MCU上跑模型?
先问个问题:既然云端AI那么强,为什么还要在STM32这种小芯片上折腾?
说白了,三个字——实时、隐私、成本。
- 实时性:工业异常检测要求毫秒级响应,数据传到云端再回来,黄花菜都凉了。我做过一个电机振动监测项目,云端方案延迟200ms,现场工程师直接摇头——机器都撞了,报警才到。
- 隐私与安全:医疗数据、工厂核心参数,谁敢往公网传?本地推理,数据不出设备,这是硬门槛。
- 成本与功耗:一颗STM32F4几块钱,功耗几十毫瓦。云端方案呢?服务器、带宽、电费,一年下来够买几百颗MCU了。
核心观点:边缘AI不是要取代云端,而是把适合本地做的推理留在本地。云端做训练和复杂模型,边缘做轻量推理和快速响应——这叫「云边协同」。
1.2 STM32 AI生态全景
ST的AI生态,我习惯把它分成三层:硬件层、中间件层、工具链层。你想想看,这三层缺一个,项目就跑不顺。
| 层级 | 内容 | 我的经验 |
|---|---|---|
| 硬件层 | STM32全系列(F4/G4/H7/MP1等),内置FPU、DSP指令、部分型号带NPU | 选型时别只看主频,SRAM大小往往才是瓶颈 |
| 中间件层 | X-CUBE-AI、STM32CubeMX、STM32CubeIDE | CubeMX的图形化配置能省你半天时间,我每次都先用它搭框架 |
| 工具链层 | STM32Cube.AI Developer Cloud、STM32Cube.AI CLI、STM32CubeMonitor | 云端工具适合快速验证,本地CLI适合集成到CI/CD流水线 |
嗯,这里要注意:不是所有STM32都适合跑AI。F0/C0系列资源太少,硬跑模型会非常痛苦。我个人建议从STM32G4或H7系列起步,SRAM至少256KB,Flash至少1MB,这样才有操作空间。
1.3 Cube.AI工具链:从模型到固件的桥梁
Cube.AI工具链,说白了就是帮你把训练好的模型(TensorFlow Lite、Keras、ONNX、PyTorch等)转换成能在STM32上跑的C代码。整个过程我总结为四步:
- 模型导入与验证:把训练好的模型文件扔进Cube.AI,它会自动分析网络结构、算子类型、参数量。
- 量化与优化:默认是FP32,但MCU上跑不动。Cube.AI支持量化到INT8甚至INT4,精度损失可控。
- 代码生成:生成优化的C代码,包含推理函数、内存分配、算子实现。
- 集成与部署:把生成的代码嵌入到STM32工程中,编译烧录,跑起来。
避坑指南:我曾经把一个ResNet-50直接扔进Cube.AI,结果报错说算子不支持。后来才发现,Cube.AI对某些自定义层(比如复杂的注意力机制)支持有限。解决办法是:在训练时就考虑目标硬件支持的算子集,或者用STM32Cube.AI的算子兼容性检查工具提前扫描。
下面这张图是我自己整理的Cube.AI工作流,你看一眼就能明白整体脉络:
1.4 典型应用场景:三个方向,三种套路
我挑三个最常见的场景来讲,每个场景的部署策略都不一样。
场景一:异常检测(工业预测性维护)
这是我在工厂里做得最多的项目。振动传感器采集数据,FFT转频域,小模型判断设备是否异常。
- 模型特点:通常是一维CNN或LSTM,参数量在10万以内。
- 部署要点:量化到INT8,RAM占用控制在64KB以内。我习惯用滑动窗口+状态机来降低推理频率——不是每帧都跑,而是触发条件才跑。
- 避坑:我曾经遇到过模型在PC上准确率99%,部署到STM32后掉到85%。后来发现是传感器数据预处理方式不一致——PC上用float算均值方差,MCU上用了整数运算,精度对不上。从此我统一用定点数做预处理。
场景二:语音关键词识别(KWS)
智能家居、语音唤醒,典型模型是DS-CNN(深度可分离卷积)或TC-ResNet。
- 模型特点:输入是MFCC特征图,模型大小通常在50KB~200KB。
- 部署要点:MFCC提取本身很耗资源,我建议用硬件加速(STM32的DSP指令)或者查表法代替实时计算。
- 性能指标:在STM32H743上,一个10万参数的DS-CNN推理一次约15ms,完全满足实时性。
场景三:视觉分类(简单图像识别)
注意,这里说的是简单视觉分类——比如检测产品有无缺陷、识别数字仪表读数。不是让你跑YOLOv5。
- 模型特点:MobileNetV1/V2、SqueezeNet,输入分辨率通常96x96或128x128。
- 部署要点:输入图像先缩放到目标尺寸,这一步用DMA+硬件缩放可以做到零开销。模型量化后精度损失通常在1%~3%,可以接受。
- 我的经验:视觉模型对内存带宽要求高。H7系列有AXI总线,性能比F系列好很多。如果预算允许,直接上H7。
重要提醒:不要试图在STM32上跑大模型。我见过有人想把ResNet-152部署到F407上,结果Flash和RAM都不够,折腾两周放弃了。记住:MCU适合跑轻量模型(参数量<1M),复杂任务请交给MPU或NPU。
1.5 本章小结
这一章我们理清了边缘AI的价值、STM32的AI生态全貌、Cube.AI工具链的工作流程,以及三个典型场景的部署策略。你可能会觉得信息量有点大,没关系——后面每一章都会围绕这些知识点展开实操。