# New Release: Ultralytics v8.3.226

**URL:** <https://community.ultralytics.com/t/new-release-ultralytics-v8-3-226/1627>\
**Category:** Discussion\
**Tags:** releases, announcements, ultralytics-official\
**Created:** [November 8, 2025, 1:11pm UTC](https://community.ultralytics.com/t/new-release-ultralytics-v8-3-226/1627 "2025-11-08T13:11:31Z")\
**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:** [November 8, 2025, 1:11pm UTC](https://community.ultralytics.com/t/new-release-ultralytics-v8-3-226/1627/1 "2025-11-08T13:11:31Z")

</div>

# Ultralytics v8.3.226 — Security-first release, safer parsing, custom Albumentations, and smoother NCNN export 🔒🚀

Quick summary: v8.3.226 focuses on security and reliability by replacing unsafe `eval()` across the codebase, while adding Python API support for custom Albumentations, simplifying NCNN export via the PNNX Python interface, stabilizing multi-GPU training, and improving installer logs and docs. YOLO11 remains the latest stable and recommended Ultralytics model for all use cases.

## Highlights

- Security-first: `eval()` fully replaced with safe parsing using `ast.literal_eval()` across configs, loaders, image size checks, and Triton utils.
- New: Custom Albumentations via a Python `augmentations` parameter in `model.train(...)`.
- Simpler deployment: NCNN export now uses the PNNX Python package directly, with clearer logs.
- Stability: DDP `final_epoch` fix for `val=False` and safer default Matplotlib settings for analytics.
- UX and docs: Improved requirement checks and logs, link hygiene across docs, and a new one-click KITTI training notebook for YOLO11.

## New Features ✨

- Add custom Albumentations in Python with the new `augmentations` parameter; see the contribution in [custom Albumentations in the Python API](https://github.com/ultralytics/ultralytics/pull/21952) by [@onuralpszr](https://github.com/onuralpszr).
- NCNN export pipeline now calls the PNNX Python API directly for a simpler, more reliable workflow; details in [Use PNNX Python interface for NCNN conversion](https://github.com/ultralytics/ultralytics/pull/22347) by [@Y-T-G](https://github.com/Y-T-G).

## Security & Parsing 🔐

- All `eval()` usage replaced with `ast.literal_eval()` for deterministic, safe parsing:
  - Config parsing via `cfg.smart_value()` is now secure.
  - Webcam sources like `"0"` are safely parsed as integers.
  - Image sizes like `"[640, 640]"` parse predictably.
  - Triton model metadata parsing is hardened.

- Track the main change in [Replace eval() with ast.literal\_eval()](https://github.com/ultralytics/ultralytics/pull/22597) by [@onuralpszr](https://github.com/onuralpszr).

## Improvements 🛠

- Training stability:
  - Fixed undefined `final_epoch` for DDP when `val=False`; see [Fix undefined final\_epoch for DDP when val=False](https://github.com/ultralytics/ultralytics/pull/22607) by [@Y-T-G](https://github.com/Y-T-G).
  - Analytics now imports safe Matplotlib settings by default; covered in [Add plt\_settings import for Analytics](https://github.com/ultralytics/ultralytics/pull/22590) by [@onuralpszr](https://github.com/onuralpszr).

- Installation & tooling:
  - More informative requirement checks and better behavior with the `uv` package manager as shown in [Improve check\_requirements() output with uv](https://github.com/ultralytics/ultralytics/pull/22623) by [@glenn-jocher](https://github.com/glenn-jocher).
  - CI link checks are less flaky with a longer retry window via [Increase link check retry delay](https://github.com/ultralytics/ultralytics/pull/22604) by [@glenn-jocher](https://github.com/glenn-jocher).

- Docs & UX polish:
  - A ready-to-run notebook was added in [Add KITTI notebook in docs](https://github.com/ultralytics/ultralytics/pull/22592) by [@RizwanMunawar](https://github.com/RizwanMunawar).
  - Code and link hygiene improved in [Python 3.9 target in Markdown](https://github.com/ultralytics/ultralytics/pull/22605) and [Python and URL/301 refactor](https://github.com/ultralytics/ultralytics/pull/22618), both by [@glenn-jocher](https://github.com/glenn-jocher).

## Bug Fixes 🐞

- Resolved rare crash in multi-GPU runs when `val=False` through a robust `final_epoch` definition as captured in [Fix undefined final\_epoch for DDP when val=False](https://github.com/ultralytics/ultralytics/pull/22607) by [@Y-T-G](https://github.com/Y-T-G).
- Prevented CI issues with Matplotlib backend settings via [Analytics plt\_settings import fix](https://github.com/ultralytics/ultralytics/pull/22590) by [@onuralpszr](https://github.com/onuralpszr).
- Ensured requirement checks render correctly under `uv` in [Improve check\_requirements() output with uv](https://github.com/ultralytics/ultralytics/pull/22623) by [@glenn-jocher](https://github.com/glenn-jocher).

## Try it now 🚀

Upgrade to the latest version:

```bash
pip install -U ultralytics

```

Example: use custom Albumentations directly from Python

```python
import albumentations as A
from ultralytics import YOLO

model = YOLO("yolo11n.pt")
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco8.yaml", epochs=100, imgsz=640, augmentations=custom_transforms)

```

## Resources 📚

- Review the full list of changes in the release notes at [Ultralytics v8.3.226](https://github.com/ultralytics/ultralytics/releases/tag/v8.3.226).
- Explore every commit between versions in the [full changelog diff from v8.3.225 to v8.3.226](https://github.com/ultralytics/ultralytics/compare/v8.3.225...v8.3.226).
- Learn how to configure augmentations in the [YOLO data augmentation guide](https://docs.ultralytics.com/modes/train/).
- Get started with deployment using the [NCNN export documentation](https://docs.ultralytics.com/modes/export/).
- Train YOLO11 on KITTI in one click via the [KITTI dataset guide with Colab quickstart](https://docs.ultralytics.com/datasets/detect/kitti/).

## What’s Changed (PRs and authors)

- [Custom Albumentations in the Python API](https://github.com/ultralytics/ultralytics/pull/21952) by [@onuralpszr](https://github.com/onuralpszr).
- [Use PNNX Python interface for NCNN conversion](https://github.com/ultralytics/ultralytics/pull/22347) by [@Y-T-G](https://github.com/Y-T-G).
- [Analytics Matplotlib settings fix](https://github.com/ultralytics/ultralytics/pull/22590) by [@onuralpszr](https://github.com/onuralpszr).
- [Add KITTI notebook in docs](https://github.com/ultralytics/ultralytics/pull/22592) by [@RizwanMunawar](https://github.com/RizwanMunawar).
- [Increase CI link check retry delay](https://github.com/ultralytics/ultralytics/pull/22604) by [@glenn-jocher](https://github.com/glenn-jocher).
- [Python 3.9 target in Markdown](https://github.com/ultralytics/ultralytics/pull/22605) by [@glenn-jocher](https://github.com/glenn-jocher).
- [Fix undefined final\_epoch for DDP when val=False](https://github.com/ultralytics/ultralytics/pull/22607) by [@Y-T-G](https://github.com/Y-T-G).
- [Python and URL/301 refactor](https://github.com/ultralytics/ultralytics/pull/22618) by [@glenn-jocher](https://github.com/glenn-jocher).
- [Improve check\_requirements() output with uv](https://github.com/ultralytics/ultralytics/pull/22623) by [@glenn-jocher](https://github.com/glenn-jocher).
- [Replace eval() with ast.literal\_eval() for security](https://github.com/ultralytics/ultralytics/pull/22597) by [@onuralpszr](https://github.com/onuralpszr).

## Thanks and feedback 💬

Huge thanks to the YOLO community and Ultralytics team for the contributions in v8.3.226. Please upgrade, try the new features, and share your experience or questions in our discussions. Your feedback helps us prioritize and improve future releases!
