OpenNVR 0.1.10: running an open-source NVR's AI on the Qualcomm Hexagon NPU
Description and use
OpenNVR 0.1.10 leverages the Qualcomm Hexagon NPU to reduce YOLO inference to 8.6 ms and support 16 cameras at 2 fps without frame drops.
Problem
Deploying AI inference for video surveillance on a low‑power, air‑gapped device while maintaining performance.
Outcome
Using the Qualcomm Hexagon NPU, OpenNVR achieves a 19× speed‑up for YOLO inference and supports 16 cameras at 2 fps without frame drops, compared to 4 cameras on CPU.
Workflow
- Clone OpenNVR repo
- Run start.sh with OPENNVR_ACCEL=auto to auto‑detect Qualcomm NPU
- Verify provider used via metrics
- Benchmark with detect_pipeline.bench for latency and provider confirmation
Evidence
Tier-0 detector (YOLO, one frame): CPU, 8 threads 164 ms; Hexagon NPU, fp16 8.6 ms
In the full stack (streams, decode, tracking, the API, all on the same box): CPU 4 cameras at 2 fps, no drops; NPU 16, 0 dropped
Everything goes through ONNX Runtime's QNN execution provider, shipped as a plugin wheel (onnxruntime-qnn). There is no Qualcomm SDK to install on the host.
- Record date: 2026-11-01T19:29:16.909Z