近接手视觉检测案子,分享点体会。
项目背景: 产线部署了新的视觉工位,常规方案是用工控机做图像采集和推理,连续运行后CPU经常飙到90%+,工控机变烤箱,产线节拍也开始不稳定。
调试过程(弯路): 起初以为是算法没优化好,尝试了TensorRT加速、模型量化等手段,CPU占用率只降了10%左右,推理延迟仍然难以满足100fps的产线节拍。后来意识到问题本质不是算力不够,是任务架构有问题——数据采集、图像预处理、模型推理、UI刷新全挤在一个核上,互相抢资源导致实时性崩了。
最终方案(解决): 调整架构思路,把任务拆开——一个专门跑采集和预处理,一个专门跑模型推理,一个跑UI和通信,三个任务独立跑互不抢资源。实测数据:CPU占用从90%以上直接降到30-40%,推理延迟从60ms降到20ms以内,24小时压力测试稳定不崩。
用到的是一颗三核M85架构的MCU。核心思路是多核异构+独立分工,适用性比预期广,不限于视觉检测,电机控制、多设备网关场景应该也能用。
大家在做多任务实时系统时遇到过类似的资源争抢问题吗?有没有更好的任务拆分思路?另外,有没有人试过在端侧直接跑轻量级CNN模型做异常初筛而不是全部上传云端?我们最近在测试这种端云协同模式,效果还不错,想交流一下实测经验。