Skip to content

v0.0.51 - `ultralytics-inference 0.0.51` Stretch depth input to imgsz in native and web for more accurate depth (#555)

Choose a tag to compare

@github-actions github-actions released this 08 Oct 15:05
· 41 commits to main since this release
5b4522f

🌟 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 finish to 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 minifb dependency 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.51 Stretch depth input to imgsz in native and web for more accurate depth by @onuralpszr in #555

Full Changelog: v0.0.50...v0.0.51