1、STM32CubeAI概述:AI在嵌入式领域的应用、STM32CubeAI简介、STM32CubeAI工作流程
各位同学,欢迎来到这门课的第一讲。
说实话,这几年我接触了不少做嵌入式开发的朋友,大家聊得最多的一个话题就是:「我们这单片机,也能跑AI?」
我的回答是:不仅能跑,而且跑得还挺好。今天这一章,我们就来聊聊这个事儿。
1.1 AI在嵌入式领域的应用
先说说AI在嵌入式领域到底能干啥。你可能会觉得,AI不都是云端那些大模型、GPU集群的事儿吗?跟咱们这小小的MCU有什么关系?
其实关系大了去了。我举个例子,去年我帮一个客户做智能门锁项目,他们要求在本地做语音指令识别——「开门」、「关门」、「设防」这三条指令。如果走云端,延迟高不说,网络一断就全废了。最后我们就是用STM32CubeAI,在芯片内部跑了一个轻量级的语音识别模型,效果出奇的好。
目前嵌入式AI的主流应用场景,我归纳了一下:
- 语音指令识别:像智能家居、车载语音助手,本地处理,响应快,隐私好。
- 异常声音检测:比如工业设备故障诊断,听到异常响声立刻报警。
- 传感器数据分类:加速度计、陀螺仪的数据,用来做跌倒检测、手势识别。
- 图像分类与目标检测:虽然MCU算力有限,但跑个简单的二维码识别、人脸检测还是可以的。
我的经验之谈: 嵌入式AI不是要把大模型塞进去,而是「量体裁衣」。你想想看,一个门锁只需要识别三五条指令,何必搞个能听懂莎士比亚的模型?
1.2 STM32CubeAI简介
好,那STM32CubeAI到底是什么?
说白了,它就是ST官方推出的一套工具链。它的核心作用就一个:把你训练好的AI模型,转换成能在STM32单片机上跑的代码。
我记得第一次用这个工具的时候,心里还挺忐忑的——这玩意儿靠谱吗?后来试了一下,发现它支持主流的深度学习框架,比如Keras、TensorFlow Lite、ONNX。你只要把模型文件丢进去,它就能自动帮你做量化、优化,最后生成一个C语言函数库。
它的主要特点,我列个表给大家看:
| 特性 | 说明 |
|---|---|
| 支持框架 | Keras、TensorFlow Lite、ONNX、PyTorch(通过ONNX转换) |
| 量化支持 | 支持8位量化,大幅降低内存占用和计算量 |
| 硬件加速 | 部分STM32型号内置神经网络加速器(如STM32N6) |
| 集成度 | 直接集成在STM32CubeMX中,一键生成工程 |
| 验证工具 | 提供PC端仿真验证,不用反复烧录固件 |
这里要划个重点: STM32CubeAI不是让你在单片机上训练模型,而是做「模型部署」。训练还是在PC上用Python完成,部署才交给它。
1.3 STM32CubeAI工作流程
接下来,咱们聊聊整个工作流程。我习惯把它分成四个步骤,每一步都不复杂,但每一步都有坑。
第一步:模型训练(PC端)
这一步跟嵌入式还没什么关系。你用Python,用Keras或者TensorFlow,训练一个分类模型。比如我们这门课要做的语音指令识别,就是训练一个能区分「开灯」、「关灯」、「播放音乐」的模型。
嗯,这里要注意:模型不能太大。我见过有人拿ResNet-50来做语音识别,结果模型文件几十兆,STM32根本装不下。一般建议模型参数量控制在几十万以内,用MobileNet或TinyML级别的网络结构。
第二步:模型转换与量化(STM32CubeAI)
训练好的模型是浮点型的,直接放到MCU上跑,内存和算力都扛不住。这时候就需要STM32CubeAI出手了。
它会做两件事:
- 模型转换:把Keras的.h5文件或TensorFlow的.tflite文件,转成STM32能识别的格式。
- 量化:把32位浮点数转成8位整数。精度会损失一点点,但换来的是内存占用减少4倍,速度提升好几倍。
我曾经踩过一个坑:量化后的模型在PC上验证准确率有95%,但部署到芯片上只剩80%。后来发现是输入数据的归一化方式没对齐。所以,量化后的验证一定要做。
第三步:代码生成与集成(STM32CubeMX)
这一步最爽。你只需要在STM32CubeMX里勾选一下「AI」功能,导入量化后的模型,它就会自动生成一堆C代码。包括模型推理函数、内存分配、输入输出接口。
我个人习惯是把生成的代码放到一个单独的文件夹里,不要手动修改它。因为一旦模型更新,重新生成时会覆盖掉你的修改。
第四步:嵌入式部署与测试
最后一步,就是把生成的代码烧录到STM32里,接上麦克风或者传感器,开始跑推理。
这里有个小技巧:先用STM32CubeAI自带的PC端验证工具跑一遍,确认输入输出没问题,再烧录到板子上。不然每次改代码都要烧录,太浪费时间了。
警告: 部署时一定要注意内存分配。STM32的RAM通常只有几十到几百KB,模型输入输出缓冲区、中间特征图都会占用大量内存。我建议先用CubeMX的「内存分析」功能看一下,别等到编译报错才回头找原因。
小结
好了,这一章的内容就这些。我们讲了嵌入式AI能做什么,STM32CubeAI是什么,以及整个工作流程怎么走。
说白了,就是把PC上训练好的模型,经过量化、转换,最后塞进STM32里跑起来。每一步都有工具帮你做,但每一步也都有细节需要注意。
下一章,我们会开始搭建开发环境,手把手教你怎么装STM32CubeMX、怎么配置AI插件。到时候咱们再细聊。
课后小建议: 如果你手头有STM32开发板,可以先下载STM32CubeMX和STM32CubeAI,熟悉一下界面。不用急着跑模型,先看看菜单栏里都有什么功能。磨刀不误砍柴工嘛。
公众号:蓝海资料掘金营,微信deep3321