嵌入式边缘AI,是怎么在小小的摄像头里「瘦身」的?

一台人形检测摄像头要在本地判断画面里有没有人,并在几十毫秒内给出结果。它没有风扇,供电可能只是一根网线,内存也常常只有几百兆字节。

嵌入式边缘AI要处理的,就是这类把视觉模型放进受限硬件的任务。这里说的「瘦身」,指的是一整套让模型在算力、内存和功耗都有限的设备上跑得动、跑得稳的做法。

下面按顺序拆开:约束从哪里来,四类压缩手段各自动了什么,NPU 在硬件侧承担什么角色,以及模型上板之后怎么验证这笔账是否划算。

直接答案:四类手段合起来把模型「瘦」下来

工程上把这套做法叫模型压缩与轻量化部署。目标是同时压低存储占用、计算量和内存访问量,并把精度损失控制在可接受范围。

常见的四类手段经常叠加使用:

  • 量化:降低权重和激活值的数值位宽。
  • 剪枝:删掉贡献小的连接、通道或整层结构。
  • 知识蒸馏:用大模型带一个小模型,让小模型学到相近的判断能力。
  • 轻量架构:从设计阶段就控制参数量和计算量。
手段 动了什么 主要收益 主要代价
量化 数值位宽 体积、内存带宽、功耗下降 需要校准,可能损失精度
剪枝 冗余连接或通道 参数量与计算量下降 需要微调,稀疏结构未必加速
知识蒸馏 训练方式 小模型精度更接近大模型 训练环节更复杂
轻量架构 网络结构本身 从源头减少参数与计算 精度上限受到约束

模型变小靠的是数值精度、网络结构和训练方式三处同时下手,NPU 只负责把压缩后的结果高效执行。

摄像头为什么会卡住:算力、带宽、功耗三笔账

一台边缘AI摄像头的可用预算,比很多人预想的紧得多。

  • 计算量:一次前向传播的乘加次数,远超通用 CPU 在实时预算内能完成的数量,靠 CPU 硬扛会拉高延迟。
  • 内存带宽:瓶颈常常出在数据搬运。权重和中间特征图反复在计算单元与内存之间往返,这段搬运的能耗明显高于一次乘加运算。
  • 功耗与散热:多数摄像头靠被动散热,整机功耗预算常在几瓦量级,功耗上去温度也会上去。
  • 成本与体积:整机对物料成本敏感,更大的芯片和内存都意味着更贵的方案。
  • 网络与隐私:把每路视频流都送到云端,带宽成本、响应时延和数据合规压力会一起出现。

约束彼此叠加,可调整的空间集中在模型这一侧。

量化:把 32 位浮点换成 8 位整数

训练阶段的权重通常用 FP32 保存,每个参数占 32 位。到了推理环节,这份精度存在冗余。

换成 INT8 之后,单个参数占 8 位,模型体积理论上降到原来的四分之一,内存带宽需求同步下降。整数乘加在专用硬件上的能耗也更低。

代价是数值可表示的范围变小,精度可能出现波动。工程上用一小批有代表性的数据做校准,确定每层的缩放系数,把误差压住。

常见的三种做法:

  • 训练后量化:不需要重新训练,流程短,适合结构规整的骨干网络。
  • 量化感知训练:训练时就模拟量化误差,精度更可控,代价是训练成本更高。
  • 混合精度:对敏感层保留 INT16 或 FP16,其余层走 INT8。瑞芯微 RK3588 的 NPU 支持 INT4/INT8/INT16/FP16 混合运算,就是为这种策略准备的。

如果量化后精度掉得明显,先检查校准数据是否覆盖了真实场景,再考虑对特定层保留高精度。量化是否无损,需要用自己业务的数据实测确认。

剪枝:删掉不重要的连接和通道

剪枝的依据是参数重要性。绝对值接近零的权重对输出影响很小,可以置零或删除。

按剪枝粒度分成两类,效果差别不小:

  • 非结构化剪枝:删单个权重,压缩率高,生成的稀疏矩阵在通用硬件上未必带来加速。
  • 结构化剪枝:整条通道或整个滤波器一起删掉,网络形状保持规整,硬件更容易吃到收益。

标准流程是循环进行的:训练、评估重要性、剪枝、微调,再进入下一轮。每剪完一轮都要重新验证精度,不能只看参数量下降。

剪枝真正省下的是计算量,而计算量直接对应推理时间,这比参数量更值得关注。

知识蒸馏与轻量架构:从源头做减法

知识蒸馏让小模型跟着大模型学。教师模型输出的概率分布比硬标签携带更多信息,学生模型模仿这套分布,训练效果通常好于只用标签训练。

轻量架构则从设计阶段就控制规模,常见思路有三条:

  • 深度可分离卷积:把标准卷积拆成逐通道卷积和逐点卷积,减少乘加次数,MobileNet 系列是代表。
  • 分组卷积与通道重排:用更少的计算完成特征混合,ShuffleNet 系列是代表。
  • 面向端侧的检测模型:YOLO 一类的 nano、tiny 版本,参数和计算量按端侧预算裁剪。

三类手段的分工可以这样看:轻量架构决定起点,蒸馏改善小模型的训练质量,剪枝和量化决定最终能压到多小。

NPU 在硬件侧承担什么角色

NPU 是专门为矩阵乘加这类算子设计的加速单元,能效比通用 CPU 高。它不擅长通用逻辑控制,所以边缘设备通常按异构方式分工:

  • CPU:负责调度、图像前处理、协议与业务逻辑。
  • NPU:执行量化转换后的推理。
  • ISP 与 GPU:负责图像处理、缩放和色彩转换。

一个具体的例子是瑞芯微 RK3588。这颗芯片采用 8nm 制程,CPU 为四核 Cortex-A76 加四核 Cortex-A55,内置 NPU 算力 6 TOPS,支持 INT4、INT8、INT16、FP16 混合运算。训练好的模型要经过 RKNN 工具链量化和转换,才能交给它执行。

部署中最常见的坑是算子不支持:模型里某个算子不在 NPU 的支持列表内,框架会把它回落到 CPU 执行,整条流水线的速度被这一步拖住。转换完成后的算子支持检查不能省。

从训练到上板:一次完整的部署流程

把模型从服务器搬到摄像头上,通常要按下面的顺序走:

  1. 定义任务与验收指标:做检测还是分类,目标帧率多少,能接受的精度下限是多少。
  2. 选基线模型:优先挑已经为端侧设计过的轻量网络。
  3. 训练与蒸馏:用教师模型带一个学生模型。
  4. 剪枝与微调:逐步加大剪枝比例,每轮微调后复测精度。
  5. 量化与校准:用真实场景数据做校准集,必要时保留混合精度。
  6. 转换与算子检查:跑一遍目标工具链,确认关键算子都能落到 NPU 上。
  7. 板上实测:端到端延迟、帧率、内存峰值、功耗与温升一起测。
  8. 固化与回归:模型版本、量化参数、工具链版本一并记录,方便后续复现。

第 6 步和第 7 步最容易出问题,也最容易被跳过。

瘦身之后怎么验收:五个必测指标

指标 怎么看 常见误判
精度 自建验证集上的 mAP 或准确率 验证集与训练集同分布,结果偏乐观
端到端延迟 含前处理、推理、后处理的总耗时 只统计推理算子的时间
帧率稳定性 连续运行下的平均帧率与最差帧 只看平均值,忽略卡顿
内存峰值 运行时的内存占用 只算权重体积,忽略中间特征图
功耗与温升 连续运行数小时后的表现 用短时跑分代替长期表现

中间特征图的内存占用经常超过权重本身,这一点在挑选芯片型号时最容易被低估。

常见误区与能力边界

  • 参数量不等于速度:决定速度的是计算量,以及算子能否被硬件直接支持。
  • 量化不等于无损:位宽越低,精度风险越大,必须用自有数据实测。
  • 摄像头本地能做的事有边界:轻量检测、分类、识别适合放在前端;更复杂的推理仍要交给边缘服务器或云端处理。
  • 端云协同是更常见的形态:摄像头只回传结构化结果与告警事件,原始视频流留在本地。
  • 上板跑不动时,先查工具链:算子回落到 CPU 是加速失效的常见原因。

常见问题

摄像头本地跑 AI,断网后还能用吗?

能。推理在设备本地完成,识别不受网络影响。需要联网的部分通常是告警上报和远程调阅。

量化一定会掉精度吗?

取决于模型结构、位宽和校准数据。视觉检测类模型在 INT8 下精度变化往往在可接受范围内,前提是校准数据贴近真实场景。这个结论需要在自有数据上复测,不能直接照搬。

模型多大才有可能在摄像头上跑起来?

没有统一门槛。更可靠的算法是看计算量而不是参数量,再用几 TOPS 量级的 NPU 去匹配,最后拿目标板实测一遍。

学嵌入式边缘 AI,需要先补哪些基础?

C 语言、Linux 系统编程和计算机体系结构是底座,上面再叠模型部署工具链与 NPU 算子知识。东方瑞通的 AI+嵌入式课程安排了分类、目标检测、文字识别三类推理模型部署实验,以及基于 Face ID 的安防系统项目,硬件与软件的学习比例大致是三成与七成,可以作为学习路径的参考。

嵌入式边缘AI在摄像头里的「瘦身」,本质上是在精度、速度、功耗三者之间找平衡点。先算清约束,再选对手段,最后用板上实测的数据确认,模型才算真正住进了那台小小的设备里。

posted @ 2026-09-24 22:27  老码的观察日记  阅读(3)  评论(0)    收藏  举报