1、课程导论与AI on MCU概述:为什么要在STM32上跑AI?STM32CubeAI能做什么?课程目标与学习路径

为什么要在STM32上跑AI?

这个问题,我刚开始接触时也问过自己。

你想想看,AI 不是应该在云端、在 GPU 服务器上跑吗?

没错,那是训练阶段。但推理呢?

实际产品里,数据采集、实时响应、低功耗,这些才是硬骨头。我做过一个工业振动监测项目,数据传到云端再返回结果,延迟 200 毫秒,现场根本没法用。后来我把模型直接部署在 STM32 上,延迟降到 5 毫秒以内。

这就是为什么要在 MCU 上跑 AI——实时性、低功耗、低成本、隐私安全

核心优势:

  • 实时响应:本地推理,无需网络,延迟可控在毫秒级
  • 低功耗:STM32 典型功耗在 µA 级,电池供电可运行数月
  • 低成本:一颗几块钱的 MCU 就能跑轻量级模型
  • 数据隐私:敏感数据不出设备,符合 GDPR 等法规

说白了,AI on MCU 不是要替代云端 AI,而是填补「边缘端实时智能」这个空白。

STM32CubeAI 能做什么?

STM32CubeAI 是 ST 官方推出的工具链。我最早用它的 1.0 版本,那时候功能还比较基础。现在发展到 8.0 以上,已经相当成熟了。

它能帮你做三件事:

  1. 模型转换与优化:把训练好的模型(Keras、TensorFlow Lite、ONNX 等)转换成 STM32 能跑的 C 代码
  2. 自动代码生成:生成推理引擎、内存分配、API 接口,你几乎不用写底层代码
  3. 性能评估与验证:在 PC 上模拟推理结果,对比精度损失,确认后再烧录到硬件

我个人习惯:先用 CubeAI 在 PC 上跑一遍仿真,确认精度达标后,再部署到开发板。这一步能省掉大量调试时间。

举个例子,我做过一个人脸检测项目。模型用 MobileNetV1 训练,参数量 4.2M。用 CubeAI 量化成 int8 后,模型大小从 16MB 压缩到 4MB,推理速度从 120ms 降到 35ms。嗯,精度只掉了 0.3%。

课程目标

这门课的目标很明确:让你从零开始,亲手构建一个能在 STM32 上运行的神经网络模型

具体来说,学完这门课,你能做到:

  • 理解神经网络在 MCU 上的运行原理
  • 掌握 STM32CubeAI 的完整使用流程
  • 独立完成模型训练、转换、部署、调试
  • 解决实际项目中遇到的常见问题

注意:这门课不是讲深度学习理论,而是讲工程落地。你需要有基本的 C 语言和 Python 基础,了解简单的神经网络概念即可。

学习路径

我把课程分成四个阶段,每个阶段都有明确的目标:

阶段 章节 核心内容
基础篇 1-5 AI on MCU 概述、STM32CubeAI 安装、开发环境搭建
模型篇 6-15 模型训练、量化、转换、优化技巧
部署篇 16-25 代码生成、内存管理、外设集成、调试方法
实战篇 26-30 完整项目案例:手势识别、语音唤醒、异常检测

我建议你按顺序学,不要跳。尤其是模型量化那几章,很多坑都在那里。我曾经因为量化参数没调好,模型在板子上跑出来的结果全是噪声,排查了两天才找到原因。

避坑指南

最后分享几个我踩过的坑:

  • 模型太大:STM32 的 RAM 通常只有几十 KB 到几百 KB,模型参数量要控制在 1M 以内。我一开始用 ResNet-50,直接爆内存了。
  • 数据类型不匹配:训练时用 float32,部署时用 int8,精度可能会掉。一定要做量化感知训练。
  • 外设驱动没写好:模型推理再快,如果传感器数据采集慢,整体延迟还是高。我建议先调通外设,再部署模型。

一句话总结:AI on MCU 不是把大模型硬塞进小芯片,而是让模型和硬件互相适配。这门课就是教你如何做到这一点。

好了,导论就到这里。下一章我们开始搭建开发环境,把 STM32CubeAI 装起来,跑第一个示例。