pypi ultralytics 8.4.49
v8.4.49 - `ultralytics 8.4.49` Fail fast on three common training failure modes (#24478)

3 hours ago

🌟 Summary

Ultralytics v8.4.49 is mainly a stability and usability release πŸ› οΈβ€”it helps training fail earlier with clearer messages, recovers from corrupted cached weights automatically, and includes several quality-of-life fixes across training, metrics, benchmarking, tuning, tracking, and docs.

πŸ“Š Key Changes

  • 🚨 Fail-fast training improvements from PR #24478 by @glenn-jocher:

    • Corrupt cached model files now recover automatically: if a cached .pt weight file is damaged or incomplete, Ultralytics now deletes it and re-downloads it instead of failing repeatedly.
    • Clear error when everything is frozen: if freeze is set too high and no trainable parameters remain, training now stops immediately with a direct, understandable error.
    • Clear error for empty classification splits: if class filtering leaves a train/val split with zero images, users now get a helpful FileNotFoundError naming the empty split.
  • 🧠 Better distributed training behavior with torch.compile from PR #24413 by @Y-T-G:

    • DDP setup was adjusted to improve compatibility and stability, especially for compiled models and edge cases like batches with no labels.
  • πŸ“ˆ Per-image F1 metric fix from PR #24444 by @fcakyon:

    • Images with no ground-truth objects and no predictions are now scored correctly as a perfect result rather than an F1 of 0.
  • πŸ§ͺ Hyperparameter tuning randomness fix from PR #24451 by @raimbekovm:

    • The tuner no longer risks repeating the same mutations in very fast iterations, improving search diversity.
  • πŸ›€οΈ Dataset relative path handling fix from PR #24429 by @auduntorp:

    • Relative paths like ../ are now handled correctly in dataset file lists.
  • βš™οΈ Benchmarking fix from PR #24450 by @Y-T-G:

    • Prevents the data argument from being incorrectly forwarded into export benchmarking flows.
  • 🎯 Tracker API cleanup from PR #24457 by @Laughing-q:

    • Removed the unused frame_rate argument from BYTETracker and BOTSORT, making tracker setup simpler.
  • πŸš€ CI / runner updates from PR #24436 by @glenn-jocher:

    • Updated runner images and improved TensorRT package caching for smoother CI performance.
  • πŸ“š Docs and reference improvements:

    • Added a proper Python API reference landing page, fixed broken links, improved docs formatting, clarified prediction behavior, and polished several guides.

🎯 Purpose & Impact

  • πŸ’Έ Saves GPU time and debugging effort: the biggest win in this release is that common training failures are caught before they waste compute or crash later with confusing PyTorch errors.
  • πŸ” More self-healing behavior: corrupted cached weights no longer create a β€œstuck” failure state across repeated runs.
  • 🧩 Better error messages for real-world dataset issues: users should spend less time guessing whether a problem is caused by freezing too much, bad caches, or empty class-filtered datasets.
  • πŸ€– More reliable advanced training setups: users training with DDP, torch.compile, or hyperparameter evolution should see fewer odd edge-case failures.
  • πŸ“Š More accurate evaluation reporting: the F1 fix makes validation metrics more fair in empty-image cases.
  • πŸ› οΈ Small but practical developer improvements: cleaner tracker initialization, safer benchmarking behavior, and better dataset path handling reduce friction in day-to-day use.
  • πŸ“˜ Smoother docs experience: while not a model update, the documentation cleanup should make navigation and setup easier for everyone.

Overall, v8.4.49 is less about new models and more about making Ultralytics training and evaluation more robust, more predictable, and easier to troubleshoot βœ…

What's Changed

New Contributors

Full Changelog: v8.4.48...v8.4.49

Don't miss a new ultralytics release

NewReleases is sending notifications on new releases.