
AI-Powered Warehouse Safety & Attendance
SafeOps PPE Detection
Computer-vision platform that watches every camera feed, tracks PPE compliance, marks attendance with ArcFace, and ships alerts in real time.
Cameras Online
4+
multi-stream inference
PPE Events Filtered
217
spam-free alerts
Attendance Accuracy
99%
ArcFace powered
Latency
< 2s
AWS GPU inference
Overview
SafeOps is a production-ready AI monitoring system for warehouses. It watches multiple live camera feeds, detects PPE violations, manages attendance via ArcFace, and pushes violation packets with annotated evidence to security in real time. Attendance is automatic: first detection marks entry, leaving all cameras for 5 minutes closes the shift.
Stack
ArcFace
Pre-trainedPre-trained facial recognition for employee identification and attendance.
YOLOv8
Custom ModelCustom-trained PPE detection model running on AWS GPU inference endpoints.
ByteTrack
AlgorithmMulti-object tracking to keep IDs stable across frames and camera angles.
ReID
ModelPerson re-identification model for cross-camera tracking and location lookup.
OpenCV
LibraryCore computer-vision operations and spatial math utilities.
PyTorch
FrameworkGPU-accelerated inference for ReID models and embedding generation.
AWS GPU instances running the CV/AI workers
Railway (Next.js frontend, Flask backend, MongoDB Atlas)

Safety Command Center
Monitor camera uptime, new violations, and real-time charts that surface hotspots by location and employee.
python
PPE Detection with YOLOv8
Custom safety classes, confidence tuning, and violation mapping run on every frame.
# Load PPE model once during service boot
try:
if not Path(ppe_model_path).exists():
raise FileNotFoundError(f"PPE model not found: {ppe_model_path}")
self.ppe_model = YOLO(ppe_model_path)
except Exception as exc:
print(f"[ERROR] Failed to load PPE model: {exc}")
raise
# Run detection
ppe_results = self.ppe_model(frame, conf=self.conf_threshold, verbose=False)[0]
for box in ppe_results.boxes:
class_id = int(box.cls[0].item())
class_name = ppe_results.names.get(class_id, f"class_{class_id}")
confidence = float(box.conf[0].item())
bbox = box.xyxy[0].cpu().numpy()
violation_type = self._map_ppe_class_to_violation_type(class_name)
if violation_type != "unknown":
self._record_violation(
violation_type=violation_type,
bbox=bbox,
confidence=confidence,
camera_id=camera_id,
)- Custom YOLOv8 model for helmets, vests, gloves, and boots
- Frame-by-frame violation classification with confidence scoring
- NMS-like filtering to keep the feed clean
Challenges tackled
- Keeping latency low while ingesting multiple high-resolution camera feeds on modest GPU resources
- Maintaining identity persistence across cameras with ReID embeddings and custom track-id logic
- Deploying and supervising several AI models (YOLOv8, ArcFace, ReID) inside one streaming pipeline
- Balancing alert noise with accuracy using multi-layered violation filtering
- Coordinating AWS GPU inference with a Railway-hosted web stack and MongoDB Atlas
Impact
SafeOps is running in production, pushing reliable PPE and attendance insights with high recall. Security teams now focus on the small set of verified violations instead of staring at screens all day.