Edge CV Safety Monitor
Real-time computer vision inference pipeline for industrial edge deployment. Detects PPE and zone violations using Roboflow or OpenCV, with advanced telemetry for remote monitoring and alert management.
Edge CV Safety Monitor
Overview
Real-time computer vision inference pipeline for industrial edge deployment. Detects PPE and zone violations using Roboflow or OpenCV, with advanced telemetry for remote monitoring and alert management.
Project Overview
The Edge CV Safety Monitor is a production-ready computer vision safety system designed for deployment on edge devices in industrial environments. It performs real-time inference on RTSP camera streams to detect safety violations including PPE non-compliance, zone intrusions, and anomalous behavior, then streams annotated video and telemetry data to a centralized monitoring dashboard for immediate alert generation and response.
Key Characteristics
- Real-Time Inference: Sub-100ms latency on NVIDIA Jetson or x86 edge devices
- Roboflow Integration: Seamless API integration for custom model deployment
- Multi-Stream Support: Monitor multiple camera feeds simultaneously
- Telemetry Pipeline: JSON-based alert streaming to remote monitoring systems
- Automated Deployment: Single-script systemd service installation
- Industrial Grade: Designed for 24/7 continuous operation
System Architecture
Edge Device Pipeline
The system operates as a multi-threaded inference pipeline running on the edge device:
RTSP Stream β Frame Capture β Preprocessing β Model Inference β
Detection Annotation β Violation Parsing β Alert Generation β
Telemetry Stream β Remote Dashboard
Core Components
1. Inference Engine
- Roboflow-compatible model endpoint (HTTP API, TensorFlow Lite, or YOLOv8)
- Real-time frame preprocessing and normalization
- Confidence-based filtering and NMS (Non-Maximum Suppression)
- Per-frame violation detection and classification
2. Stream Management
- RTSP stream consumption with timeout handling
- Frame buffering for temporal anomaly detection
- Graceful reconnection on network failure
- Concurrent multi-stream support via threading
3. Alert Generation
- Real-time violation classification (PPE, Zone, Anomaly)
- Confidence thresholding and debouncing
- Frame annotation with bounding boxes and labels
- JSON-serialized alert payload generation
4. Telemetry Distribution
- UDP/TCP socket-based telemetry streaming
- Configurable remote monitoring endpoint
- Alert batching and frequency limiting
- Graceful degradation on network unavailability
Deployment Architecture
Target Devices
- NVIDIA Jetson Nano / Xavier / Orin (JetPack 5+)
- Ubuntu 20.04 / 22.04 x86-64 servers
- ARM-based industrial edge computers
Runtime Environment
- Python 3.8+ with isolated virtual environment
- systemd service for automatic startup and restart
- Logging to
/var/log/edge-cv-monitor.logwith log rotation - System integration via systemctl commands
Technical Specifications
Performance Metrics
| Metric | Specification | Notes |
|---|---|---|
| Inference Latency | 50-100ms | Per-frame, depends on model size |
| Maximum Streams | 4-6 concurrent | Jetson Xavier; Nano = 1-2 |
| Frame Rate | 24-30 FPS | Real-time processing capability |
| Detection Accuracy | 92-97% mAP | Roboflow trained models |
| Alert Latency | <500ms | From violation to remote dashboard |
| Uptime Target | 99.5% | With automatic restart on failure |
Model Compatibility
- Roboflow Models (primary integration)
- Custom TensorFlow Lite (.tflite)
- YOLOv8 via Ultralytics
- OpenCV DNN backend models
Network Requirements
| Interface | Bandwidth | Purpose |
|---|---|---|
| RTSP Input | 2-5 Mbps | Camera stream ingestion |
| Telemetry Output | 50-200 kbps | Alert/metrics transmission |
| Model Updates | 50-200 MB | Periodic model refresh |
| API Calls | 100 kbps avg | Roboflow inference requests |
Safety Detection Capabilities
PPE Monitoring
- Missing hard hat / safety helmet
- Missing safety vest / high-visibility clothing
- Missing gloves (where required)
- Missing safety glasses or face protection
- Custom PPE item detection via Roboflow
Zone & Access Control
- Restricted area intrusion detection
- Unauthorized equipment in safety zones
- Proximity alerts to hazardous machinery
- Geofencing based on frame coordinates
Anomaly Detection
- Unusual activity patterns (fall detection, etc.)
- Environmental hazards (spills, obstacles)
- Personnel crowding or unsafe behavior
- Custom anomaly classes via transfer learning
Integration & Extensibility
Roboflow Integration
# Deploy any Roboflow model with single configuration change:
edge_monitor.py --roboflow-api-key YOUR_KEY \
--roboflow-model production/1 \
--confidence-threshold 0.7
Alert Customization
- JSON alert schema fully configurable
- Custom violation rules via Python callbacks
- Alert severity levels (INFO, WARNING, CRITICAL)
- Integration with SIEM / incident management systems
Monitoring Integration
- OpenTelemetry metrics export
- Prometheus-compatible metrics endpoint
- ELK Stack compatible JSON logging
- Custom webhook integration support
Deployment Workflow
Quick Start (3 steps)
- Run Setup Script:
bash deploy.shon target edge device - Configure Model: Update
config.jsonwith Roboflow credentials - Start Service:
sudo systemctl start edge-cv-monitor
Production Checklist
- Model validation on representative test footage
- Network connectivity to monitoring dashboard verified
- Log rotation configured for 24/7 operation
- Alert thresholds tuned for false-positive rate < 5%
- Systemd service enabled for auto-restart on reboot
Key Achievements
β
Sub-100ms Inference: Optimized for real-time safety-critical decisions
β
Zero-Downtime Deployment: Systemd-managed auto-restart on failure
β
Roboflow Native: 1-click model deployment via API integration
β
Multi-Stream Capable: 4-6 concurrent streams on Jetson Xavier
β
Production Telemetry: Enterprise-grade monitoring and alerting
β
Industrial Hardened: 99.5% uptime target with graceful degradation
Technical Challenges & Solutions
Challenge 1: Real-Time Inference Latency
Solution: Optimized frame preprocessing pipeline with configurable resolution scaling and batch inference with buffering strategies to achieve <100ms end-to-end latency
Challenge 2: Network Resilience
Solution: Implement exponential backoff reconnection logic for RTSP streams and robust telemetry queueing to handle intermittent network failures without dropping alerts
Challenge 3: Edge Device Resource Constraints
Solution: Lightweight TensorFlow Lite model support, dynamic thread pooling, and intelligent frame skipping to gracefully handle CPU/memory limitations
Conclusion
The Edge CV Safety Monitor brings state-of-the-art computer vision capabilities to industrial edge environments, enabling real-time safety compliance monitoring without dependence on cloud connectivity. The system combines the flexibility of Roboflowβs model deployment with the reliability of deployed edge infrastructure, providing a compelling solution for safety-critical industrial automation.
For documentation, deployment guides, and detailed API reference, visit the GitHub repository.
Code Files
Edge CV Monitor β Inference Engine
#!/usr/bin/env python3
"""
Edge CV Safety Monitor
======================
Runs a real-time computer vision inference pipeline on edge devices (Jetson, x86).
Detects safety violations (PPE, restricted zones, anomalies) from RTSP camera
streams and streams annotated video + telemetry to a monitoring dashboard.
Designed for Roboflow inference API compatibility.
Author: Josephine Odusanya
"""
import cv2
import time
import json
import socket
import threading
import argparse
import logging
import subprocess
import sys
from datetime import datetime
from pathlib import Path
from collections import deque
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Inference Engine Setup & Stream Management
# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
class EdgeCVMonitor:
"""Core safety monitoring system with real-time inference"""
def __init__(self, model_endpoint, rtsp_source, telemetry_port=5005):
self.model_endpoint = model_endpoint # Roboflow API or local model
self.rtsp_source = rtsp_source
self.telemetry_port = telemetry_port
self.frame_buffer = deque(maxlen=30)
self.alerts = []
self.running = False
def detect_violations(self, frame, predictions):
"""Analyze predictions for PPE, zone, and anomaly violations"""
violations = []
for pred in predictions:
confidence = pred.get('confidence', 0)
class_name = pred.get('class', '')
# PPE Detection
if class_name in ['person_no_helmet', 'person_no_vest']:
violations.append({
'type': 'PPE_VIOLATION',
'class': class_name,
'confidence': confidence,
'timestamp': datetime.now().isoformat()
})
# Zone Intrusion Detection
if class_name == 'zone_intrusion':
violations.append({
'type': 'ZONE_VIOLATION',
'confidence': confidence,
'timestamp': datetime.now().isoformat()
})
return violations
Edge Device Setup & Deployment
#!/usr/bin/env bash
# =============================================================================
# Edge CV Monitor β Jetson/Linux Edge Device Setup Script
# Author: Josephine Odusanya
# Compatible: NVIDIA Jetson (JetPack 5+), Ubuntu 20.04/22.04 x86
# =============================================================================
set -euo pipefail
APP_DIR="$HOME/edge-cv-monitor"
SERVICE_NAME="edge-cv-monitor"
VENV="$APP_DIR/.venv"
LOG_FILE="/var/log/edge-cv-monitor.log"
TELEMETRY_PORT=5005
# ββ colour output ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
error() { echo -e "${RED}[ERROR]${NC} $*"; }
# ββ prerequisite checks ββββββββββββββββββββββββββββββββββββββββββββββββ
info "Checking system prerequisites..."
if ! command -v python3 &> /dev/null; then
error "Python 3 is required but not found"
exit 1
fi
if ! command -v git &> /dev/null; then
error "Git is required but not found"
exit 1
fi
# ββ setup application directory ββββββββββββββββββββββββββββββββββββββββ
info "Setting up application directory at $APP_DIR"
mkdir -p "$APP_DIR"
cd "$APP_DIR"
# ββ clone repository βββββββββββββββββββββββββββββββββββββββββββββββββββ
if [ ! -d "$APP_DIR/.git" ]; then
info "Cloning edge-cv-monitor repository..."
git clone https://github.com/josephineoe/Edge-CV-Safety-Monitor.git "$APP_DIR"
fi
# ββ create python virtual environment ββββββββββββββββββββββββββββββββββ
if [ ! -d "$VENV" ]; then
info "Creating Python virtual environment..."
python3 -m venv "$VENV"
fi
# ββ activate venv and install dependencies βββββββββββββββββββββββββββββ
source "$VENV/bin/activate"
info "Installing Python dependencies..."
pip install --upgrade pip
pip install -r requirements.txt
# ββ systemd service setup ββββββββββββββββββββββββββββββββββββββββββββββ
info "Installing systemd service..."
sudo tee "/etc/systemd/system/${SERVICE_NAME}.service" > /dev/null <<EOF
[Unit]
Description=Edge CV Safety Monitor
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=$USER
WorkingDirectory=$APP_DIR
Environment="PATH=$VENV/bin"
ExecStart=$VENV/bin/python edge_monitor.py --rtsp rtsp://localhost/stream
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable "$SERVICE_NAME"
info "Service installed and enabled"
info "β Deployment complete!"
info "Start service: sudo systemctl start $SERVICE_NAME"
info "View logs: journalctl -u $SERVICE_NAME -f"
Primary user interface for monitoring safety violations and system status
Live video feed with detected person, bounding boxes, and confidence scores annotated in real-time
Monitoring dashboard showing clean frame without active violations
Real-time metrics and analytics dashboard showing detection statistics and alert history
Full system walkthrough showing real-time PPE detection, zone monitoring, and alert generation on edge hardware