# Getting Started ## Prerequisites - A **Rust toolchain** (`cargo`, `rustc`). - **`ffmpeg` / `ffprobe`** on `PATH` — video decode shells out to the CLI and pipes raw frames; no native FFmpeg bindings or dev headers are needed. - A GPU with a **WebGPU backend** — Vulkan (Linux/Windows), Metal (macOS), DX12 (Windows), or WebGPU/wasm. On Linux, RADV (Mesa) or AMDVLK works. - For the **masks** stage: an **ONNX** export of a YOLO segmentation model (e.g. `yolo11x-seg.onnx`). The `.pt` is not loadable in Rust: ```bash yolo export model=yolo11x-seg.pt format=onnx imgsz=1280 dynamic=True ``` ## Build Masks are enabled by default, so a plain build is the full pipeline: ```bash cargo build ``` Lighter build without ONNX Runtime (no masks stage): ```bash cargo build --no-default-features ``` Build with the native GUI: ```bash cargo build --features gui ``` ## First run (sanity check) ```bash cargo run -- rig --self-test # 6 check groups; should pass ``` ## First real run ```bash cargo run -- all --project-dir out --video day1.mp4 \ --mask-model yolo11x-seg.onnx --mask-device rocm --mask-imgsz 1280 ``` - `--mask-device rocm` runs YOLO on an AMD GPU (see [GPU](GPU.md)); use `cpu` if you don't have the ROCm/MIGraphX runtime. - The first GPU masks run compiles the model (slow); later runs are fast (see the cache note in [GPU](GPU.md)).