Ultralytics v8.4.9 is out!
Quick overview: Ultralytics v8.4.9 improves segmentation CopyPaste augmentation reliability (especially for grayscale / hyperspectral-style single‑channel inputs) and strengthens the broader training/export ecosystem with better ExecuTorch + Torch support ![]()
![]()
If you’re building with Ultralytics YOLO or deploying via the Ultralytics Platform, this release focuses on smoother training runs, fewer augmentation edge-cases, and less deployment friction.
New Features & Highlights
Segmentation CopyPaste augmentation reliability (priority)
A key fix in ultralytics/data/augment.py makes CopyPaste masks more robust by:
- Building the contour mask as a 2D (HĂ—W) array (instead of matching the full image tensor shape)
- Drawing contours onto a single-channel mask using value
1(instead of(1, 1, 1)), avoiding channel mismatches
This helps prevent mask shape/channel bugs that can break—or silently degrade—CopyPaste-based segmentation training, especially on single-channel imagery ![]()
![]()
Improvements
ul://... NDJSON datasets now always refresh
When using Ultralytics-hosted datasets via ul://..., .ndjson metadata now always re-downloads instead of potentially reusing a stale cached file—reducing “why didn’t my dataset update?” confusion ![]()
![]()
ExecuTorch support improvements (Torch 2.10+ friendliness)
- Removes the
<2.10PyTorch upper bound (Windows still excludestorch==2.4.0)
- Centralizes install checks via
check_executorch_requirements()to reduce platform-specific failures
Training + compile coverage
- CUDA tests now train with
compile=True, improving regression coverage - Stride calculation is simplified for more predictable behavior


Docs refresh
Export docs video updated to a more relevant YOLO26 export/deployment tutorial ![]()
(For new projects, YOLO26 is the recommended model generation—smaller, faster, more accurate than YOLO11, and end-to-end across all tasks.)
Bug Fixes
CopyPaste mask handling fixes for single-channel / hyperspectral-style workflows
Better safeguards around compile=Truetraining paths to catch issues earlier
What’s Changed (PRs)
Thanks to the community (and Ultralytics team) for the contributions! ![]()
- Always redownload NDJSON datasets — by @glenn-jocher in PR #23458
- ExecuTorch: support Torch 2.10 + remove
torch<2.10pin — by @onuralpszr in PR #23344 - Add missing type hints to
checks.pyanddist.py— by @ahmet-f-gumustas in PR #23485 - Docs: add updated export video — by @RizwanMunawar in PR #23463
- Fix training with
compile— by @Y-T-G in PR #23479 - Refactor: simplify ExecuTorch requirement checks — by @onuralpszr in PR #23475
- Hyperspectral CopyPaste augmentation improvements — by @Y-T-G in PR #23471
You can review the release details in the v8.4.9 GitHub release notes and browse the full changelog from v8.4.8 → v8.4.9.
Try it now
Update with:
pip install -U ultralytics
Then run a quick sanity check:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.predict("https://ultralytics.com/images/bus.jpg")
Feedback welcome
If you hit any edge cases (especially around segmentation CopyPaste, single-channel inputs, or ExecuTorch exports), please share details—minimal repros help a lot. Your feedback keeps the release quality high for everyone in the YOLO community ![]()
![]()