Ultralytics v8.4.103 Released
Ultralytics v8.4.103 improves training reliability, validation accuracy, NumPy-backed results, model performance, export safety, Platform workflows, and documentation.
The headline fix ensures warmup finishes on schedule, allowing short training runs to reach their intended learning-rate behavior. ![]()
Upgrade today:
pip install -U ultralytics
Review the official Ultralytics v8.4.103 release for package details.
New Features
Smarter validation sampling and reporting
Validation samples sent to the Ultralytics Platform now span evenly ranked F1 results across the full image distribution, with additional best and worst cohorts. See PR #25300 from @glenn-jocher for details.
Platform REST API documentation now covers supported API-key operations across datasets, models, training, exports, deployments, storage, activity, and workspaces. This was added in PR #25296 by @glenn-jocher.
New Slack alert documentation explains how to receive training, export, and deployment results. Learn more in PR #25301 from @glenn-jocher.
Improvements
Training and model performance
ModelEMAupdates are faster through batched PyTorch_foreach_lerp_operations where supported. See PR #25315 by @raimbekovm.- Final effective training batches now receive additional validation, including after batch-size changes and out-of-memory recovery. See PR #25322 by @glenn-jocher.
- Image-list prediction sources now follow HTTP 308 redirects on supported Python versions. See PR #25313 by @raimbekovm.
- Fuzz subprocess sources and signatures were corrected for more reliable testing. See PR #25294 by @glenn-jocher.
Safer exports and deployment
- CoreML compatibility is checked before conversion, allowing unsupported dynamic classification and RT-DETR combinations to fail earlier with clearer feedback. See PR #25323 by @glenn-jocher.
- RKNN export now warns when a requested opset above 19 is automatically reduced. See PR #25303 by @synml.
- Platform On Premise and Docker references now use rolling
latesttags, while Linux GPU guidance recommends CDI--devicereservations. See PR #25295 by @glenn-jocher.
Documentation and workflows
- The YOLO26 documentation now puts inference quickstarts above the fold for faster onboarding. See PR #25312 by @raimbekovm.
- Guides are now grouped by project stage, and YOLOv5 documentation has moved into a clearly labeled legacy section. See PR #25307 by @raimbekovm.
- New contextual navigation repairs forward links throughout the newcomer training path. See PR #25253 by @raimbekovm.
- Broken Tiger-Pose YouTube links have been updated. See PR #25314 by @RizwanMunawar.
- GitHub Actions workflows now use
actions/setup-python@v7. See PR #25311 by @UltralyticsAssistant.
Bug Fixes
Warmup now finishes on schedule
warmup_epochs is now treated as a true epoch count instead of being forced to at least 100 iterations. Warmup is also capped so the final planned epoch uses the regular learning-rate schedule.
For example, a 10-epoch run configured with three warmup epochs now warms up for three epochs rather than potentially remaining in warmup for the entire run. The implementation is covered by PR #25321 from @glenn-jocher.
More trustworthy metrics and tracking
- Confusion matrices now honor the validator’s supplied confidence threshold instead of silently overriding it to
0.25. See PR #25320 by @glenn-jocher. - Segmentation curves, pose curves, and raw confusion-matrix plots are no longer dropped from experiment trackers such as W&B, ClearML, Neptune, and DVC. See PR #25319 by @JESUSROYETH.
Reliable models, masks, and results
- Backbone width scaling is no longer skipped when a layer’s channel count equals
nc, preventing unexpectedly oversized models. See PR #25297 by @JESUSROYETH. Resultsmethods includingplot(),save_txt(),save_crop(),summary(), andverbose()now work with NumPy-backed outputs fromResults.numpy(). See PR #25318 by @JESUSROYETH.- Mask processing now binarizes masks before cropping while preserving output behavior. See PR #25298 by @JESUSROYETH.
- The redundant and unsupported Hailo
opsetargument has been removed. See PR #25305 by @lakshanthad.
Recommended for New Projects
For new projects, we recommend Ultralytics YOLO26, our latest stable model generation across detection, segmentation, classification, pose, and OBB tasks.
For streamlined annotation, training, export, deployment, and monitoring, try the Ultralytics Platform.
Get Started
Upgrade with pip install -U ultralytics, try v8.4.103 on your workflows, and let us know how the improved warmup scheduling, validation reporting, NumPy interoperability, and export checks work for you.
You can review every change in the complete v8.4.102 to v8.4.103 changelog. Thanks to every contributor and the wider YOLO community for helping make this release possible! ![]()