Ultralytics v8.4.15 is out! 


Ultralytics v8.4.15 makes real-world image ingestion smoother (hello HEIC/HEIF + .heif with lazy decoding + improved EXIF handling) and ships important fixes for metrics correctness, exports, CI reliability, and docs. If you work with phone photos, multilingual labels, or edge exports, this oneโs a practical upgrade ![]()
![]()
![]()
You can see the full release details in the Ultralytics v8.4.15 release page and the v8.4.15 full changelog comparison.
New Features (Highlights)
HEIC/HEIF image support (priority)
- Adds
ultralytics.utils.patches.image_openand monkey-patchesPIL.Image.opento enable HEIC/HEIF decoding only when needed viapi-heif(lazy fallback on first decode failure)
- Expands supported extensions to include
.heif
(alongside .heic) - Removes HEIC-specific dataset loader code in favor of a unified image reading pathway

Results.save() usability improvement
- Adds
create_dir(defaultTrue) to control automatic parent directory creation when saving outputs
Better plotting for nonโLatin text
- Improves matplotlib font defaults (prioritizes Arial Unicode MS) and auto-registers
.ttffonts from the Ultralytics user config directory for stronger multilingual rendering

Important Fixes
Metrics correctness (SciPy matching)
- Fixes SciPy-based matching (
match_predictions) to maximize IoU during assignment (previous behavior could select worst matches), affecting TP/FP assignment and mAP whenuse_scipy=True
EXIF auto-rotation for list sources
- Applies
ImageOps.exif_transpose()when loading from lists of paths/URLs, reducing sideways/rotated phone photo issues

Export & Edge Updates (IMX / IMX500)
- Enables IMX export on Linux ARM64 (removes ARM64 block), improves dependency support and test gating
- Adds segmentation as a supported IMX export/benchmark task
- Logs ExecuTorch version during export for improved traceability
Dev / CI Reliability
- Adds PyTorch 2.8 / 2.9 tests to slow CI
- Makes export tests less flaky by skipping TFLite export tests unless
torch>=1.13on Linux
- CI maintenance + workflow reliability improvements:
Docs & Guides (and YOLO26 momentum)
- Custom trainer docs + refinements:
- YOLO26 vs YOLO11 Raspberry Pi 5 charts added

- PR: Add YOLO26 vs YOLO11 performance charts for Raspberry Pi 5 by @lakshanthad
- If youโre starting fresh, Ultralytics YOLO recommends YOLO26 for new projects (smaller, faster, more accurate, end-to-end across all tasks). You can read more in the YOLO26 model docs.
- Platform documentation updates (annotation โ training โ deployment):
- Update platform docs and Update Platform docs by @glenn-jocher
- Platform Docs screenshots by @sergiuwaxmann
- Update platform API docs and Platform Rate Limit docs by @glenn-jocher
- Explore workflows in the Ultralytics Platform docs or jump straight into the Ultralytics Platform for annotation, training, deployment, and monitoring.
- Additional docs cleanups and fixes:
- Fix typos and grammar errors in documentation by @him2him2
- Fix broken YOLO26 documentation link in vision-eye guide by @raimbekovm
- Fix docstrings and Delete orphan markdown files in
build_reference.pyby @glenn-jocher - Fix uv conflicts between export and solutions extras by @fcakyon
- Fix: get the correct package name for
metadata.distributionby @Laughing-q - docs:
fix conda badge link in CI documentation by @onuralpszr - docs:
remove unneeded tokenizer_ve documentation file by @onuralpszr - docs:
remove non-existed dataset generation section from COCO12-Formats documentation by @onuralpszr - Add YOLOE agnostic_nms default behavior note and Document CUDA OOM auto-retry in batch-size settings by @raimbekovm
- New doc videos added
Quick upgrade
pip install -U ultralytics
Minimal sanity check:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.predict("image.heic")
New Contributors
Welcome and thank you!
- @him2him2 โ first contribution via PR #23617
- @banica-ultralytics โ first contribution via PR #23690
Feedback wanted
Try v8.4.15 in your real pipelines (especially with HEIC/HEIF libraries, mixed phone imagery, multilingual plots, or use_scipy=True validation) and share results/issues in the repo. Your feedback helps keep Ultralytics YOLO solid for everyone in the community ![]()
![]()