Repository navigation
v0.0.51 - `ultralytics-inference 0.0.51` Stretch depth input to imgsz in native and web for more accurate depth (#555)
🌟 Summary
Release v0.0.51 makes depth estimates much closer to Ultralytics Python results and improves memory use and throughput across inference and result-saving workflows.
📊 Key Changes
- More accurate depth inference: Depth models now stretch inputs to the model’s target size and resize the full depth output back to the original image dimensions. This better matches Ultralytics Python preprocessing.
- Large improvement in Python parity: Mean depth error on the bus and Zidane examples fell from 0.40 m and 0.23 m to 0.006 m and 0.008 m. Similar results were reported on OpenVINO CPU and GPU. RT-DETR detections remain unchanged.
- Faster result saving: Image and video encoding now runs on worker threads, allowing saving to overlap with inference. Use
finishto wait for queued writes and receive write errors. - Lower memory use and faster mask processing: Segmentation mask construction avoids unnecessary full-frame work, while mask overlays and semantic overlays use more efficient row-based or parallel processing.
- More efficient depth visualization: Disparity percentiles are found with histograms instead of copying and partitioning depth values.
- Updated Rust requirement: The minimum supported Rust version is now 1.92; the optional
minifbdependency was also updated.
🎯 Purpose & Impact
- Depth results should be substantially more reliable and consistent with Python, including across native and web inference paths.
- Image and video saving, segmentation postprocessing, and overlays should use resources more efficiently, especially for larger inputs.
- Existing users should note the Rust toolchain requirement increase. The task-list and task-enum reordering is primarily for consistency; it does not change task names or inference results.
What's Changed
- Lower memory use for instance masks and web input frames by @onuralpszr in #531
- List tasks in the canonical Ultralytics order across the docs, CLI help and web package by @onuralpszr in #532
- Declare the Task variants and match the postprocess dispatch in the canonical Ultralytics order by @onuralpszr in #533
- Fix the new Rust 1.99 clippy lints in utils and source by @onuralpszr in #542
- Drop the tests README claim that tests mirror the source layout by @onuralpszr in #541
- List CUDA 13.4 among the toolkits cudarc supports by @onuralpszr in #538
- Show the Windows cargo bin path with single backslashes in the READMEs by @onuralpszr in #534
- Say the annotation font is downloaded on first use instead of embedded by @onuralpszr in #536
- Match the README LiteRT WebGPU speedup to the web package benchmarks by @onuralpszr in #535
- Fix the YOLO.load sentence that said it serves the model to the browser by @onuralpszr in #539
- Say which examples take an image path and which take a model path by @onuralpszr in #540
- Show the imgsz default as plain text like the other CLI defaults by @onuralpszr in #537
- Bump anchore/sbom-action from v0.24.2 to v0.24.3 in /.github/workflows by @UltralyticsAssistant in #543
- Update Rust version and bump minifb dependency to 0.29.0 by @onuralpszr in #544
- Write saved images on worker threads so encoding overlaps inference by @onuralpszr in #545
- Encode saved video frames on a worker thread by @onuralpszr in #546
- Speed up the segmentation mask overlay and blend by @onuralpszr in #547
- Resize only the box rows when building segmentation masks by @onuralpszr in #548
- Blend the semantic mask overlay across cores by @onuralpszr in #549
- Blend the classification box by row slices by @onuralpszr in #550
- Find the depth percentiles from a histogram instead of copying the frame by @onuralpszr in #551
- Use setup-uv defaults for Python and the venv by @glenn-jocher in #552
- cargo zerocopy package updates by @onuralpszr in #553
- Update Rust version requirements and fix minor typos in documentation by @onuralpszr in #554
ultralytics-inference 0.0.51Stretch depth input to imgsz in native and web for more accurate depth by @onuralpszr in #555
Full Changelog: v0.0.50...v0.0.51