# New Release: Ultralytics v8.4.15

**URL:** <https://community.ultralytics.com/t/new-release-ultralytics-v8-4-15/1827>\
**Category:** Discussion\
**Tags:** ultralytics-official, releases, announcements\
**Created:** [February 24, 2026, 1:32pm UTC](https://community.ultralytics.com/t/new-release-ultralytics-v8-4-15/1827 "2026-02-24T13:32:06Z")\
**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:** [February 24, 2026, 1:32pm UTC](https://community.ultralytics.com/t/new-release-ultralytics-v8-4-15/1827/1 "2026-02-24T13:32:07Z")

</div>

## 🚀 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](https://github.com/ultralytics/ultralytics/releases/tag/v8.4.15) and the [v8.4.15 full changelog comparison](https://github.com/ultralytics/ultralytics/compare/v8.4.14...v8.4.15).

* * *

## 🌟 New Features (Highlights)

### 🖼 HEIC/HEIF image support (priority)

- Adds `ultralytics.utils.patches.image_open` and **monkey-patches `PIL.Image.open`** to enable HEIC/HEIF decoding **only when needed** via `pi-heif` (lazy fallback on first decode failure) ⏱
  - PR: [`ultralytics 8.4.15` HEIC/HEIF image support](https://github.com/ultralytics/ultralytics/pull/23714) by [@glenn-jocher](https://github.com/glenn-jocher)

- 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` (default `True`) to control automatic parent directory creation when saving outputs 📁
  - PR: [feat: improve `Results.save()` with pathlib and optional directory creation](https://github.com/ultralytics/ultralytics/pull/23592) by [@ShuaiLYU](https://github.com/ShuaiLYU)
  - Docs: [Document Results.save() automatic directory creation](https://github.com/ultralytics/ultralytics/pull/23709) by [@raimbekovm](https://github.com/raimbekovm)

### 🈶 Better plotting for non‑Latin text

- Improves matplotlib font defaults (prioritizes **Arial Unicode MS** ) and auto-registers `.ttf` fonts 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 when `use_scipy=True`** 🎯
  - PR: [Fix scipy matching in `match_predictions` to maximize IoU](https://github.com/ultralytics/ultralytics/pull/23634) by [@Mr-Neutr0n](https://github.com/Mr-Neutr0n)

### 🔄 EXIF auto-rotation for list sources

- Applies `ImageOps.exif_transpose()` when loading from **lists of paths/URLs** , reducing sideways/rotated phone photo issues 📱➡🖥
  - PR: [Apply EXIF transpose when list of paths is used as source](https://github.com/ultralytics/ultralytics/pull/23631) by [@Y-T-G](https://github.com/Y-T-G)

* * *

## 📦 Export & Edge Updates (IMX / IMX500)

- Enables **IMX export on Linux ARM64** (removes ARM64 block), improves dependency support and test gating 🤖
  - PR: [Enable IMX export for ARM64](https://github.com/ultralytics/ultralytics/pull/23636) by [@lakshanthad](https://github.com/lakshanthad)

- Adds **segmentation** as a supported IMX export/benchmark task ✅
  - PR: [Enable segmentation models in IMX benchmarks](https://github.com/ultralytics/ultralytics/pull/23635) by [@lakshanthad](https://github.com/lakshanthad)

- Logs **ExecuTorch version** during export for improved traceability 🧾
  - PR: [fix: 🐞 add ExecuTorch version during model export into logging](https://github.com/ultralytics/ultralytics/pull/23620) by [@onuralpszr](https://github.com/onuralpszr)

* * *

## 🧪 Dev / CI Reliability

- Adds PyTorch **2.8 / 2.9** tests to slow CI 🏗
  - PR: [Add PyTorch 2.8 and 2.9 tests to slow CI](https://github.com/ultralytics/ultralytics/pull/23683) by [@Y-T-G](https://github.com/Y-T-G)

- Makes export tests less flaky by skipping TFLite export tests unless `torch>=1.13` on Linux ✅
  - PR: [test: 🧪 Add TFLite export requirement for Torch version 1.13](https://github.com/ultralytics/ultralytics/pull/23618) by [@onuralpszr](https://github.com/onuralpszr)

- CI maintenance + workflow reliability improvements:
  - [ci: 👷 move Conda Builds CI to monitor from conda-forge/ultralytics-feedstock to ultralytics repo](https://github.com/ultralytics/ultralytics/pull/23600) by [@onuralpszr](https://github.com/onuralpszr)
  - [Added max concurrency 16 to link checker workflow for the HTTP/2 error](https://github.com/ultralytics/ultralytics/pull/23690) by [@banica-ultralytics](https://github.com/banica-ultralytics)
  - [Banica ultralytics http2 changes undone](https://github.com/ultralytics/ultralytics/pull/23712) by [@banica-ultralytics](https://github.com/banica-ultralytics)

* * *

## 📚 Docs & Guides (and YOLO26 momentum)

- Custom trainer docs + refinements:
  - [Add guide on customizing the YOLO trainer](https://github.com/ultralytics/ultralytics/pull/23579) by [@raimbekovm](https://github.com/raimbekovm)
  - [Simplify `CustomSaveTrainer` example in custom trainer guide](https://github.com/ultralytics/ultralytics/pull/23668) by [@raimbekovm](https://github.com/raimbekovm)
  - [Add custom trainer guide cross-reference in train.md](https://github.com/ultralytics/ultralytics/pull/23649) by [@raimbekovm](https://github.com/raimbekovm)
  - [docs: 📝 update hyperlink for hyperparameter tuning in custom trainer guide](https://github.com/ultralytics/ultralytics/pull/23644) by [@onuralpszr](https://github.com/onuralpszr)

- YOLO26 vs YOLO11 Raspberry Pi 5 charts added 📊🍓
  - PR: [Add YOLO26 vs YOLO11 performance charts for Raspberry Pi 5](https://github.com/ultralytics/ultralytics/pull/23625) by [@lakshanthad](https://github.com/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](https://docs.ultralytics.com/models/yolo26/).

- Platform documentation updates (annotation → training → deployment):
  - [Update platform docs](https://github.com/ultralytics/ultralytics/pull/23688) and [Update Platform docs](https://github.com/ultralytics/ultralytics/pull/23692) by [@glenn-jocher](https://github.com/glenn-jocher)
  - [Platform Docs screenshots](https://github.com/ultralytics/ultralytics/pull/23697) by [@sergiuwaxmann](https://github.com/sergiuwaxmann)
  - [Update platform API docs](https://github.com/ultralytics/ultralytics/pull/23704) and [Platform Rate Limit docs](https://github.com/ultralytics/ultralytics/pull/23706) by [@glenn-jocher](https://github.com/glenn-jocher)
  - Explore workflows in the [Ultralytics Platform docs](https://docs.ultralytics.com/platform/) or jump straight into the [Ultralytics Platform](https://platform.ultralytics.com) for annotation, training, deployment, and monitoring.

- Additional docs cleanups and fixes:
  - [Fix typos and grammar errors in documentation](https://github.com/ultralytics/ultralytics/pull/23617) by [@him2him2](https://github.com/him2him2)
  - [Fix broken YOLO26 documentation link in vision-eye guide](https://github.com/ultralytics/ultralytics/pull/23646) by [@raimbekovm](https://github.com/raimbekovm)
  - [Fix docstrings](https://github.com/ultralytics/ultralytics/pull/23648) and [Delete orphan markdown files in `build_reference.py`](https://github.com/ultralytics/ultralytics/pull/23666) by [@glenn-jocher](https://github.com/glenn-jocher)
  - [Fix uv conflicts between export and solutions extras](https://github.com/ultralytics/ultralytics/pull/23686) by [@fcakyon](https://github.com/fcakyon)
  - [Fix: get the correct package name for `metadata.distribution`](https://github.com/ultralytics/ultralytics/pull/23641) by [@Laughing-q](https://github.com/Laughing-q)
  - [docs: 📝 fix conda badge link in CI documentation](https://github.com/ultralytics/ultralytics/pull/23661) by [@onuralpszr](https://github.com/onuralpszr)
  - [docs: 📝 remove unneeded tokenizer\_ve documentation file](https://github.com/ultralytics/ultralytics/pull/23662) by [@onuralpszr](https://github.com/onuralpszr)
  - [docs: 📝 remove non-existed dataset generation section from COCO12-Formats documentation](https://github.com/ultralytics/ultralytics/pull/23667) by [@onuralpszr](https://github.com/onuralpszr)
  - [Add YOLOE agnostic\_nms default behavior note](https://github.com/ultralytics/ultralytics/pull/23707) and [Document CUDA OOM auto-retry in batch-size settings](https://github.com/ultralytics/ultralytics/pull/23708) by [@raimbekovm](https://github.com/raimbekovm)

- New doc videos added 🎥
  - [Add video to docs](https://github.com/ultralytics/ultralytics/pull/23624), [Add video to docs](https://github.com/ultralytics/ultralytics/pull/23658), [Add video to docs](https://github.com/ultralytics/ultralytics/pull/23701) by [@RizwanMunawar](https://github.com/RizwanMunawar)

* * *

## 🧑‍💻 Quick upgrade

```bash
pip install -U ultralytics

```

Minimal sanity check:

```python
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.predict("image.heic")

```

* * *

## 🙌 New Contributors

Welcome and thank you!

- [@him2him2](https://github.com/him2him2) — first contribution via [PR #23617](https://github.com/ultralytics/ultralytics/pull/23617)
- [@banica-ultralytics](https://github.com/banica-ultralytics) — first contribution via [PR #23690](https://github.com/ultralytics/ultralytics/pull/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 🔧📈
