案例摘要
北京穩格科技有限公司面向 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 版本、攝像機碼流、網路、溫度、負載和機位不同,均可能影響影片穩定性和演算法結果,應重新執行構建、功能、誤報/漏報、輸出和長穩驗證。
線上諮詢
電話諮詢
微信諮詢
回到頂部