080、边缘设备视频分析落地?模型裁剪、NCNN/MNN 推理与功耗优化一、一个让我熬夜三天的bug去年做某安防项目的边缘盒子,海思3559A方案,跑一个轻量级的人脸检测模型。模型在PC上推理精度0.92,量化后0.89,看着还行。结果一上板子,视频流一跑起来,CPU占用直接飙到85%,功耗冲到12W,盒子烫得能煎鸡蛋。更离谱的是,跑了20分钟,系统自动降频,帧率从25fps掉到8fps,检测框开始乱跳。排查了三天,最后发现三个问题:模型裁剪时只砍了通道数没动头部结构,导致NCNN推理时内存访问不连续;量化时用了对称量化但激活值分布严重偏斜,精度损失被放大;最坑的是,我忘了关CPU的调试串口打印,每帧都往uart写log,硬生生吃掉5%的CPU。这个案例说明,边缘设备视频分析落地,不是把模型塞进去就完事。你得从模型结构、推理引擎、硬件特性三个维度同时下手,任何一个环节出问题,整个系统就崩。二、模型裁剪:别只盯着FLOPs很多人做模型裁剪,喜欢用FLOPs下降比例来评估效果。但边缘设备上,FLOPs和实际推理速度往往不成正比。我踩过的坑是:用通道剪枝把MobileNetV2的倒残差结构砍掉30%通道,FLOPs降了40%,但NCNN上推理速度只快了15%。为什么?因为倒残差结构的depthwise卷积在ARM上内存访问模式很差,剪枝后通道数变成非8的倍数,NEON指令集没法对齐,反而多了很多padding操作。正确的做法是:先分析目标芯片的硬件特性。比如海
080、边缘设备视频分析落地?模型裁剪、NCNN/MNN 推理与功耗优化
080、边缘设备视频分析落地?模型裁剪、NCNN/MNN 推理与功耗优化一、一个让我熬夜三天的bug去年做某安防项目的边缘盒子,海思3559A方案,跑一个轻量级的人脸检测模型。模型在PC上推理精度0.92,量化后0.89,看着还行。结果一上板子,视频流一跑起来,CPU占用直接飙到85%,功耗冲到12W,盒子烫得能煎鸡蛋。更离谱的是,跑了20分钟,系统自动降频,帧率从25fps掉到8fps,检测框开始乱跳。排查了三天,最后发现三个问题:模型裁剪时只砍了通道数没动头部结构,导致NCNN推理时内存访问不连续;量化时用了对称量化但激活值分布严重偏斜,精度损失被放大;最坑的是,我忘了关CPU的调试串口打印,每帧都往uart写log,硬生生吃掉5%的CPU。这个案例说明,边缘设备视频分析落地,不是把模型塞进去就完事。你得从模型结构、推理引擎、硬件特性三个维度同时下手,任何一个环节出问题,整个系统就崩。二、模型裁剪:别只盯着FLOPs很多人做模型裁剪,喜欢用FLOPs下降比例来评估效果。但边缘设备上,FLOPs和实际推理速度往往不成正比。我踩过的坑是:用通道剪枝把MobileNetV2的倒残差结构砍掉30%通道,FLOPs降了40%,但NCNN上推理速度只快了15%。为什么?因为倒残差结构的depthwise卷积在ARM上内存访问模式很差,剪枝后通道数变成非8的倍数,NEON指令集没法对齐,反而多了很多padding操作。正确的做法是:先分析目标芯片的硬件特性。比如海