๐ Summary
Ultralytics v8.4.76 is headlined by a powerful new multi-dataset fine-tuning workflow ๐, making it much easier to train one YOLO model across several datasets in one run, while also improving tracking defaults, segmentation/tracking stability, and docs clarity.
๐ Key Changes
-
๐ Multi-dataset fine-tuning via
MultiTrainer- You can now pass a list or tuple of datasets to
model.train(). - Ultralytics will fine-tune the same base model separately on each dataset in sequence.
- It returns a per-dataset metrics dictionary and saves a cross-dataset results chart.
- This expands the old RF100-specific workflow into a more general tool that works for RF100, custom dataset collections, and broader benchmarking.
- You can now pass a list or tuple of datasets to
-
๐ Better multi-dataset benchmarking outputs
- Training runs are grouped into a shared
multitraindirectory. - Results now include:
- per-dataset metrics
- a summary JSON file
- a bar-chart image comparing results across datasets
- Training runs are grouped into a shared
-
๐ Easier Ultralytics Platform dataset/model loading
- Platform web URLs can now be pasted directly and are automatically converted to
ul://format behind the scenes. - This helps streamline workflows using the Ultralytics Platform ๐
- Platform web URLs can now be pasted directly and are automatically converted to
-
๐ฏ Default tracker changed to
tracktrack.yamlTrackTrackis now the default multi-object tracker instead of BoT-SORT.- Users who rely on default settings may notice different tracking behavior or ID consistency.
-
๐ ๏ธ Segmentation + ReID compatibility fix
- A fix prevents valid segmentation detections from being incorrectly filtered out when native ReID is enabled.
- This improves reliability for advanced tracking workflows.
-
๐ฆ DDP training metrics recovery improved
- Training now better returns metrics in distributed training setups, rather than losing them in some multi-GPU cases.
-
๐ Revert of recent
predict()path-list loading change- A previous change meant to reduce memory issues for large file-path lists was reverted because it introduced breaking behavior for exported models with static batch sizes.
- This restores previous compatibility, especially for ONNX, TensorRT, MNN, and TorchScript export use cases.
-
๐งฉ Solutions improvements
- Added
show_boxesto instance segmentation solutions so users can turn bounding boxes on or off. - Fixed
RegionCounterso counts no longer remain stale on empty frames. - Clarified
regionargument docs to better match actual behavior.
- Added
-
๐ Documentation updates
- Added ADE20K semantic segmentation benchmarks for YOLO26 models.
- Added lightweight COCO16 / COCO32 / COCO64 test subsets to docs.
- Tracking docs now highlight newer trackers like OC-SORT, Deep OC-SORT, FastTracker, and TrackTrack.
- Large docs refresh for SEO, consistency, titles, and clearer guides.
๐ฏ Purpose & Impact
-
For researchers and advanced users ๐งช
- The new multi-dataset training feature is the biggest change in this release.
- It makes it much easier to compare how a single YOLO base model performs across many datasets without building custom scripts.
- This is especially useful for benchmarking, transfer learning, dataset sweeps, and robustness testing.
-
For teams managing many datasets ๐
- You can now automate repeated fine-tuning runs in a cleaner, more reproducible way.
- The saved summary plots and JSON outputs make results easier to review, share, and integrate into reporting pipelines.
-
For tracking users ๐
- The switch to
TrackTrackas the default tracker may improve out-of-the-box tracking quality, but it could also slightly change results in existing workflows that depended on default behavior. - If you want the old default, you can still set
tracker=botsort.yamlexplicitly.
- The switch to
-
For deployment users โ๏ธ
- The revert to the earlier
predict()behavior helps avoid export/runtime issues, particularly when using static-batch exported models. - This favors compatibility and stability over the recent loader behavior change.
- The revert to the earlier
-
For solution users ๐
- Visualization controls are better, and region counting is more accurate frame-to-frame.
- These fixes reduce confusion and improve reliability in real-world video analytics setups.
-
For the broader community ๐
- Many docs were cleaned up and expanded, making Ultralytics features easier to discover and use.
- The added ADE20K benchmarks and smaller COCO subsets are especially helpful for quick testing and semantic segmentation evaluation.
In short: v8.4.76 is mainly about making multi-dataset fine-tuning much more practical and scalable ๐, while also improving default tracking behavior, restoring inference compatibility, and polishing the overall user experience.
What's Changed
- bump ultralytics-inference version to 0.0.22 in documentation by @onuralpszr in #24886
- Add show_boxes argument to instance segmentation solution by @raimbekovm in #24835
- Fix region argument type and default in solutions docs tables by @raimbekovm in #24818
- docs: unified SEO-consistent page titles (โค60, "| Ultralytics" suffix) by @glenn-jocher in #24888
- Fix stale region counts on empty frames in RegionCounter by @raimbekovm in #24819
- Revert "Fix OOM when passing large list of file paths to predict()" by @onuralpszr in #24895
- Use
tracktrackas default tracker by @Laughing-q in #24897 - Bump actions/cache from 5 to 6 in /.github/workflows by @dependabot[bot] in #24909
- docs: add ADE20K semantic segmentation benchmarks by @lmycross in #24901
- Add COCO16/COCO32/COCO64 subset datasets to detect docs table by @glenn-jocher in #24912
- docs: add new tracking tips section for OC-SORT, Deep OC-SORT, FastTracker, and TrackTrack by @onuralpszr in #24908
- Restructure five documentation guides and update descriptions by @raimbekovm in #24913
- Skip empty mask filter if native ReID is enabled by @Y-T-G in #24907
- Correct ParkingManagement arguments in parking management guide FAQ by @raimbekovm in #24905
- Add multi-dataset fine-tuning via MultiTrainer by @glenn-jocher in #24914
Full Changelog: v8.4.75...v8.4.76