1. 课程导入与工程目标

STM32N6 是 ST 推出的首款集成自研神经网络加速器 NPU 的通用 MCU,其 NPU 可提供约 600 GOPS 的算力,同时片上带有 4.2 MB 连续 SRAM 与更大容量的外部 PSRAM 接口。这意味着它不再只是"跑一个模型"的 MCU,而是可以在同一颗芯片上并行承载多个神经网络模型,并让它们共享摄像头、麦克风、传感器等输入通道。当系统里出现两个以上模型时,真正困难的问题就从"模型能不能跑起来"变成了"多个模型如何按时间、按优先级、按资源约束被调度起来"。本课程要解决的正是这个问题。

什么是多模型推理调度工程

多模型推理调度工程,指的是在资源受限的嵌入式平台上,对多个神经网络模型的加载、内存布局、执行顺序、算力分配、输入输出衔接进行统一设计与控制的一整套工程方法。它包含三个层次:

  • 模型层:每个模型的输入输出张量形状、量化方式、算子集合、内存占用。
  • 资源层:NPU 算力、CPU 算力、内部 SRAM、外部 PSRAM 带宽、DMA 通道、缓存一致性。
  • 调度层:谁先跑、谁和谁可以并行、谁必须等待、超时如何处理、帧率如何保证。

举个具体例子。一个典型的智能门禁终端可能同时运行三个模型:人脸检测模型(输入 320×320,约 1.2 MB 权重)、人脸识别模型(输入 112×112,约 4 MB 权重)、活体检测模型(输入 128×128,约 0.8 MB 权重)。如果按"检测→识别→活体"串行执行,单帧耗时可能达到 90 ms 以上,帧率不足 11 FPS;而如果把活体检测与识别在 NPU 上做流水线重叠,并让 CPU 同时处理图像预处理,单帧耗时可以压缩到 45 ms 左右,帧率提升到 22 FPS。这个差距不是靠换模型得来的,而是靠调度设计得来的。

典型应用场景

多模型调度在 STM32N6 上最常见的落地场景有四类:

场景模型组合调度关键点
智能门禁/人脸终端人脸检测 + 人脸识别 + 活体检测检测结果驱动后两个模型,需低延迟唤醒
工业视觉质检缺陷检测 + 分类 + 字符识别高帧率、结果需与产线节拍对齐
语音交互设备关键词唤醒 + 语音识别 + 声纹确认常驻低功耗模型 + 事件触发大模型
多传感器融合视觉模型 + 振动/电流异常模型异构输入、时间戳对齐、结果融合

这些场景的共同特征是:模型之间存在依赖关系(前一个模型的输出是后一个模型的输入),或者存在竞争关系(多个模型抢同一块 NPU 和同一段内存)。调度工程的价值就在于把这两种关系显式地管理起来,而不是让它们随机发生。

学习路线

本课程按"先建认知、再搭骨架、后调性能"的顺序推进,整体分为四个阶段:

  1. 认知与工具链阶段:理解 STM32N6 的 NPU、内存拓扑与 ST Edge AI Core 工具链,能把一个 ONNX/TFLite 模型转换成可在目标板运行的 C 代码。
  2. 单模型落地阶段:完成单模型的量化、内存分配、推理调用与结果校验,建立可复现的基准。
  3. 多模型调度阶段:设计模型注册表、内存池、执行队列与优先级策略,实现多模型的加载、切换与并行。
  4. 性能与稳定性阶段:做帧率、延迟、内存峰值、功耗的测量与优化,处理超时、丢帧、缓存一致性等工程问题。

每个阶段都会给出可运行的示例工程结构、关键配置参数和判断依据。例如在单模型阶段,我们会用一个人脸检测模型作为基准,记录它的推理耗时(示例:NPU 上约 18 ms)、峰值内存(示例:约 2.1 MB)和输出张量布局,这些数据会成为后续调度设计的输入。

最终交付物

课程结束时,你将得到一个可编译、可烧录、可复现的多模型推理调度工程,具体包括:

  • 一个支持多模型注册与内存池管理的调度框架源码(C 语言,基于 STM32CubeIDE 工程)。
  • 一份模型清单与资源预算表,记录每个模型的输入输出、量化参数、内存占用与推理耗时。
  • 一套调度策略配置,包括优先级、超时阈值、并行/串行决策依据。
  • 一份性能测量报告模板,含帧率、端到端延迟、NPU 占用率、内存峰值的采集方法与示例数据。
本课程中的耗时、内存、帧率等数值均为教学示例或合理假设,用于说明设计方法,不代表任何具体硬件配置下的实测结果。实际数值需在你的目标板上用 STM32CubeIDE 与 ST Edge AI 工具链自行测量。

本节知识结构

下图把本节的核心关系整理为一张结构图:左侧是 STM32N6 的硬件资源,中间是多模型调度工程要管理的三类对象,右侧是课程最终交付物。它帮助你建立"硬件—调度—交付"的整体认知,后续章节会逐层展开。

STM32N6 多模型推理调度工程 · 认知结构 STM32N6 硬件资源 NPU 约 600 GOPS 算力 片上 SRAM 4.2 MB 连续空间 外部 PSRAM 大容量权重存储 CPU / DMA 预处理与搬运 摄像头 / 麦克风 多路输入通道 调度工程管理对象 模型层 张量形状 / 量化 / 算子 权重与激活内存占用 资源层 NPU / CPU / SRAM / PSRAM DMA 通道与缓存一致性 调度层 优先级 / 执行顺序 / 并行 超时与丢帧策略 依赖与竞争 检测→识别→活体 链式依赖 多模型争抢 NPU 与内存 课程最终交付物 调度框架源码 模型注册 + 内存池 模型资源预算表 内存 / 耗时 / 量化参数 调度策略配置 优先级 / 超时 / 并行决策 性能测量报告 帧率 / 延迟 / 内存峰值 可复现工程 CubeIDE 可编译烧录 提供 产出 硬件资源 → 调度对象 → 工程交付物:本课程的主线认知路径