π Summary
Ultralytics Inference v0.0.27 focuses on faster browser CPU inference with optional LiteRT WebAssembly multithreading, plus stronger CUDA reliability, cleaner postprocessing, better docs, and release/CI hardening π
π Key Changes
-
LiteRT WASM multithreading for browser inference π§΅
The@ultralytics/yoloweb package now passes an optionalthreadssetting to LiteRT.js and automatically enables WebAssembly multithreading when the page iscrossOriginIsolated. -
Version bump to
0.0.27across Rust and npm packages π¦
Updatedultralytics-inference,ultralytics-inference-web, and@ultralytics/yolopackage versions, along with README and CUDA documentation examples. -
CUDA and TensorRT inference reliability improvements β‘
CUDA/TensorRT compute-stream binding was refactored into shared logic, preserving fail-fast behavior when CUDA preprocessing is active to avoid silent CPU fallback issues. -
New CUDA-focused tests π§ͺ
Added GPU tests for CUDA preprocessing, model loading, inference, and CUDA/CPU parity with YOLO26 ONNX workflows. -
Postprocessing cleanup for boxes and keypoints π―
Detection, segmentation, pose, and YOLO26 end-to-end output handling now reuse shared scaling/clipping helpers for more consistent results and easier maintenance. -
Annotation crash prevention π‘οΈ
Label drawing now safely skips empty or invalid text dimensions, preventing runtime panics caused by zero-width or zero-height annotation labels. -
YOLO26 preprocessing/postprocessing optimizations π¦
Several YOLO26 end-to-end shape helpers are now compile-time friendly, and RGB pixel iteration is more explicit and type-safe. -
Improved build and usage documentation π
Added clearer source-build prerequisites for Linux, macOS, and Windows, updated device option docs to includerocm:0andxnnpack, and refreshed CUDA guidance. -
Web classification docs corrected π
The web README now documentstop5namesin classification probability outputs. -
Release and CI workflow hardening π
Releases are now restricted to themainbranch, and GitHub Actions dependencies were updated with pinned versions for more reproducible automation.
π― Purpose & Impact
-
Faster browser CPU inference where supported π
Browser users running LiteRT-backed.tflitemodels may see significantly better CPU performance, potentially up to about 2x faster in environments that support WebAssembly threads andSharedArrayBuffer. -
No extra setup for supported browsers β
Multithreading is enabled automatically when the web page is properly cross-origin isolated. If not supported, LiteRT continues to run single-threaded, keeping compatibility intact. -
More dependable GPU inference β‘
CUDA and TensorRT users benefit from better-tested GPU paths and safer stream handling, reducing the chance of confusing fallback behavior or crashes. -
More stable visual outputs πΌοΈ
Annotation rendering is more robust, especially for edge cases involving empty labels or problematic fonts. -
More consistent YOLO26 results handling π―
Shared scaling and clipping logic reduces duplicated code and helps keep detection boxes and pose keypoints consistent across model output formats. -
Easier installation from source π οΈ
Clearer system dependency instructions should help new users avoid common Rust build failures on Linux, macOS, and Windows. -
Safer, more predictable releases π
Restricting release automation tomainhelps ensure published crates, npm packages, and GitHub tags come from the official release branch.
What's Changed
- Bump taiki-e/install-action from v2.82.6 to v2.82.7 in /.github/workflows by @UltralyticsAssistant in #279
- Improve coverage accounting for runtime paths by @glenn-jocher in #280
- docs: readme clean up by @onuralpszr in #281
- build(deps): update package versions in Cargo.lock by @onuralpszr in #283
- refactor(postprocess): dedup box and keypoint helpers by @onuralpszr in #282
- fix(annotate): guard label drawing against zero-width rect by @onuralpszr in #284
- Add AGENTS.md agent guidance and fix documentation drift by @glenn-jocher in #287
- Bump taiki-e/install-action from v2.82.7 to v2.82.8 in /.github/workflows by @UltralyticsAssistant in #286
- Restrict release workflow to the main branch by @glenn-jocher in #288
- docs(readme): document build prerequisites for macOS, Linux, and Windows by @onuralpszr in #289
- Bump astral-sh/setup-uv from v8.2.0 to v8.3.0 in /.github/workflows by @UltralyticsAssistant in #290
- build(deps): Bump taiki-e/install-action from 2.82.8 to 2.82.9 in /.github/workflows by @dependabot[bot] in #291
- chore: update dependencies in Cargo.lock and Cargo.toml by @onuralpszr in #292
- Use const fn and as_chunks in pre/postprocessing by @onuralpszr in #296
- refactor CUDA/TensorRT EP stream binding by @onuralpszr in #295
- Add CUDA inference tests by @onuralpszr in #297
- Bump taiki-e/install-action from v2.82.9 to v2.82.10 in /.github/workflows by @UltralyticsAssistant in #298
- Bump astral-sh/setup-uv from v8.3.0 to v8.3.1 in /.github/workflows by @UltralyticsAssistant in #299
- LiteRT wasm multithreading for up to 2x faster CPU inference by @onuralpszr in #300
Full Changelog: v0.0.26...v0.0.27