๐ Summary
Ultralytics v8.4.85 focuses on reliability and deployment polish, with important fixes for training out-of-memory recovery, AutoBatch memory estimation, LiteRT INT8 calibration, dataset validation, YOLO-World validation, RT-DETR/CoreML behavior, and edge-device documentation ๐
๐ Key Changes
-
Fixed TaskAlignedAssigner OOM recovery during training ๐ง
The CPU fallback forTaskAlignedAssignernow runs after the failed CUDA traceback is released, preventing the recovery path itself from running out of GPU memory. -
Improved AutoBatch memory estimation ๐ฆ
AutoBatch now better estimates detection loss memory usage, including the large temporary tensors used during assignment and classification loss calculation. This should help choose safer batch sizes for heavy training jobs. -
Improved LiteRT static INT8 calibration ๐ฑ
LiteRT calibration now handles smaller or partial calibration batches by repeating samples to match the traced batch size instead of failing when the dataset does not provide a perfectly sized batch. -
Stricter dataset
ncvalidation โ
Dataset YAML files now validate thatncis an integer or integer-like value. Invalid values such as placeholders or decimals fail early with a clearer error. -
YOLO-World standalone validation fix ๐
Added a dedicatedWorldValidatorsomodel.val()correctly loads dataset class names and regenerates text embeddings when validating YOLO-World models on custom datasets. -
Rectangular training shape fix ๐
Augmentations now respectrect=Truebatch shapes instead of incorrectly falling back to square sizing, improving training consistency for datasets with varied aspect ratios. -
RT-DETR validation and docs cleanup โก
RT-DETR validation transforms were simplified by removing a special stretch path, and docs now clarify thatmax_detcannot make pretrained RT-DETR models return more detections than their decoder query limit. -
CoreML RT-DETR inference improvement ๐
CoreML export metadata now records the model head type, allowing RT-DETR models to useComputeUnit.ALL. This improves RT-DETR CoreML speed and helps preserve FP16 accuracy compared with Neural Engine-only execution. -
CUDA device selection fix ๐ฅ๏ธ
select_device()now preserves the requested CUDA index after CUDA has already been initialized, avoiding confusing device remapping behavior. -
Tracking index bug fix ๐ฏ
ByteTrack now preserves original detection indices for low-confidence detections matched during second association, reducing callback/index mismatches in tracking workflows. -
Better user-facing prediction windows ๐ช
show=Truedisplay windows now auto-scale oversized images on Linux and Windows to avoid cropped previews. -
YOLOE visual prompting verbosity fix ๐
YOLOE visual prompting now respectsverbose=False, preventing unwanted setup logs when users request quiet prediction. -
Dataset name convenience ๐๏ธ
Detection-style validation now supports bare dataset names likecoco8by resolving them tococo8.yamlwhen available. -
Training fails fast when labels are missing ๐จ
Training now raises an error when no labels are found, helping users catch dataset setup issues immediately. Unlabeled validation splits can still warn instead of failing. -
Updated edge deployment documentation ๐
Hailo docs now include a cleaner YOLO11-to-HEF workflow,metadata.yamlhandling, and expanded inference examples for images, videos, webcams, and Raspberry Pi cameras. LiteRT, TFLite, and QNN docs were refreshed with current YOLO26n Android benchmark context. -
Security warning for HTTP console log streaming ๐
ConsoleLoggernow warns when logs are sent to plaintexthttp://destinations, helping users avoid transmitting sensitive console output unencrypted.
๐ฏ Purpose & Impact
-
More stable training on large or dense datasets ๐ช
The OOM recovery and AutoBatch fixes directly target real training failures, making Ultralytics more robust for workloads with many objects, large batches, or high memory pressure. -
Fewer confusing export and deployment failures ๐ฒ
LiteRT calibration is more forgiving, CoreML RT-DETR inference is more accurate and faster, and Hailo deployment docs are clearer about required files and metadata. -
Better validation across model families ๐งช
YOLO-World, RT-DETR, and detection-style datasets now behave more consistently, especially when users validate custom datasets or use simplified dataset names. -
Clearer errors for dataset problems ๐ ๏ธ
Missing labels and invalidncvalues are caught earlier, reducing wasted training time and making configuration issues easier to fix. -
Improved day-to-day usability โจ
Rectangular training, CUDA device selection, tracking callbacks, prediction display windows, and YOLOE quiet mode all receive practical fixes that make common workflows smoother. -
Stronger mobile and edge guidance ๐
Refreshed YOLO26n LiteRT/TFLite/QNN benchmark documentation and expanded Hailo examples help users make better deployment decisions across Android, Raspberry Pi, and Hailo hardware.
What's Changed
- Improve Hailo documentation and add more inference options by @lakshanthad in #24645
- Fix
rect=Truetraining producing square instead of rectangular tensors by @Y-T-G in #25009 - Clarify RT-DETR max_det and query limit by @oaslananka in #24994
- Simplify
RTDETRdataset transforms and remove stretch argument fromv8_transformsby @Laughing-q in #25011 - Clarify square image size requirement in benchmark docs by @oaslananka in #24993
- Add semantic mask boundary quality guidance by @oaslananka in #24976
- Scale window to prevent cropped preview on WIndows by @Y-T-G in #24973
- Add
WorldValidatorfor YOLO-World by @Y-T-G in #24974 - Use CoreML ComputeUnit.ALL for RT-DETR inference by @artest08 in #24999
- Fix verbose bug YOLOE visual prompting by @YoannSME in #24814
- Raise exception when labels are missing by @alhatemmohanad-ui in #24760
- Skip unstable RTDETR CPU train on JetPack 5 by @glenn-jocher in #24945
- Support dataset names without
.yamlextension in train and val by @lakshanthad in #24765 - Fix initialized CUDA device selection by @oaslananka in #24987
- Warn on plaintext HTTP console log streaming destinations by @amanharshx in #25001
- Optimize the index for tracking target feedback by @zhixuwei in #24971
- Update LiteRT and TFLite benchmark docs by @glenn-jocher in #25015
- Fix TAL OOM recovery, AutoBatch loss estimation, LiteRT INT8 calibration, and nc validation by @glenn-jocher in #25016
New Contributors
- @YoannSME made their first contribution in #24814
- @alhatemmohanad-ui made their first contribution in #24760
Full Changelog: v8.4.84...v8.4.85