Published July 17, 2026
| Version v8.4.99
Software
Open
Ultralytics YOLO
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.yamlfile.
🧠 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
requestsdependency 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
urllibcompatibility layer.
- Uses the existing
🐍 Better Python 3.13 checkpoint compatibility
- Restricted checkpoint loading now recognizes both native and stable public
pathlibpath names. - This prevents failures when checkpoints are created under one Python version or operating system and loaded under another.
- Restricted checkpoint loading now recognizes both native and stable public
🛠️ CI and documentation maintenance
- All workflows now use Ultralytics' shared retried
setup-uvaction. - Dataset license URLs are deduplicated through shared metadata.
- Corrects LVIS class 666 from
manager/throughto the accuratemanger/trough. - Makes exporter output show prediction and validation commands only for formats with supported inference backends.
- All workflows now use Ultralytics' shared retried
🎯 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/troughby @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_opsmemory-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
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
- Is supplement to
- Software: https://github.com/ultralytics/ultralytics/tree/v8.4.99 (URL)
Software
- Repository URL
- https://github.com/ultralytics/ultralytics