视觉系统日志与监控:实时帧率、丢帧告警、GPU 利用率可视化
视觉系统日志与监控:实时帧率、丢帧告警、GPU 利用率可视化
让工业视觉系统从“黑盒”走向“透明”
“为什么明明用的是 RTX 4090,检测帧率却只有 5fps?”
“产线半夜突然停机,日志里却找不到任何异常?”
“客户说画面卡顿,但我们本地测试一切正常?”
在工业视觉系统部署后,稳定性和可运维性往往比算法精度更重要。而这一切的前提,是建立一套全面、实时、可告警的监控体系。
本文将手把手教你构建一个轻量级但功能完整的视觉系统监控方案,覆盖实时帧率追踪、丢帧智能告警、GPU 利用率可视化三大核心能力,并附上可直接复用的代码模板。
🔍 一、为什么要专门做视觉系统监控?
很多团队认为:“只要检测结果对就行”。但现实是:
- 帧率不稳定→ 导致与 PLC 通信超时,整条产线停机。
- GPU 显存溢出→ 程序无声崩溃,不良品漏检。
- 数据流阻塞→ UI 卡死,操作员无法干预。
这些问题往往间歇性发生,且无明显错误日志,排查极其困难。
💡真正的专业,体现在对“隐性故障”的提前感知能力上。
📊 二、监控体系三大核心指标
1. 实时帧率(FPS)
- 定义:每秒成功完成“采集→处理→输出”闭环的帧数。
- 关键点:不是相机的理论帧率,而是端到端有效帧率。
- 阈值建议:
- 高速产线(>1m/s):≥25 fps
- 普通检测:≥10 fps
2. 丢帧检测
- 定义:相机成功采集,但因处理不过来而被丢弃的帧。
- 计算方式:
# 伪代码camera_fps=30# 相机设置为30fpsactual_processed_fps=22# 实际处理了22帧drop_rate=(camera_fps-actual_processed_fps)/camera_fps# 丢帧率26.7% - 告警策略:连续 5 秒丢帧率 > 10%,触发告警。
3. GPU 利用率 & 显存
- 为什么重要?
- 利用率长期 < 30%:说明 CPU 或 I/O 是瓶颈,GPU 被浪费。
- 显存使用率 > 90%:随时可能 OOM 崩溃。
- 采集工具:
nvidia-ml-py(Python 库),无需调用nvidia-smi。
🛠️ 三、实战:构建你的监控模块(附代码)
我们将基于 Python + Flask + ECharts,打造一个嵌入式监控模块。
步骤 1:安装依赖
pipinstallflask nvidia-ml-py opencv-python numpy步骤 2:核心监控逻辑 (monitor.py)
# monitor.pyimportpynvmlimporttimeimportjsonimportosfromthreadingimportThread,LockclassVisionMonitor:def__init__(self):self.fps_history=[]self.drop_events=[]self.gpu_data={"util":