vision-rs 0.1.1

A high-performance computer vision SDK for Rust.
# Your First Detection

The `vision_rs::detect` module is the entry point for running inference. It
wraps model-specific configuration and forward passes behind a single
`ObjectDetector`/`DetectorConfig` pair, so callers don't need to touch the
model internals for simple inference.

```rust,no_run
use vision_rs::detect::{DetectorConfig, ObjectDetector, Yolo26DetectorConfig};
use vision_rs::models::yolo::yolo26::Yolo26Variant;

# #[tokio::main]
# async fn main() -> anyhow::Result<()> {
let config = DetectorConfig::Yolo26(Yolo26DetectorConfig::new(
    Yolo26Variant::N,
    "weights/yolo26n.bin",
    vec!["car".into(), "truck".into(), "person".into()],
));

let detector = ObjectDetector::new(config)?;
let image_bytes = std::fs::read("frame.jpg")?;
let detections = detector.detect(&image_bytes).await?;

for d in &detections {
    println!("{} {:.2} {:?}", d.class, d.confidence, d.bbox);
}
# Ok(())
# }
```

## Walking through it

1. **Pick a variant.** `Yolo26Variant` has five sizes — `N` (nano) through
   `XL` — trading accuracy for speed/memory. See
   [The YOLO26 Model]../core-concepts/yolo26-architecture.md for how they
   differ.
2. **Build a config.** `Yolo26DetectorConfig::new` takes the variant, a
   weights file path, and the class label list (must match the model's
   training classes, in class-index order). It fills in sensible defaults:
   `conf_threshold: 0.25`, `nms_iou_threshold: 0.45`, `img_size: 640`. Adjust
   these fields directly on the returned config if your use case needs
   different thresholds.
3. **Construct the detector.** `ObjectDetector::new` takes ownership of the
   config and loads the model.
4. **Run inference.** `detect()` takes raw JPEG or PNG bytes and returns
   every [`Detection`]https://vision-rs.teenygrad.org/api/vision_rs/detect/struct.Detection.html
   that clears `conf_threshold`, after non-maximum suppression. Each
   `Detection` has a `bbox: [cx, cy, w, h]` (normalised to `[0, 1]`), a
   resolved `class` label, and a `confidence` score.

## Getting a model

The `yolo26` example binary (`examples/yolo26.rs`) has a `download`
subcommand for fetching pretrained weights and a dataset config, and a
`bench` subcommand for a throughput/latency smoke test:

```bash
source .env
cargo build --release --example yolo26 --features cuda
./target/release/examples/yolo26 download --dataset assets/datasets/coco128.toml
./target/release/examples/yolo26 bench \
  --model ultralytics/yolo26n \
  --dataset assets/datasets/coco128.toml \
  --skip-map --warmup 10 --runs 100
```

See [Benchmarking & Profiling](../kernels-and-performance/benchmarking.md)
for the full set of `yolo26` subcommands and profiling workflows.