π Summary
Ultralytics v8.4.84 improves training reliability, OBB stability, RT-DETR benchmarking accuracy, and LiteRT/mobile deployment documentation, with the most important fix ensuring valid training runs still save checkpoints even after transient NaN/Inf events π
π Key Changes
-
More reliable checkpoint saving during training π‘οΈ
Fixed a production issue where training could complete successfully but fail at the end because nobest.ptorlast.ptcheckpoint was saved. This happened when transient NaN/Inf values contaminated the EMA model state. -
Cleaner
imgszvalidation errors π§
Invalid image size strings likeimgsz=640x480now raise a clearValueErrorexplaining the correct formats, instead of exposing a raw Python parsing error. -
Improved OBB training stability for tiny rotated boxes π¦
Added safer handling in rotated bounding box loss calculations by applying a small floor inside probabilistic IoU covariance calculations. This helps prevent loss divergence when training on very small oriented objects. -
Fixed RT-DETR benchmark validation after export π
Exported RT-DETR models are now reloaded with the correctRTDETRwrapper during benchmarking instead ofYOLO, ensuring the proper validator and postprocessing are used. This fixes cases where benchmark mAP incorrectly showed0. -
Axelera YOLO11 segmentation example improvements π₯
Theexamples/YOLO-Axelera-Python/yolo11-seg.pyexample now handles numeric camera sources correctly by mapping them to/dev/video<N>and using the OpenCV backend. Single-image sources also keep the display window open properly. -
LiteRT and mobile deployment docs expanded π±
Documentation now highlights the official Ultralytics YOLO Flutter plugin for running LiteRT.tfliteexports on Android, including real-time camera inference, single-image prediction, GPU acceleration, and YOLO26 task support. -
New LiteRT performance guidance β‘
Added measured Android LiteRT performance tables for YOLO26n models across detection, segmentation, semantic segmentation, classification, pose, and OBB tasks, helping users understand real-world CPU/GPU mobile performance. -
TensorFlow.js and TF SavedModel docs updated π
Deprecated TensorFlow.js export guidance now points to Googleβs official LiteRT.js web runtime documentation, and TF SavedModel docs consistently refer to LiteRT instead of TensorFlow Lite where appropriate. -
Documentation tooling maintenance π§°
Updated the MkDocs Ultralytics plugin requirement to>=0.2.5and added missing GitHub author metadata.
π― Purpose & Impact
-
Fewer failed training jobs β
Users are less likely to lose completed training runs due to checkpoint-saving failures. Even if a temporary numerical issue appears in EMA/model tensors, Ultralytics now sanitizes the saved checkpoint instead of ending with no persistent weights. -
Better user experience for configuration mistakes π¬
Clearerimgszerrors make it easier for both beginners and advanced users to fix incorrect command-line or Python arguments quickly. -
More stable OBB model training π§±
Datasets with tiny rotated objects should train more reliably, reducing the chance of unstable gradients or diverging losses in oriented bounding box workflows. -
Trustworthy RT-DETR benchmark results π―
RT-DETR users should now see meaningful benchmark metrics after export instead of misleading zero-mAP results caused by the wrong validation pipeline. -
Smoother edge and mobile deployment path π²
The LiteRT documentation improvements make it easier to choose the right deployment route for Android, browser, Apple, and Qualcomm NPU targets, especially with YOLO26 as the recommended model family. -
Improved examples and docs reduce friction π
Axelera users get a more practical segmentation demo, while documentation updates help deployment users avoid dead links, outdated terminology, and unclear driver-version issues.
What's Changed
- Fix --source camera handling and single-image display in yolo11-seg example by @tatsuya-toyoda in #24969
- fix: RTDETR benchmark mAP=0 in benchmark by @artest08 in #24998
- Bump MkDocs plugin requirement by @glenn-jocher in #25002
- Fix LiteRT.js documentation link by @glenn-jocher in #25000
- Add mobile-apps notice to LiteRT docs and finish TF SavedModel LiteRT rename by @glenn-jocher in #25004
- Fix sub-stride OBB loss divergence via probiou floor by @lmycross in #25007
- Fix EMA-NaN no-checkpoint loss and unhelpful imgsz error by @glenn-jocher in #25005
New Contributors
- @tatsuya-toyoda made their first contribution in #24969
Full Changelog: v8.4.83...v8.4.84