π Summary
π Ultralytics v8.4.83 is led by a major export upgrade: the new Google LiteRT format now replaces the older separate TFLite and TF.js export paths, while several reliability and performance fixes make training, segmentation, and deployment more stable.
π Key Changes
-
π New LiteRT export replaces legacy TFLite and TF.js workflows
- Added a new
format="litert"export option. - LiteRT becomes the unified path for mobile, edge, embedded, and browser deployment.
- Legacy
tfliteandtfjsnames still work, but now show deprecation warnings and redirect to LiteRT. - Added a dedicated LiteRT backend so exported
.tflitemodels can be loaded for predict and val inside Ultralytics.
- Added a new
-
π± Broader on-device deployment support
- LiteRT uses Googleβs newer runtime direction for
.tflitemodels. - Supports multiple quantization modes, including:
- standard INT8
- mixed INT8 + 16-bit activations
- dynamic INT8 without calibration data
- This makes exports more flexible for mobile and edge hardware.
- LiteRT uses Googleβs newer runtime direction for
-
π Browser deployment is simplified
- Instead of needing a separate TF.js export, browser use is now handled through LiteRT.js with the same
.tflitemodel. - This reduces duplication and makes web deployment easier to understand.
- Instead of needing a separate TF.js export, browser use is now handled through LiteRT.js with the same
-
π§ Segmentation memory use and speed improved
- Segmentation mask post-processing was optimized to reduce peak memory use and speed up execution.
- This helps avoid out-of-memory failures on large images or high-object-count scenes.
-
π‘οΈ Training checkpoint reliability improved
- Fixed a long-standing issue where a bad EMA state could prevent any checkpoint from being saved.
- Training runs are now less likely to fail at the finish line because of temporary numerical issues.
-
β‘ Mixed-precision attention made safer
- Attention computations were reordered to reduce FP16 overflow risk.
- This helps prevent
inf/nanproblems during AMP or half-precision training.
-
π§Ή Multi-dataset and dataloader memory/file-handle fixes
- MultiTrainer now avoids retaining large trainer objects unnecessarily.
- DataLoader reset now properly shuts down old workers, preventing βtoo many open filesβ errors in long runs.
-
π― Classification INT8 calibration improved
- Classification exports now use a classification-specific dataset pipeline for INT8 calibration rather than detection-style loading.
- This should produce more correct and robust classification quantized exports.
-
β Better dataset validation
- Segment tasks now fail early if users accidentally provide box-only labels instead of segmentation labels.
- This prevents confusing downstream errors later in validation or training.
-
π YOLO-World distributed training fix
- Class setup is now applied on all DDP ranks, improving consistency in multi-GPU training.
π― Purpose & Impact
-
For mobile, edge, and web developers π¦
LiteRT is the biggest change in this release. It simplifies deployment by replacing two older export formats with one modern, unified export flow. That means less confusion, fewer export branches, and a cleaner path from training to deployment. -
For teams shipping browser apps π
You no longer need to think of browser support as a separate TF.js pipeline. A single LiteRT.tflitemodel can now cover both on-device and web use cases more cleanly. -
For users exporting quantized models βοΈ
The added LiteRT quantization options offer more choices for balancing size, speed, and accuracy, especially on constrained hardware. -
For training stability π οΈ
Several fixes reduce frustrating failures:- fewer broken checkpoints
- fewer FP16 numerical issues
- fewer leaked workers and file descriptors
- more reliable multi-dataset training
-
For segmentation users π
Lower memory usage and faster mask processing can make segmentation inference more practical on larger inputs and reduce OOM crashes. -
For dataset preparation π§Ύ
Earlier validation catches common mistakes sooner, which saves debugging time and prevents invalid runs. -
Overall impact β¨
This release is especially valuable for anyone deploying YOLO26 to mobile, embedded, edge, or browser environments, while also improving everyday robustness for training and segmentation workloads.
What's Changed
- Linkify PR numbers in publish Slack notifications by @glenn-jocher in #24966
- Use ClassificationDataset for classify INT8 export calibration by @onuralpszr in #24972
- Add Trendshift badge to README files by @onuralpszr in #24979
- Set YOLO-World eval classes on all DDP ranks by @Y-T-G in #24980
- Fix MultiTrainer memory retention by @glenn-jocher in #24977
- Fix sticky-NaN EMA checkpoint loss and legacy safe-load rejection by @glenn-jocher in #24986
- Reduce segmentation mask memory and speed (chunked upsample + separable crop_mask) by @glenn-jocher in #24988
- Pre-scale attention query to prevent fp16 overflow by @fcakyon in #24990
- Shut down stale DataLoader workers on reset by @fcakyon in #24989
- Reject box-only labels for segment datasets by @glenn-jocher in #24992
- Add C++ inference guidance to export docs by @oaslananka in #24982
- Add tracker state guidance to tracking docs by @oaslananka in #24984
- Guard fuse_deconv_and_bn against non-BatchNorm bn by @fcakyon in #24991
- New Google LiteRT export replaces legacy TFLite and TF.js by @ambitious-octopus in #22870
New Contributors
- @oaslananka made their first contribution in #24982
Full Changelog: v8.4.82...v8.4.83