1. 课程导论与开发环境搭建

各位同学好,我是你们的嵌入式AI讲师。今天咱们正式开始《STM32Cube AI模型版本控制与量化部署实战》的第一章。

说实话,我刚开始接触嵌入式AI的时候,也踩过不少坑。那时候模型训练好了,往STM32上一部署,要么跑不起来,要么精度掉得离谱。后来慢慢摸索,才发现版本控制和量化部署这两个东西,真的是绕不开的坎。

这一章,咱们先把地基打牢。我会带着你把开发环境搭好,把基本概念理清。后面30章的内容,才能顺风顺水。

1.1 STM32Cube.AI 到底是什么?

STM32Cube.AI,说白了就是ST官方出的一套工具链。它能把你训练好的神经网络模型,转换成能在STM32上高效运行的C代码。

我打个比方:你训练好的模型就像一本英文原版书,STM32只能看懂机器码。Cube.AI就是那个翻译官,把英文书翻译成STM32能读懂的指令集。

核心能力:支持 TensorFlow Lite、Keras、ONNX 等主流框架的模型导入,自动生成优化后的 C 代码,并提供性能评估和内存分析。

我在项目中遇到过最头疼的事,就是模型在PC上跑得好好的,一到嵌入式设备上就崩。后来发现是算子不支持。Cube.AI的验证工具能提前帮你发现这些问题,省了不少返工时间。

1.2 版本控制概念——为什么需要它?

你想想看,一个AI项目从训练到部署,中间要调多少次参数?改多少次网络结构?

我自己的习惯是:每改一次模型,就提交一次Git记录。这样哪天发现新模型效果还不如旧的好,直接git checkout回去就行。

我的建议:模型文件(.h5、.tflite)不要用Git LFS管理,否则仓库会变得巨大。我一般只记录训练脚本和配置文件,模型文件单独存到云存储或NAS上。

版本控制的好处,我总结了几点:

  • 可追溯:知道哪个版本在什么数据集上训练的
  • 可复现:换台电脑也能拉下来直接跑
  • 可回滚:新模型翻车了,秒切回稳定版
  • 协作方便:团队里谁改了啥,一目了然

1.3 量化部署的意义

量化,就是把模型里的浮点数(比如3.1415926)变成整数(比如3)。为什么要这么做?

STM32这类MCU没有浮点运算单元(FPU)或者FPU性能有限。浮点数运算又慢又费电。量化之后,模型体积能缩小4倍,推理速度能提升2-4倍。

注意:量化会带来精度损失。我曾经把一个图像分类模型从float32量化到int8,精度从92%掉到了88%。后来通过校准数据集和混合精度量化,才把精度拉回到91%。

量化部署的核心流程:

  1. 训练浮点模型(float32)
  2. 用校准数据集做量化感知训练或后训练量化
  3. 导出int8或int16模型
  4. 用Cube.AI部署到STM32

1.4 开发板选型:STM32H743 vs STM32F746

这两块板子我都用过,各有千秋。我整理了一个对比表:

特性 STM32H743 STM32F746
内核 Cortex-M7 @ 480MHz Cortex-M7 @ 216MHz
SRAM 1MB (可配置) 320KB
Flash 2MB 1MB
FPU 双精度 单精度
AI推理性能 更强(频率高、缓存大) 够用(适合中小模型)
价格 较高 适中
推荐场景 复杂模型、实时性要求高 入门学习、简单分类任务

我个人建议:如果你是初学者,先买F746,便宜够用。等后面跑大模型了,再上H743。我当年就是直接上了H743,结果很多功能根本用不上,浪费了预算。

1.5 开发环境搭建

1.5.1 STM32CubeMX 与 Cube.AI 安装

这两步其实很简单,但顺序别搞反了:

  1. 先去ST官网下载STM32CubeMX(最新版就行)
  2. 安装时选上所有支持的MCU系列
  3. 打开CubeMX,进入Help → Manage embedded software packages
  4. 找到X-CUBE-AI,点击安装

避坑指南:我曾经装过旧版的Cube.AI,结果死活识别不了我的Keras模型。后来发现是版本不兼容。建议CubeMX和Cube.AI都用最新版,至少是2023年以后的版本。

1.5.2 Python 环境配置(TensorFlow/Keras 2.x)

我推荐用Anaconda管理Python环境,干净又方便。

# 创建虚拟环境
conda create -n stm32_ai python=3.9

# 激活环境
conda activate stm32_ai

# 安装TensorFlow(CPU版就够了,训练小模型用)
pip install tensorflow==2.13.0

# 验证安装
python -c "import tensorflow as tf; print(tf.__version__)"

这里要注意:TensorFlow 2.x和Keras已经合并了,直接用tf.keras就行。我刚开始还傻傻地分开装,结果各种冲突。

1.5.3 Git 版本控制基础

Git这东西,说难不难,说简单也不简单。我总结了一套最常用的命令,够你应付整个课程:

# 初始化仓库
git init

# 添加文件到暂存区
git add .

# 提交
git commit -m "初始提交:搭建好Cube.AI环境"

# 查看状态
git status

# 查看历史
git log --oneline

我的工作流:每次修改模型或代码,先git add,再git commit。提交信息写清楚改了啥,比如“将卷积层数从3层改为5层,精度提升2%”。这样以后回看,一目了然。

1.6 本章知识体系总览

下面这张图,把咱们第一章的核心内容串起来了。你可以把它当成整个课程的地图:

第一章知识体系结构图 第一章:课程导论与开发环境搭建 嵌入式AI部署基础 STM32Cube.AI概述 版本控制概念 量化部署意义 开发环境搭建 模型转C代码 · 性能评估 Git管理 · 可追溯 · 可复现 float32→int8 · 体积缩小4倍 CubeMX · Python · Git安装 本章为后续29章打下基础,每个模块都会在后续课程中深入展开

1.7 本章小结

这一章咱们把整个课程的骨架搭好了。你知道了:

  • STM32Cube.AI是干啥的——模型翻译官
  • 版本控制为啥重要——防翻车神器
  • 量化部署的意义——让模型在MCU上跑得动
  • 两块开发板的区别——H743强但贵,F746够用
  • 环境怎么搭——CubeMX、Python、Git三步走