AI嵌入式项目的交付难点,通常出现在模型训练完成之后。模型要在有限的内存、算力、功耗和实时约束下运行,还要能证明输出没有跑偏。把工作拆成六个阶段,并为每个阶段设一道验收闸门,项目才容易推进。

读完这篇文章,你可以得到三样东西:一张阶段任务与交付物表,一套从离线模型到现场设备的验证顺序,以及判断何时回退的条件。

AI嵌入式项目的六个阶段

这里的 AI嵌入式项目,指模型推理直接运行在设备上,并参与识别、控制或告警的项目。阶段可以拆成下面六步。

  • 需求与约束:明确输入传感器、输出动作、工作环境、延迟、功耗、内存和精度要求。
  • 模型基线:固定数据切分、输入输出格式,训练并评估一个浮点模型。
  • 压缩与转换:做剪枝、蒸馏或量化,转换成目标工具链支持的格式。
  • 设备集成:把预处理、推理、后处理和业务调用接成一条可运行路径。
  • 台架验证:测内存、延迟、功耗、温升和长时间运行。
  • 现场发布:用真实数据灰度验证,保留监控和回退能力。

阶段之间会反复迭代。转换报错时,可能要回到模型结构;板端延迟超标时,也可能要回到算子选择或输入分辨率。

阶段主要任务交付物通过条件
需求与约束明确场景、传感器、功耗、延迟、内存和精度要求验收指标表指标可测量,且有优先级
模型基线固定输入输出,切分数据,评估浮点模型浮点模型、数据说明、误差样本留出集与现场切片达到门槛
压缩与转换剪枝、蒸馏、量化、格式转换、算子核对转换模型、校准集、对比报告输出误差与任务指标在门槛内
设备集成接通预处理、推理、后处理和业务调用可运行固件、接口说明单帧和多帧流程稳定
台架验证测内存、延迟、功耗、温升和长稳性能报告、问题清单P95 与峰值满足约束
现场发布真实数据验证、灰度、监控、回退发布包、监控项、回滚包现场指标稳定,回滚可用

模型准备阶段要留下哪些基线

模型准备不只包含训练。对部署有用的,是一个可以复现的浮点基线。后面每次量化、转换和优化,都要拿它作对照。

  • 数据切分:训练、验证、测试分开,再留一组来自真实设备环境的现场切片。
  • 评估指标:总体指标之外,记录关键类别、边界样本和小目标等切片结果。
  • 输入输出约定:固定尺寸、颜色格式、归一化参数和输出解码方式。
  • 版本记录:数据、训练代码、模型文件、转换脚本和校准集都要能追溯。
  • 资源预算:尽早估算 Flash、RAM、单帧延迟和功耗上限,避免模型做完才发现放不下。

基线阶段还要收集失败样本。只记录一个准确率,很难解释量化后为什么某些场景变差。保存混淆矩阵、漏检样本和置信度分布,后面的排查会快很多。

量化与转换怎样避免精度走样

模型转换成功,只能说明文件被工具读懂了。 真正要验证的是,同一个输入经过浮点模型、转换模型和板端模型后,结果是否仍然接近。

量化是常用的压缩手段。意法半导体在 STM32Cube.AI 的技术说明中,用 FD-MobileNet 做了示例。量化后,Flash 和 RAM 占用约为原来的四分之一。执行速度约为原来的 3 倍,精度约下降 0.7%。这个结果来自单个模型示例,不能直接当成项目承诺。

PTQ 适合已有模型快速验证,需要一批有代表性的校准数据。QAT 在训练中模拟量化误差,通常更费力,但对精度更敏感的任务更合适。

校准集不要只用训练图。灯光、角度、噪声、遮挡和类别不平衡,都要按现场分布覆盖。校准数据偏离实际,量化误差会被放大。

转换时重点核对三件事。

  • 算子:TensorFlow Lite Micro 以推理为主,不负责训练;模型用到的算子要逐个确认。
  • 形状:动态 shape、未固定 batch、复杂后处理,常导致转换失败或回退到 CPU。
  • 预处理:训练、PC 仿真、板端三处的 resize、归一化、通道顺序要一致。

对比时不要只看一个总准确率。准备同一批固定输入,比较任务指标、最大绝对误差、余弦相似度或每层输出。地平线开发者文档中的 PTQ 排查流程,也建议对比浮点与量化输出。还要查看节点落在加速器还是 CPU。

发现误差集中在少数层时,可尝试混合量化、保留敏感层精度,或回到 QAT。如果量化后仍达不到门槛,先回到数据和模型结构,不要靠调高阈值掩盖问题。

设备部署先打通哪条数据链

板端第一次跑通,建议只做单帧推理。确认模型能加载、输入能送入、输出能解释,再接摄像头、传感器和业务线程。

  • 内存:模型权重、张量 arena、预处理缓冲和后处理缓冲分开统计,记录峰值。
  • 数据格式:摄像头常见 YUV、RGB、BGR 等格式,转换放在哪一层要固定。
  • 推理路径:确认哪些算子走 NPU 或加速器,哪些回退 CPU,回退是否可接受。
  • 调度:推理线程优先级、锁、队列长度和丢帧策略要提前设计。
  • 功耗与温升:持续推理和间歇推理分别测,别只测冷启动。

性能测试至少记录冷启动加载时间、预热后的单帧延迟、P50/P95/最大延迟、吞吐、内存峰值、CPU/NPU 占用、功耗和温升。

平均延迟好看,不代表实时任务能按时完成。 控制、避障、告警这类 AI嵌入式项目,要盯尾延迟和最坏情况。

四道验收闸门怎么设

为了避免把问题带到现场,可以把验证分成四道闸门。每道闸门都要有输入、比较对象和失败动作。

  • 数据与浮点基线:确认切分无泄漏,浮点模型在留出集和现场切片上达标。失败则补数据或改模型。
  • 转换一致性:同一批输入分别跑浮点、转换后和板端,比较任务指标与输出误差。失败则查算子、量化参数和预处理。
  • 板端资源与实时性:看内存峰值、P95/最大延迟、功耗、温升和长稳。失败则减模型、改分辨率、换算子或调整调度。
  • 现场泛化与回退:用真实分布、灰度和长稳测试,确认监控、告警、回滚可用。失败则回退旧模型或关闭功能。

每道闸门的阈值来自产品约束,不存在通用数字。 消费设备可能更在意功耗,工业检测更在意漏检率,机器人更在意尾延迟。阈值要在项目开始时就写进验收表。

现场验证和发布要注意什么

台架通过后,模型还要面对真实数据分布。灯光、角度、传感器噪声、遮挡和季节变化,都可能让离线指标失效。

  • 影子运行:新模型只记录结果,不直接控制执行器。
  • 灰度发布:限定设备、场景或时段,比较新旧模型。
  • 分布监控:置信度整体下滑、类别比例突变时触发告警。
  • 长稳测试:覆盖连续运行、反复启停、网络中断和断电恢复。
  • 版本绑定:模型、固件、预处理配置和后处理参数作为一套版本发布。
  • 回退路径:保留旧模型和旧固件,确认回滚不依赖网络。

模型更新还要考虑兼容性。新模型改了输入尺寸或输出格式,旧的后处理代码可能直接失效。发布包中应写清模型版本、算子依赖和最低固件版本。

工具链和硬件怎么选

工具链选择从约束出发,不从名气出发。 先确认模型能不能被目标工具链完整解析,再比较量化、性能分析和调试能力。

  • 模型规模小、追求低功耗和常开检测,可优先看 MCU 与轻量推理框架。
  • 视觉、语音或多模型并发,通常需要 MPU、GPU 或 NPU,重点看算子覆盖和内存带宽。
  • 需要跨平台移植,可看 TensorFlow Lite Micro 这类通用运行时;更在意目标芯片的极限性能,可评估厂商工具链。
  • 必须确认工具能否给出逐层性能、内存占用和量化误差报告。
  • 还要确认许可证、版本升级和长期维护责任。

意法半导体的技术文章提到,STM32Cube.AI 的默认运行时针对 STM32 优化。TensorFlow Lite 运行时更侧重跨平台移植。两者都能用于 MCU,但适用条件不同。AI嵌入式项目的选型,要把可移植性、性能和维护成本放在同一张表里比较。

瑞芯微 RKNN 工具链资料也把 PC 仿真、量化报告和板端验证分开。先比输出,再上板,能减少无效调试。

常见问题

没有 NPU 能做 AI嵌入式项目吗?

可以。小模型、低频推理和简单分类可以在 MCU 上运行。要先算清内存、延迟和功耗,再决定是否值得本地推理。

量化一定会掉精度吗?

不一定。量化可能带来精度变化,幅度取决于模型、校准数据和任务。必须用留出集和现场切片验证,不能只看转换是否成功。

PC 仿真通过就能上线吗?

不能。PC 仿真不能替代板端的内存、调度、功耗和温升测试,也不能替代现场数据验证。

模型转换失败先查什么?

先查不支持的算子、动态 shape、输入输出格式和预处理差异。再核对工具链版本与量化参数。缩小到单层或单算子复现,通常比反复重转整模型更快。

验证集要多大才够?

没有统一数量。验证集要覆盖真实场景的主要分布和高风险边界,并与上线后的监控数据对照。样本很少时,宁可缩小功能范围,也不要用一个漂亮指标代替现场验证。

项目应该先选硬件还是先做模型?

两者要交替推进。先用目标硬件的内存、算力和功耗上限约束模型规模,再用候选模型反推硬件配置。只定一头,后期返工概率更高。

参考资料

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐