usls
A Rust library integrated with ONNXRuntime, providing a collection of Computer Vison and Vision-Language models including YOLOv8 (Classification, Segmentation, Detection and Pose Detection), YOLOv9, RTDETR, CLIP, DINOv2, FastSAM, YOLO-World, BLIP, and others. Many execution providers are supported, sunch as CUDA, TensorRT and CoreML.
Supported Models
| Model | Example | CUDA(f32) | CUDA(f16) | TensorRT(f32) | TensorRT(f16) |
|---|---|---|---|---|---|
| YOLOv8-detection | demo | ✅ | ✅ | ✅ | ✅ |
| YOLOv8-pose | demo | ✅ | ✅ | ✅ | ✅ |
| YOLOv8-classification | demo | ✅ | ✅ | ✅ | ✅ |
| YOLOv8-segmentation | demo | ✅ | ✅ | ✅ | ✅ |
| YOLOv8-OBB | TODO | TODO | TODO | TODO | TODO |
| YOLOv9 | demo | ✅ | ✅ | ✅ | ✅ |
| RT-DETR | demo | ✅ | ✅ | ✅ | ✅ |
| FastSAM | demo | ✅ | ✅ | ✅ | ✅ |
| YOLO-World | demo | ✅ | ✅ | ✅ | ✅ |
| DINOv2 | demo | ✅ | ✅ | ✅ | ✅ |
| CLIP | demo | ✅ | ✅ | ✅ visual❌ textual | ✅ visual❌ textual |
| BLIP | demo | ✅ | ✅ | ✅ visual❌ textual | ✅ visual❌ textual |
| OCR(DB, SVTR) | TODO | TODO | TODO | TODO | TODO |
Solution Models
Additionally, this repo also provides some solution models such as pedestrian fall detection, head detection, trash detection, and more.
| Model | Example |
|---|---|
| face-landmark detection | demo |
| head detection | demo |
| fall detection | demo |
| trash detection | demo |
Demo
cargo run -r --example yolov8 # fastsam, yolov9, blip, clip, dinov2, yolo-world...
Integrate into your own project
1. Install ort
check ort guide
- Firstly, download from latest release from ONNXRuntime Releases
- Then linking
export ORT_DYLIB_PATH=/Users/qweasd/Desktop/onnxruntime-osx-arm64-1.17.1/lib/libonnxruntime.1.17.1.dylib
2. Add usls as a dependency to your project's Cargo.toml
cargo add --git https://github.com/jamjamjon/usls
# or
cargo add usls
3. Set Options and build model
let options = default
.with_model
.with_trt // using cuda(0) by default
// when model with dynamic shapes
.with_i00 // dynamic batch
.with_i02 // dynamic height
.with_i03 // dynamic width
.with_confs // person: 0.4, others: 0.15
.with_dry_run
.with_saveout; // save results
let mut model = YOLOnew?;
4. Prepare inputs, and then you're ready to go
- Build
DataLoaderto load images
let dl = default
.with_batch
.load?;
for in dl
- Or simply read one image
let x = try_read?;
let _y = model.run?;
Script: converte ONNX model from float32 to float16
=
=
=