# New Release: Ultralytics v8.4.103

**URL:** <https://community.ultralytics.com/t/new-release-ultralytics-v8-4-103/2132>\
**Category:** Discussion\
**Tags:** ultralytics-official, releases, announcements\
**Created:** [July 21, 2026, 1:33pm UTC](https://community.ultralytics.com/t/new-release-ultralytics-v8-4-103/2132 "2026-07-21T13:33:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![glenn-jocher](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/glenn-jocher/32/83_2.png) [@glenn-jocher](https://community.ultralytics.com/u/glenn-jocher)\
**Post date:** [July 21, 2026, 1:33pm UTC](https://community.ultralytics.com/t/new-release-ultralytics-v8-4-103/2132/1 "2026-07-21T13:33:32Z")

</div>

# 🚀 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:

```bash
pip install -U ultralytics

```

Review the official [Ultralytics v8.4.103 release](https://github.com/ultralytics/ultralytics/releases/tag/v8.4.103) 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](https://github.com/ultralytics/ultralytics/pull/25300) from [@glenn-jocher](https://github.com/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](https://github.com/ultralytics/ultralytics/pull/25296) by [@glenn-jocher](https://github.com/glenn-jocher).

New Slack alert documentation explains how to receive training, export, and deployment results. Learn more in [PR #25301](https://github.com/ultralytics/ultralytics/pull/25301) from [@glenn-jocher](https://github.com/glenn-jocher).

## ⚡ Improvements

### Training and model performance

- `ModelEMA` updates are faster through batched PyTorch `_foreach_lerp_` operations where supported. See [PR #25315](https://github.com/ultralytics/ultralytics/pull/25315) by [@raimbekovm](https://github.com/raimbekovm).
- Final effective training batches now receive additional validation, including after batch-size changes and out-of-memory recovery. See [PR #25322](https://github.com/ultralytics/ultralytics/pull/25322) by [@glenn-jocher](https://github.com/glenn-jocher).
- Image-list prediction sources now follow HTTP 308 redirects on supported Python versions. See [PR #25313](https://github.com/ultralytics/ultralytics/pull/25313) by [@raimbekovm](https://github.com/raimbekovm).
- Fuzz subprocess sources and signatures were corrected for more reliable testing. See [PR #25294](https://github.com/ultralytics/ultralytics/pull/25294) by [@glenn-jocher](https://github.com/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](https://github.com/ultralytics/ultralytics/pull/25323) by [@glenn-jocher](https://github.com/glenn-jocher).
- RKNN export now warns when a requested opset above 19 is automatically reduced. See [PR #25303](https://github.com/ultralytics/ultralytics/pull/25303) by [@synml](https://github.com/synml).
- Platform On Premise and Docker references now use rolling `latest` tags, while Linux GPU guidance recommends CDI `--device` reservations. See [PR #25295](https://github.com/ultralytics/ultralytics/pull/25295) by [@glenn-jocher](https://github.com/glenn-jocher).

### Documentation and workflows

- The YOLO26 documentation now puts inference quickstarts above the fold for faster onboarding. See [PR #25312](https://github.com/ultralytics/ultralytics/pull/25312) by [@raimbekovm](https://github.com/raimbekovm).
- Guides are now grouped by project stage, and YOLOv5 documentation has moved into a clearly labeled legacy section. See [PR #25307](https://github.com/ultralytics/ultralytics/pull/25307) by [@raimbekovm](https://github.com/raimbekovm).
- New contextual navigation repairs forward links throughout the newcomer training path. See [PR #25253](https://github.com/ultralytics/ultralytics/pull/25253) by [@raimbekovm](https://github.com/raimbekovm).
- Broken Tiger-Pose YouTube links have been updated. See [PR #25314](https://github.com/ultralytics/ultralytics/pull/25314) by [@RizwanMunawar](https://github.com/RizwanMunawar).
- GitHub Actions workflows now use `actions/setup-python@v7`. See [PR #25311](https://github.com/ultralytics/ultralytics/pull/25311) by [@UltralyticsAssistant](https://github.com/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](https://github.com/ultralytics/ultralytics/pull/25321) from [@glenn-jocher](https://github.com/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](https://github.com/ultralytics/ultralytics/pull/25320) by [@glenn-jocher](https://github.com/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](https://github.com/ultralytics/ultralytics/pull/25319) by [@JESUSROYETH](https://github.com/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](https://github.com/ultralytics/ultralytics/pull/25297) by [@JESUSROYETH](https://github.com/JESUSROYETH).
- `Results` methods including `plot()`, `save_txt()`, `save_crop()`, `summary()`, and `verbose()` now work with NumPy-backed outputs from `Results.numpy()`. See [PR #25318](https://github.com/ultralytics/ultralytics/pull/25318) by [@JESUSROYETH](https://github.com/JESUSROYETH).
- Mask processing now binarizes masks before cropping while preserving output behavior. See [PR #25298](https://github.com/ultralytics/ultralytics/pull/25298) by [@JESUSROYETH](https://github.com/JESUSROYETH).
- The redundant and unsupported Hailo `opset` argument has been removed. See [PR #25305](https://github.com/ultralytics/ultralytics/pull/25305) by [@lakshanthad](https://github.com/lakshanthad).

## 🧠 Recommended for New Projects

For new projects, we recommend [Ultralytics YOLO26](https://docs.ultralytics.com/models/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](https://platform.ultralytics.com).

## 🙌 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](https://github.com/ultralytics/ultralytics/compare/v8.4.102...v8.4.103). Thanks to every contributor and the wider YOLO community for helping make this release possible! 🚀
