案例摘要
北京稳格科技有限公司面向 RK3588 Ubuntu 工控机,交付了一套单路工业视频烟雾监测系统。系统先使用三帧 MobileNetV3-Small ONNX 模型判断画面中是否存在烟雾,再在日间对烟雾颜色进行黑烟、非黑烟或不确定分类;黑烟连续满足确认条件后,通过 MCP2221A GPIO 输出报警电平。
交付内容包括算法模型、Web 控制台、RTSP 视频接入、图片与视频测试、systemd/Nginx 部署、GPIO 联动、安装包、回滚包和验收记录。本案例中的“黑烟”是项目颜色分类标签,不等同于林格曼黑度等级、污染物浓度测量或环保合规判定。
项目背景
客户需要在局域网 RK3588 工控机上接入单路工业摄像机,持续预览视频并判断烟雾状态。现场还要求通过 USB MCP2221A 的 GP0-GP3 引脚输出可配置的高低电平,以便连接 PLC、继电器或声光报警设备。
项目既包含算法问题,也包含视频接入、ARM64 部署、服务自启、Web 配置、错误恢复、输出隔离和客户可复现交付。目标环境为 RK3588、Ubuntu 22.04 ARM64、Nginx、Gunicorn、OpenCV DNN 和 ONNX 推理。
交付范围
| 交付项 | 内容 |
|---|---|
| 烟雾算法 | 三帧 MobileNetV3-Small ONNX 烟雾分类 |
| 颜色判断 | 日间黑烟、非黑烟和颜色不确定分类 |
| 视频接入 | RTSP、HTTP 或本地视频,浏览器端 MJPEG 预览 |
| 控制台 | 视频地址、算法开关、颜色阈值、输出引脚和有效电平配置 |
| 测试入口 | 图片测试、视频测试及可关闭的 MCP2221A 联动 |
| 报警输出 | MCP2221A GP0-GP3 可选,支持高电平或低电平有效 |
| 部署运维 | Nginx、Gunicorn、systemd、udev、健康检查、静态 IP 工具和回滚包 |
| 交付件 | ARM64 程序包、模型、部署脚本、测试、说明和 SHA-256 |
技术架构
处理链路为:工业摄像机或上传媒体 → OpenCV/FFmpeg 解码 → 三帧时序烟雾分类 → 固定机位与异常画面保护 → 日间烟雾颜色判断 → 连续确认 → MCP2221A GPIO 输出 → Web 状态与日志。
RK3588 部署端使用 OpenCV DNN 加载 ONNX,不需要安装 PyTorch。Nginx 对局域网提供 HTTP 服务,Gunicorn 仅监听 127.0.0.1:8000。程序与模型部署在 /opt/smoke-control,持久化配置保存在 /var/lib/smoke-control/config.json,服务由 smoke-control.service 管理并设置为开机自启。
两阶段算法与报警规则
第一阶段以连续三帧为输入判断是否存在烟雾。只有第一阶段输出烟雾,系统才进入第二阶段颜色判断。日间第二阶段输出 black_smoke、非黑烟或颜色不确定;夜间仅保留烟雾判断,颜色输出 unknown_night,不触发黑烟报警。
报警必须同时满足:第一阶段判断为烟雾、第二阶段判断为黑烟、颜色置信度达到页面设置值、连续满足时间达到确认时间。项目基线确认时间为 2 秒。测试入口可与实时输出隔离,也可以在明确开启联动时按设置保持报警电平,测试结束后恢复实时自动控制。
现场问题与工程修复
现场固定机位存在深色桌椅、玻璃反光、静态暗场、纯黑测试图、二值图形、随机噪声黑屏和暗渐变等误报来源。项目依次增加清晰背景保护、结构约束静态画面保护、纯黑与近二值图形保护、实时静态画面门控以及整体极暗异常画面保护。
整体极暗保护的条件为平均灰度不高于 24 且 99 分位灰度不高于 50。对现有 1760 张可读取数据执行反向检查时,新规则命中 0 张;最暗真实黑烟样本的平均灰度为 19.32,但 99 分位灰度为 62,未触发该保护。
另一问题发生在白亮背景黑烟视频。原门限要求整帧深色像素至少占 14%,但客户 37 秒视频中实测占比为 9.03%–11.38%,导致烟雾已检出但颜色判定被跳过。修复后仅在背景灰度 P90 不低于 250 时,将深色像素占比下限调整为 8%,普通暗场不启用这项补偿。
验证结果
以下结果来自 2026-07-26 至 2026-07-29 的内部项目验证记录,适用于对应程序、模型、样本和设备条件。它们证明交付链路和列出的回归项可运行,不代表任意场景的通用准确率。
| 验证项 | 结果与条件 |
|---|---|
| 客户 37 秒视频 | 1024×540、30 FPS、1110 帧,按 0.5 秒抽样 74 帧 |
| 工控机视频结果 | 烟雾 74/74,黑烟候选 73/74,满足模拟报警条件 |
| 视频测试输出边界 | 当次验收为 output_isolated=true,未直接驱动 GPIO |
| v1.9.4 分类回归 | TP 57、FN 8、FP 2、TN 83;相对基线未增加 FP |
| v2.0.3 本地测试 | 70 项通过,另有 18 个子测试通过 |
| 异常暗图回归 | 13 种纯黑、近黑、噪声、渐变、JPEG、PNG 和黑底文字变体判为无烟 |
| 数据反向检查 | 1760 张图片中新规则命中 0 张 |
| 客户设备暗图测试 | 3 张强噪声或暗渐变图在开启联动请求时均未激活输出 |
| 真实黑烟基准 | 烟雾置信度 98.53%,颜色置信度 99.99%,正例保持 |
| 实时终态采样 | 连续 6 次为视频连接、无烟、未报警、GP0 低电平 |
| 部署一致性 | 4 个变更文件 SHA-256 与工控机文件一致,服务为 active/enabled |
项目结果
- 建立从 RTSP 视频接入、ARM64 推理、两阶段判断到 GPIO 输出的完整链路。
- 通过 Web 控制台集中管理视频地址、算法开关、颜色阈值、引脚和有效电平。
- 将图片与视频测试、实时监测和硬件输出边界明确分离,降低测试误动作风险。
- 对固定机位暗场、黑屏、二值图形、随机噪声和白亮背景黑烟增加可回归的保护条件。
- 交付包包含程序、模型、部署脚本、测试、文档、SHA-256 和设备回滚点。
适用场景
- 工业园区、厂区或烟囱固定机位的烟雾监测原型与工程验证。
- RK3588 ARM64 工控机上的边缘视觉推理和局域网控制台。
- 需要将视觉判断结果转换为 PLC、继电器或声光报警输入的项目。
- 需要离线运行、减少原始视频上传云端的单路视频监测场景。
- 需要基于客户现场数据持续调优误报与漏报的定制视觉项目。
交付边界与风险
本系统不是法定排放测量设备,不输出林格曼黑度等级或污染物浓度,也不能替代环保检测、认证或监管结论。颜色判断受摄像机曝光、白平衡、压缩、天气、光照、背景、机位和烟雾距离影响;夜间基线只判断烟雾,不强判黑烟。
MCP2221A 仅提供逻辑电平,不能直接驱动大电流负载。接入 PLC、继电器或声光报警器前,需要按后级设备电压、电流、隔离和失效安全要求增加驱动或光耦,并完成现场电气验收。
Web 控制台基线面向受控局域网。若开放到跨网段或互联网,需要增加身份认证、访问控制、HTTPS、摄像机凭据保护和日志脱敏。正式上线前还需要冻结目标现场验收集,定义 Precision、Recall、误报频次、漏报范围、恢复时间、长稳时长和断电重启等验收标准。
常见问题
系统如何判断黑烟?
系统先用三帧模型判断是否存在烟雾,再在日间对烟雾颜色进行分类。只有烟雾、黑烟、颜色阈值和连续确认时间同时满足时,才进入黑烟报警状态。
夜间能否判断黑烟?
交付基线在夜间只判断是否存在烟雾,颜色输出为 unknown_night,不触发黑烟报警。需要夜间黑烟判断时,应单独采集夜间数据并制定新的验收规则。
该系统是否等同于林格曼黑度监测?
不等同。本案例中的黑烟是视觉颜色分类标签,不输出林格曼级别、颗粒物浓度或法定排放结论。
能否接入现有摄像机和 PLC?
可以评估。需提供 RTSP/HTTP 视频参数、编码、分辨率、帧率、网络条件,以及 PLC 或报警设备的输入电气规格。MCP2221A 输出需要按后级设备要求增加驱动和隔离。
迁移到其他 RK3588 设备是否需要重新验证?
需要。设备系统、OpenCV/FFmpeg 版本、摄像机码流、网络、温度、负载和机位不同,均可能影响视频稳定性和算法结果,应重新执行构建、功能、误报/漏报、输出和长稳验证。
在线咨询
电话咨询
微信咨询
回到顶部