ultralytics v8.4.130

v8.4.130

v8.4.130 - Enable fraction to limit dataset by image counts (#25951)

Added 5
  • fraction parameter now accepts positive integer image counts such as fraction=1000 to train on exactly 1000 images
  • fraction parameter accepts list format [train_count, val_count] to limit training and validation splits independently
  • Count-based dataset subset selection now supported for YOLO, RTDETR, classification, validation, and INT8 calibration workflows
  • Added or corrected license information for MNIST, Global Wheat2020, PASCAL VOC, KITTI, and official depth datasets
  • Explicitly marked Depth8 and SUN RGB-D datasets as having no specified source license
Changed 8
  • fraction parameter now distinguishes between integer 1 meaning one image and float 1.0 meaning the complete split
  • Count-based subsets are selected before images are downloaded for NDJSON and Platform datasets
  • NDJSON records are now selected deterministically to ensure repeated runs use the same images
  • Model.tune() now defaults to AdamW optimizer unless another optimizer is explicitly selected
  • tune_fitness.png now displays overall fitness progression, best result achieved, and initial-versus-best fitness for each dataset
  • Tracking documentation now lists six built-in trackers and documents TrackTrack as the default tracker
  • Tracking documentation expanded to clarify confidence thresholds, low-confidence recovery, custom ReID models, and task-specific behavior for segmentation, pose, and OBB models
  • Export documentation across ONNX, TensorRT, OpenVINO, LiteRT, Hailo, QNN, Rockchip and other formats updated to reflect expanded fraction behavior
Fixed 2
  • Fixed concurrent MongoDB tuner default claims in multi-worker tuning runs
  • Fixed tuning optimizer default to apply hyperparameter changes effectively

From ultralytics

🌟 Summary

Version v8.4.130 makes dataset subset selection far more flexible and efficient, while improving tuning, tracking guidance, and dataset metadata. 🚀

📊 Key Changes
  • Count-based dataset limits 🎯

    • fraction now accepts a positive image count, such as fraction=1000, to train on exactly 1,000 images.
    • Use fraction=[1000, 100] to limit the training and validation splits independently.
    • Existing decimal ratio behavior remains unchanged, so fraction=0.1 still uses 10% of the dataset.
    • Integer 1 means one image, while float 1.0 means the complete split.
    • Supports YOLO, RTDETR, classification, validation, and INT8 calibration workflows.
  • More efficient NDJSON and Platform dataset downloads

    • Count-based subsets are selected before images are downloaded.
    • NDJSON records are selected deterministically, helping repeated runs use the same images.
    • This avoids downloading an entire dataset when only a fixed-size subset is needed.
  • Improved hyperparameter tuning 🧠

    • Model.tune() now defaults to AdamW unless another optimizer is explicitly selected.
    • This ensures tuning parameters such as learning rate and momentum actually affect training instead of being ignored by automatic optimizer selection.
    • MongoDB-based tuning now uses safer atomic coordination, preventing multiple workers from incorrectly claiming the default configuration.
  • Clearer tuning fitness plots 📈

    • tune_fitness.png now shows overall fitness progression, the best result achieved so far, and initial-versus-best fitness for each dataset.
    • The new layout is easier to interpret, especially for multi-dataset tuning runs.
  • Expanded and clarified tracking documentation 🎥

    • Documentation now lists six built-in trackers: TrackTrack, BoT-SORT, ByteTrack, OC-SORT, Deep OC-SORT, and FastTracker.
    • TrackTrack is documented as the default tracker, with optional ReID and camera-motion compensation.
    • Tracking guidance now more clearly explains confidence thresholds, low-confidence recovery, custom ReID models, and task-specific behavior for segmentation, pose, and OBB models.
    • Tracker-specific training is clarified: users train a detection, segmentation, pose, or OBB model, then apply tracking during inference.
  • More complete dataset license metadata 📚

    • Added or corrected license information for MNIST, Global Wheat2020, PASCAL VOC, KITTI, and official depth datasets.
    • Depth8 and SUN RGB-D are now explicitly marked as having no specified source license where applicable.
    • Export documentation across ONNX, TensorRT, OpenVINO, LiteRT, Hailo, QNN, Rockchip, and other formats now reflects the expanded fraction behavior.
🎯 Purpose & Impact
  • Faster experimentation: Quickly train or calibrate on a known number of images without creating duplicate dataset copies.
  • Lower storage and bandwidth usage: Platform NDJSON datasets no longer need to download every image before applying a count-based limit.
  • More reliable tuning: AdamW makes the default tuning search spaces effective, while MongoDB coordination avoids duplicate baseline trials in concurrent runs.
  • Better reproducibility: Deterministic NDJSON subset selection makes repeated experiments more consistent.
  • Improved deployment workflows: Fixed-size calibration subsets are now easier to use across supported export formats, helping reduce INT8 calibration time.
  • Clearer tracking decisions: Users can more easily choose a tracker and understand the trade-offs between speed, ReID, camera-motion compensation, and occlusion handling.
  • No major model architecture changes: This release primarily improves data handling, tuning reliability, tracking usability, and documentation rather than introducing a new model family.
What's Changed

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.129...v8.4.130

View original

Upgraded? How did it go?

Discussion