New Release: Ultralytics v8.4.160

:rocket: Ultralytics v8.4.160 is here

Quick overview: This release makes dataset edits less likely to be missed by caches, reduces memory use in SAM3 prompting and TensorRT calibration, and improves training and API reliability. It does not introduce a new model architecture. Read the v8.4.160 release notes for the release overview.

:card_index_dividers: Dataset and validation improvements

  • Edited labels now trigger a cache rescan. Cache keys account for file size and modification time, so an in-place label change can invalidate the cache even when the file length stays the same. This benefits detection, depth, semantic, and other shared-cache users. PR #26283 by @aswanth-07
  • Validation chooses a dataset more clearly. When data is omitted, validation uses the checkpoint’s recorded dataset if available; otherwise, it warns and falls back to the task default. Depth calibration now requires data. PR #26277 by @raimbekovm

Existing dataset caches will rescan once after upgrading. If an edited file retains both its size and modification time, remove the affected cache manually.

:high_voltage: Memory and training reliability

  • SAM3 text prompting uses less peak VRAM by processing prompts in chunks of up to 16. PR #26281 by @Laughing-q
  • TensorRT 11 INT8 calibration uses less host RAM by releasing consumed batch data and normalizing in place, without changing calibration values. PR #26275 by @amanharshx
  • Out-of-memory training retries preserve optimizer and scheduler state when automatically reducing batch size. PR #26284 by @Nikhi00718

:hammer_and_wrench: API fixes and documentation

  • CUDA-backed Results.numpy() now works as expected. PR #26282 by @aswanth-07
  • non_max_suppression() no longer mutates its input predictions. PR #26278 by @Nikhi00718
  • Repeated safe_download calls for single-file ZIP archives are more reliable. PR #26273 by @Nikhi00718
  • save_one_box() better handles list, tuple, and NumPy boxes. PR #26279 by @MohammadHijjawi97
  • img2label_paths() now accepts pathlib.Path inputs. PR #26280 by @MohammadHijjawi97
  • Task guides now give clearer guidance on validation, results, dataset formats, and training options. PR #26271 by @raimbekovm
  • A new video was added to the docs. PR #26274 by @RizwanMunawar

Welcome to first-time contributor @MohammadHijjawi97! :tada:

Give v8.4.160 a try and let us know how it works in your workflows. For every change, see the full changelog.