1、AI嵌入式系统概述:AI在嵌入式领域的应用、STM32CubeAI简介、AI与传统控制的区别
各位同学,大家好。我是你们这堂课的主讲工程师。咱们今天聊点实在的——AI怎么跟嵌入式系统搞到一起的。
说实话,十年前我刚开始做嵌入式开发时,压根没想过AI这回事。那时候跑个简单的PID控制算法,MCU资源就快吃满了。现在呢?你随便拿个STM32H7,都能跑轻量级神经网络。变化真的很大。
1.1 AI在嵌入式领域的应用
AI进入嵌入式领域,不是赶时髦,是被逼出来的。我举个例子你就明白了。
传统上,我们要做一个电机堵转检测,得写一堆if-else逻辑:电流超过阈值、持续时间超过多少毫秒、转速掉到多少以下...条件多了去了。而且不同负载下,阈值还得调。我在项目里遇到过,光调这个阈值就花了两周。
用AI呢?简单粗暴。采集正常和堵转时的电流、转速数据,扔给神经网络训练。模型部署到MCU上,实时推理。准确率比人工调参高得多,而且自适应性强。
目前嵌入式AI主要用在以下几个方向:
- 预测性维护:通过振动、温度、电流数据预测设备故障。我在工厂项目里做过,提前48小时预警电机轴承磨损,帮客户省了一大笔停机损失。
- 语音唤醒与识别:像智能音箱、车载语音助手,都是在嵌入式端做关键词检测,云端做复杂语义理解。
- 计算机视觉:人脸识别门禁、工业质检、自动驾驶中的目标检测。嗯,这里要注意,视觉模型通常比较大,需要量化压缩才能跑在MCU上。
- 传感器数据融合:IMU姿态解算、环境感知。说白了,就是让多个传感器互相校准,输出更可靠的数据。
- 异常检测:工业现场的设备状态监测、电网故障诊断。不需要大量标注数据,用自编码器就能搞定。
核心观点:嵌入式AI不是把云端那套搬下来,而是要在资源受限的硬件上,做高效的推理。你想想看,一个Cortex-M4内核,主频200MHz,RAM才256KB,能跑什么模型?这就是我们要解决的问题。
1.2 STM32CubeAI简介
STM32CubeAI是意法半导体推出的一套工具链。说白了,它帮你把训练好的AI模型,转换成能在STM32上跑的C代码。
我个人习惯用Keras训练模型,然后导出成.h5文件。STM32CubeAI会做这几件事:
- 模型解析:读取你的网络结构、权重、激活函数。
- 量化优化:把32位浮点权重转成8位整数。精度损失不大,但内存占用直接降到1/4。
- 代码生成:生成优化的C代码,包含推理函数、内存分配、层间连接。
- 性能评估:估算推理时间、RAM/Flash占用。我在项目里经常用这个功能,提前判断模型能不能跑在目标芯片上。
我记得第一次用STM32CubeAI时,心里还挺没底的。一个图像分类模型,在PC上跑得飞快,转到STM32F4上会不会卡死?结果生成代码后一看,推理时间才80ms,完全够用。
小技巧:STM32CubeAI支持TensorFlow Lite、Keras、ONNX等多种格式。我个人推荐用TensorFlow Lite,量化工具更成熟,社区资源也多。
STM32CubeAI的典型工作流程是这样的:
| 步骤 | 操作 | 工具 |
|---|---|---|
| 1 | 数据采集与预处理 | Python脚本、STM32传感器 |
| 2 | 模型训练与验证 | Keras、TensorFlow |
| 3 | 模型转换与量化 | STM32CubeAI |
| 4 | 代码生成与集成 | STM32CubeMX、STM32CubeIDE |
| 5 | 硬件部署与测试 | STM32开发板、调试器 |
1.3 AI与传统控制的区别
这个问题,我经常被刚入行的朋友问到。AI控制和传统PID控制,到底有啥区别?
咱们先看传统控制。PID控制器,你给它设定一个目标值,它根据当前误差,计算比例、积分、微分三个分量,输出控制量。说白了,它是个基于模型的方法。你需要知道被控对象的数学模型,才能调好PID参数。
AI控制呢?它是数据驱动的。你不需要知道系统的数学模型,只需要大量的输入输出数据。神经网络自己学习映射关系。我在项目中做过一个温度控制,传统PID需要知道加热器的热容、散热系数,AI控制直接拿历史温度数据训练,效果反而更好。
具体区别我列了个表:
| 对比项 | 传统控制 | AI控制 |
|---|---|---|
| 建模方式 | 基于数学模型 | 基于数据驱动 |
| 参数调整 | 人工调参(PID参数) | 自动学习(权重更新) |
| 适应性 | 对参数变化敏感 | 自适应能力强 |
| 计算资源 | 低(几KB代码) | 高(需要乘法器、RAM) |
| 可解释性 | 高(每个参数有物理意义) | 低(黑盒模型) |
| 开发周期 | 短(调参即可) | 长(需要数据采集、训练) |
避坑指南:我曾经在一个项目中,盲目用AI替代PID。结果发现,对于线性系统,PID又简单又可靠,AI反而画蛇添足。AI的优势在于非线性、时变、难以建模的系统。别为了用AI而用AI。
那什么时候该用AI?我总结了几条经验:
- 系统非线性强,传统控制效果差
- 环境变化大,需要自适应
- 有大量历史数据可用
- 对实时性要求不是极端苛刻(推理时间在毫秒级可接受)
反过来,如果系统是线性的、模型已知、实时性要求极高(比如电机电流环控制,周期只有几十微秒),那还是老老实实用PID吧。
最后说一句,AI和传统控制不是对立的。我现在的做法是:用AI做上层决策,用PID做底层执行。比如AI根据工况预测最优转速,PID负责精确跟踪这个转速。两者结合,效果1+1>2。
好,这一章就到这里。下一章咱们聊聊数据采集和预处理,这可是AI项目的基石。数据搞不好,模型再牛也白搭。