examples/YOLO-Series-ONNXRuntime-Rust/README.md
This repository provides a Rust demo showcasing key Ultralytics YOLO series tasks such as Classification, Segmentation, Detection, Pose Estimation, and Oriented Bounding Box (OBB) detection using the ONNXRuntime. It supports various YOLO models (YOLOv5 through YOLO11) across multiple computer vision tasks.
Classification, Segmentation, Detection, Pose, and OBB.FP16 and FP32 precision ONNX models.CPU, CUDA, CoreML, and TensorRT.batch, width, and height dimensions for flexible model input.DataLoader component handles images, folders, videos, and real-time video streams.Viewer provides real-time frame visualization and video export functions, similar to OpenCV’s imshow() and imwrite().Annotator facilitates comprehensive result rendering, supporting bounding boxes (HBB), oriented bounding boxes (OBB), polygons, masks, keypoints, and text labels.Option 1: Manual Linking
ORT_DYLIB_PATH environment variable, pointing to the downloaded library file:
# Example path, replace with your actual path
export ORT_DYLIB_PATH=/path/to/onnxruntime/lib/libonnxruntime.so.1.19.0
Option 2: Automatic Download
--features auto flag with Cargo to let the build script handle downloading the library automatically:
cargo run -r --example yolo --features auto
12.x.12.x and NVIDIA TensorRT 10.x. Ensure cuDNN is also correctly installed.To enable viewing video frames and saving video inferences, install the rust-ffmpeg crate's dependencies. Follow the instructions provided here:
https://github.com/zmwangx/rust-ffmpeg/wiki/Notes-on-building#dependencies
Run the examples using Cargo. The -- separates Cargo arguments from the example's arguments.
# Run a custom model (e.g., YOLOv8 detection)
cargo run -r -- --task detect --ver v8 --nc 6 --model path/to/your/model.onnx
# Classify examples
cargo run -r -- --task classify --ver v5 --scale s --width 224 --height 224 --nc 1000 # YOLOv5 Classification
cargo run -r -- --task classify --ver v8 --scale n --width 224 --height 224 --nc 1000 # YOLOv8 Classification
cargo run -r -- --task classify --ver v11 --scale n --width 224 --height 224 --nc 1000 # YOLO11 Classification
# Detect examples
cargo run -r -- --task detect --ver v5 --scale n # YOLOv5 Detection
cargo run -r -- --task detect --ver v6 --scale n # YOLOv6 Detection
cargo run -r -- --task detect --ver v7 --scale t # YOLOv7 Detection
cargo run -r -- --task detect --ver v8 --scale n # YOLOv8 Detection
cargo run -r -- --task detect --ver v9 --scale t # YOLOv9 Detection
cargo run -r -- --task detect --ver v10 --scale n # YOLOv10 Detection
cargo run -r -- --task detect --ver v11 --scale n # YOLO11 Detection
cargo run -r -- --task detect --ver rtdetr --scale l # RT-DETR Detection
# Pose examples
cargo run -r -- --task pose --ver v8 --scale n # YOLOv8-Pose Estimation
cargo run -r -- --task pose --ver v11 --scale n # YOLO11-Pose Estimation
# Segment examples
cargo run -r -- --task segment --ver v5 --scale n # YOLOv5-Segment
cargo run -r -- --task segment --ver v8 --scale n # YOLOv8-Segment
cargo run -r -- --task segment --ver v11 --scale n # YOLO11-Segment
cargo run -r -- --task segment --ver v8 --model path/to/FastSAM-s-dyn-f16.onnx # FastSAM Segmentation
# OBB (Oriented Bounding Box) examples
cargo run -r -- --ver v8 --task obb --scale n --width 1024 --height 1024 --source images/dota.png # YOLOv8-OBB
cargo run -r -- --ver v11 --task obb --scale n --width 1024 --height 1024 --source images/dota.png # YOLO11-OBB
Use cargo run -- --help to see all available options.
For more detailed information and advanced usage, please refer to the usls-yolo example documentation.
Contributions are welcome! If you'd like to improve this demo or add new features, please feel free to submit issues or pull requests on the repository. Your input helps make the Ultralytics ecosystem better for everyone. Check out the Ultralytics Contribution Guide for more details.