Object detection service written in Rust with Onnx inference engine. Supports Blue Iris and Agent DVR.
Current features:
Feature | Windows x86_64 | Linux x86_64 |
---|---|---|
RT-DETR-V2 ONNX Models | π’ | π’ |
Yolo 5 ONNX Models (including custom) | π’ | π’ |
Run as a service | π’ | β |
Docker image | β | π’ |
CPU Inference | π’ | π’ |
AMD GPU Inference | π’ | β |
Intel GPU Inference | π’ | β |
Nvidia GPU Inference | π’ | β |
Coral TPU Inference | β | β |
powershell -NoProfile -Command "curl 'https://github.com/xnorpx/blue-onyx/releases/latest/download/install_latest_blue_onyx.ps1' -o 'install_latest_blue_onyx.ps1'; Unblock-File '.\install_latest_blue_onyx.ps1'; powershell.exe -ExecutionPolicy Bypass -File '.\install_latest_blue_onyx.ps1'"
Note: You need to run as administrator to register the service and change the install path and command line arguments for your setup.
sc.exe create blue_onyx_service binPath= "$env:USERPROFILE\.blue-onyx\blue_onyx_service.exe --port 32168" start= auto displayname= "Blue Onyx Service"
net start blue_onyx_service
Verify it is working by going to http://127.0.0.1:32168/
(If you don't want to run blue_onyx as a service you can just run blue_onyx.exe)
docker pull ghcr.io/xnorpx/blue_onyx:latest
docker run -d -p 32168:32168 ghcr.io/xnorpx/blue_onyx:latest
- Download latest release
- Unzip
- Run blue_onyx
Blue Onyx automatically downloads and manages models for you:
- Default Model:
rt-detrv2-s.onnx
is used by default - Auto-Download: Models are downloaded automatically on first use
- Multiple Model Types: RT-DETR v2 (general purpose) and YOLO5 (specialized)
# List all available models
blue_onyx --list-models
# Download all models
blue_onyx --download-model-path ./models --download-all-models
# Download only RT-DETR v2 models (recommended for general use)
blue_onyx --download-model-path ./models --download-rt-detr2
# Download only YOLO5 specialized models (IP cameras, delivery detection)
blue_onyx --download-model-path ./models --download-yolo5
Model Type | Models | Use Case | Size |
---|---|---|---|
RT-DETR v2 | rt-detrv2-s/ms/m/l/x | General object detection (80 COCO classes) | 80MB - 400MB |
YOLO5 Specialized | delivery, IPcam-animal, ipcam-bird, etc. | IP cameras, delivery detection | ~25MB each |
# Start with default settings (auto-downloads rt-detrv2-s.onnx)
blue_onyx
# Start with specific model
blue_onyx --model ./models/rt-detrv2-l.onnx
# Start with specialized model for delivery detection
blue_onyx --model ./models/delivery.onnx --object-detection-model-type yolo5
# Custom port and confidence threshold
blue_onyx --port 8080 --confidence_threshold 0.7
# Filter for specific objects only
blue_onyx --object_filter person,car,bicycle
# Force CPU usage (disable GPU)
blue_onyx --force_cpu
# Enable debug logging
blue_onyx --log_level Debug
If you run outside of docker you need to install OpenSSL 3
blue_onyx_benchmark --repeat 100 --save-stats-path .
Device Name,Version,Type,Platform,EndpointProvider,Images,Total [s],Min [ms],Max [ms],Average [ms],FPS
Intel(R) Iris(R) Xe Graphics,0.1.0,GPU,Windows,DML,100,14.3,116.8,168.3,143.2,7.0
blue_onyx_benchmark --repeat 100 --save-stats-path . --force-cpu
Device Name,Version,Type,Platform,EndpointProvider,Images,Total [s],Min [ms],Max [ms],Average [ms],FPS
12th Gen Intel(R) Core(TM) i7-1265U,0.1.0,CPU,Windows,CPU,100,28.2,239.6,398.2,281.5,3.6
blue_onyx
Then run in another terminal to do 100 requests with 100 ms interval:
test_blue_onyx --number-of-requests 100 --interval 100
blue_onyx_benchmark --save-image-path .
# Upload image file
curl -X POST -F "image=@test.jpg" http://localhost:32168/detect
# Detect from URL
curl -X POST -H "Content-Type: application/json" \
-d '{"url": "https://example.com/image.jpg"}' \
http://localhost:32168/detect
Open your browser and go to: http://localhost:32168/
For detailed documentation, visit: Blue Onyx Documentation
- Getting Started - Quick start guide
- Models - Available models and usage
- Configuration - Detailed configuration options
- Windows Installation - Windows setup guide
- Linux Installation - Linux/Docker setup
- FAQ - Common questions and troubleshooting