如何在Grafana仪表板上展示YOLO模型的预测结果?
在Grafana图表上叠加YOLO检测边界框的实现方案
整体思路
不用折腾Grafana后端,直接在前端页面搞定:先精准定位图表的位置和内容,运行YOLO模型得出检测结果,最后在页面上把边界框绘制到对应位置即可。
具体步骤
1. 精准捕获Grafana图表元素
别用整页截图,直接定位图表对应的DOM节点:
- 打开Grafana页面按F12,找到图表容器(一般带
panel-container或grafana-panel类名) - 用
document.querySelector('.panel-container')获取元素,再通过getBoundingClientRect()拿到它在页面中的坐标、宽高,实现精准截取图表区域
2. 让YOLO模型在前端运行
把模型部署到浏览器直接推理,不用传图到后端:
- 用Ultralytics将你的YOLO模型导出为ONNX格式,再通过
onnxruntime-web库在浏览器加载运行 - 或者直接使用TensorFlow.js版本的YOLO,导入模型文件即可在前端执行推理
- 将捕获到的图表转成Canvas图像,作为模型输入得到检测结果
3. 在页面上绘制边界框
把YOLO输出的坐标转换成页面实际位置,再可视化:
- 创建绝对定位的
div元素,设置边框(比如红色2px实线)、半透明背景,加上类别标签,放到图表容器的对应位置 - 如果图表是Canvas渲染的,也可以直接在Canvas上绘制,但要注意Grafana刷新图表时会清空Canvas,需监听刷新事件重新绘制
4. 集成到Grafana的几种方式
- 自定义面板插件:开发Grafana面板插件,将上述逻辑封装进去,直接作为独立面板嵌入仪表板,这是最规范的方式
- 油猴脚本:编写Tampermonkey脚本,Grafana页面加载完成后自动执行捕获、推理、绘制逻辑,适合快速测试
- 脚本化面板:利用Grafana的Scripted Panel功能,在面板内编写自定义JS代码实现功能
关键注意事项
- 前端推理性能:优先选择轻量化YOLO模型(如YOLOv8n),若性能不足可将推理逻辑放到后端API,前端仅负责传图、拿结果、画框
- 坐标转换:YOLO输出的是图像相对坐标,需结合图表元素的位置计算转换成页面绝对坐标
- 图表刷新:Grafana会自动刷新图表,要监听
panel-refresh事件,每次刷新后重新执行检测和绘制
内容的提问来源于stack exchange,提问作者The Governor
相关产品推荐
相关产品推荐

