Published July 17, 2026 | Version v8.4.99

Ultralytics YOLO

  • 1. Ultralytics

Description

🌟 Summary

🚀 v8.4.99 adds native Hailo inference support, allowing Ultralytics-exported Hailo models to run directly with predict and val, while also improving training memory usage, platform checkpoint handling, downloads, and compatibility.

📊 Key Changes

  • 🧩 New Hailo inference backend

    • Adds lazy HailoRT support for Ultralytics-exported HEF model directories.
    • Supports YOLOv8, YOLO11, and YOLO26 detection outputs.
    • Automatically converts Hailo NMS results and decodes YOLO26's NMS-free outputs.
    • Enables commands such as:
      from ultralytics import YOLO
      
      model = YOLO("yolo11n_hailo_model")
      results = model.predict("image.jpg")
      
    • Adds Hailo backend documentation and removes outdated warnings and manual post-processing instructions.
    • Requires HailoRT on the target device and the exported directory's metadata.yaml file.
  • 🧠 Lower training memory usage

    • Reduces semantic segmentation target construction memory substantially, with measured temporary usage dropping from about 525 MB to 136 MB.
    • Optimizes dense-dataset target assignment, reducing peak assigner memory from about 1.52 GB to 0.89 GB in the reported test.
    • These changes can make training large or densely annotated datasets, such as Objects365, more practical on GPUs with limited VRAM.
  • ☁️ More reliable Platform checkpoint uploads

    • Successful periodic checkpoint uploads are now recorded by Ultralytics Platform.
    • Uploads remain asynchronous during training, while the final upload continues to wait safely for earlier uploads.
    • Checkpoints are associated with the correct server-issued training run, helping Platform maintain the canonical best.pt.
  • 🔗 Improved download and redirect handling

    • Uses the existing requests dependency for URL checks and downloads.
    • HTTP 308 redirects now work reliably on older Python versions, including Python 3.8–3.10, without adding a custom urllib compatibility layer.
  • 🐍 Better Python 3.13 checkpoint compatibility

    • Restricted checkpoint loading now recognizes both native and stable public pathlib path names.
    • This prevents failures when checkpoints are created under one Python version or operating system and loaded under another.
  • 🛠️ CI and documentation maintenance

    • All workflows now use Ultralytics' shared retried setup-uv action.
    • Dataset license URLs are deduplicated through shared metadata.
    • Corrects LVIS class 666 from manager/through to the accurate manger/trough.
    • Makes exporter output show prediction and validation commands only for formats with supported inference backends.

🎯 Purpose & Impact

  • Hailo users can now use a more familiar Ultralytics workflow for exported edge models instead of manually integrating HailoRT output parsing. This simplifies deployment on Hailo hardware, although HailoRT installation and compatible hardware are still required.
  • YOLO26 deployment is more streamlined, as its one-to-one, NMS-free outputs are decoded automatically by the Hailo backend.
  • GPU training may require less VRAM, particularly for segmentation and dense detection datasets, enabling larger batch sizes or higher-resolution training in some environments.
  • Ultralytics Platform training runs become more dependable, with fewer risks of stale or untracked checkpoint uploads.
  • Downloads and model loading are more cross-version compatible, improving reliability for users on older Python releases and Python 3.13.
  • Overall, this release strengthens deployment, training efficiency, and infrastructure reliability without changing existing model outputs.

What's Changed

  • Fix Hailo post-export guidance by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25245
  • Deduplicate canonical dataset license URLs by @raimbekovm in https://github.com/ultralytics/ultralytics/pull/25249
  • Fix misspelled LVIS class 666 to manger/trough by @Y-T-G in https://github.com/ultralytics/ultralytics/pull/25233
  • Use shared setup-uv action everywhere by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25251
  • Reduce semantic segmentation target memory in v8SegmentationLoss by @Y-T-G in https://github.com/ultralytics/ultralytics/pull/25244
  • Reduce TaskAlignedAssigner peak memory on dense datasets by @Y-T-G in https://github.com/ultralytics/ultralytics/pull/25240
  • Fix HTTP 308 redirect handling in safe_download on Python <=3.10 by @raimbekovm in https://github.com/ultralytics/ultralytics/pull/25252
  • Revert HTTP 308 urllib backport by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25256
  • Fix stale buffer lists in the profile_ops memory-envelope comment by @JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25235
  • Use requests for redirecting downloads by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25257
  • Record successful Platform checkpoint uploads by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25255
  • Fix Python 3.13 pathlib checkpoint loading by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25258
  • Add Hailo inference backend by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25247

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.98...v8.4.99

Notes

If you use this software, please cite it using the metadata from this file.

Files

ultralytics/ultralytics-v8.4.99.zip

Files (3.3 MB)

Name Size Download all
md5:2a16cad48cfadf2e4fcf6d012cfb60a3
3.3 MB Preview Download

Additional details

Related works