Real-time object detection using Intel OpenVINO runtime. Runs inside Docker for cross-platform support. Supports Intel NCS2 USB stick, Intel integrated GPU, Intel Arc discrete GPU, and any x86_64 CPU.
┌─────────────────────────────────────────────────────┐
│ Host (Aegis-AI) │
│ frame.jpg → /tmp/aegis_detection/ │
│ stdin ──→ ┌──────────────────────────────┐ │
│ │ Docker Container │ │
│ │ detect.py │ │
│ │ ├─ loads OpenVINO IR model │ │
│ │ ├─ reads frame from volume │ │
│ │ └─ runs inference on device │ │
│ stdout ←── │ → JSONL detections │ │
│ └──────────────────────────────┘ │
│ USB ──→ /dev/bus/usb (NCS2) │
│ DRI ──→ /dev/dri (Intel GPU) │
└─────────────────────────────────────────────────────┘
/tmp/aegis_detection/ volumeframe event via stdin JSONL to Docker containerdetect.py reads frame, runs inference via OpenVINOdetections event via stdout JSONLyolo-detection-2026 — Aegis sees no difference# Intel GPU and NCS2 auto-detected via /dev/dri and /dev/bus/usb
# Docker uses --device flags for direct device access
./deploy.sh
# Docker Desktop USB/IP handles NCS2 passthrough
# CPU fallback always available
./deploy.sh
# Docker Desktop 4.35+ with USB/IP support
# Or WSL2 backend with usbipd-win for NCS2
.\deploy.bat
Ships without a pre-compiled model by default. On first run, detect.py will auto-download yolo26n.pt and export to OpenVINO IR format. To pre-export:
# Runs on any platform (unlike Edge TPU compilation)
python scripts/compile_model.py --model yolo26n --size 640 --precision FP16
| Device | Flag | Precision | ~Speed |
|---|---|---|---|
| Intel NCS2 | MYRIAD |
FP16 | ~15ms |
| Intel iGPU | GPU |
FP16/INT8 | ~8ms |
| Intel Arc | GPU |
FP16/INT8 | ~4ms |
| Any CPU | CPU |
FP32/INT8 | ~25ms |
| Auto | AUTO |
Best | Auto |
Same JSONL as yolo-detection-2026:
{"event": "ready", "model": "yolo26n_openvino", "device": "GPU", "format": "openvino_ir", "classes": 80}
{"event": "detections", "frame_id": 42, "camera_id": "front_door", "objects": [{"class": "person", "confidence": 0.85, "bbox": [100, 50, 300, 400]}]}
{"event": "perf_stats", "total_frames": 50, "timings_ms": {"inference": {"avg": 8.1, "p50": 7.9, "p95": 10.2}}}
[x_min, y_min, x_max, y_max] — pixel coordinates (xyxy).
./deploy.sh
The deployer builds the Docker image locally, probes for OpenVINO devices, and sets the runtime command. No packages pulled from external registries beyond Docker base images and pip dependencies.