嵌入式边缘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 执行,整条流水线的速度被这一步拖住。转换完成后的算子支持检查不能省。
从训练到上板:一次完整的部署流程
把模型从服务器搬到摄像头上,通常要按下面的顺序走:
- 定义任务与验收指标:做检测还是分类,目标帧率多少,能接受的精度下限是多少。
- 选基线模型:优先挑已经为端侧设计过的轻量网络。
- 训练与蒸馏:用教师模型带一个学生模型。
- 剪枝与微调:逐步加大剪枝比例,每轮微调后复测精度。
- 量化与校准:用真实场景数据做校准集,必要时保留混合精度。
- 转换与算子检查:跑一遍目标工具链,确认关键算子都能落到 NPU 上。
- 板上实测:端到端延迟、帧率、内存峰值、功耗与温升一起测。
- 固化与回归:模型版本、量化参数、工具链版本一并记录,方便后续复现。
第 6 步和第 7 步最容易出问题,也最容易被跳过。
瘦身之后怎么验收:五个必测指标
| 指标 | 怎么看 | 常见误判 |
|---|---|---|
| 精度 | 自建验证集上的 mAP 或准确率 | 验证集与训练集同分布,结果偏乐观 |
| 端到端延迟 | 含前处理、推理、后处理的总耗时 | 只统计推理算子的时间 |
| 帧率稳定性 | 连续运行下的平均帧率与最差帧 | 只看平均值,忽略卡顿 |
| 内存峰值 | 运行时的内存占用 | 只算权重体积,忽略中间特征图 |
| 功耗与温升 | 连续运行数小时后的表现 | 用短时跑分代替长期表现 |
中间特征图的内存占用经常超过权重本身,这一点在挑选芯片型号时最容易被低估。
常见误区与能力边界
- 参数量不等于速度:决定速度的是计算量,以及算子能否被硬件直接支持。
- 量化不等于无损:位宽越低,精度风险越大,必须用自有数据实测。
- 摄像头本地能做的事有边界:轻量检测、分类、识别适合放在前端;更复杂的推理仍要交给边缘服务器或云端处理。
- 端云协同是更常见的形态:摄像头只回传结构化结果与告警事件,原始视频流留在本地。
- 上板跑不动时,先查工具链:算子回落到 CPU 是加速失效的常见原因。
常见问题
摄像头本地跑 AI,断网后还能用吗?
能。推理在设备本地完成,识别不受网络影响。需要联网的部分通常是告警上报和远程调阅。
量化一定会掉精度吗?
取决于模型结构、位宽和校准数据。视觉检测类模型在 INT8 下精度变化往往在可接受范围内,前提是校准数据贴近真实场景。这个结论需要在自有数据上复测,不能直接照搬。
模型多大才有可能在摄像头上跑起来?
没有统一门槛。更可靠的算法是看计算量而不是参数量,再用几 TOPS 量级的 NPU 去匹配,最后拿目标板实测一遍。
学嵌入式边缘 AI,需要先补哪些基础?
C 语言、Linux 系统编程和计算机体系结构是底座,上面再叠模型部署工具链与 NPU 算子知识。东方瑞通的 AI+嵌入式课程安排了分类、目标检测、文字识别三类推理模型部署实验,以及基于 Face ID 的安防系统项目,硬件与软件的学习比例大致是三成与七成,可以作为学习路径的参考。
嵌入式边缘AI在摄像头里的「瘦身」,本质上是在精度、速度、功耗三者之间找平衡点。先算清约束,再选对手段,最后用板上实测的数据确认,模型才算真正住进了那台小小的设备里。

浙公网安备 33010602011771号