For now, only YOLO compatible models are expected to work.
To run the server, put your YOLO converted model into assets
directory as best1.onnx
.
To start the server run cargo run --release --bin server -- --model-version 1
.
By default, port 3000 will be used.
On Windows it may be necessary to download ffmpeg and set a new environment variable:
FFMPEG_DIR=D:\ffmpeg-6.0-full_build-shared
For Linux check out the Dockerfile for required dependencies.
Make a GET request to /infer
endpoint with a URL to the image, for example:
http://localhost:3000/infer?url=https://raw.githubusercontent.com/ultralytics/yolov5/master/data/images/bus.jpg
The response should be similar to this:
{
"boxes": [
{
"frame": 0,
"x": 0.27407408,
"y": 0.38055557,
"width": 0.14938271,
"height": 0.41944444,
"class_id": 0,
"class_name": "person",
"confidence": 0.59907085
},
{
"frame": 0,
"x": 0.82345676,
"y": 0.37685186,
"width": 0.17530864,
"height": 0.44166666,
"class_id": 0,
"class_name": "person",
"confidence": 0.7044057
},
{
"frame": 0,
"x": 0.0,
"y": 0.51111114,
"width": 0.096296296,
"height": 0.29722223,
"class_id": 0,
"class_name": "person",
"confidence": 0.7286054
},
{
"frame": 0,
"x": 0.016049383,
"y": 0.21666667,
"width": 0.95679015,
"height": 0.4648148,
"class_id": 5,
"class_name": "bus",
"confidence": 0.60946923
},
{
"frame": 0,
"x": 0.062962964,
"y": 0.37037036,
"width": 0.24197531,
"height": 0.46666667,
"class_id": 0,
"class_name": "person",
"confidence": 0.679659
}
],
"model_version": 1,
"error": null
}
There is also a /draw
endpoint that will return the original image with drawn additional boxes that represent detected objects:
http://localhost:3000/draw?labels=true&url=https://raw.githubusercontent.com/ultralytics/yolov5/master/data/images/bus.jpg