# New Release: Ultralytics v8.3.230

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

</div>

# 🚀 Ultralytics v8.3.230 Release – Smoother Installs, Better Colors, Stronger Deployments

Ultralytics v8.3.230 is now live! 🎉

This release focuses on **stability, UX, and deployment reliability** :

- Fixed **color issues** in visualizations (tensors + PIL) so your predictions look right everywhere 🎨
- Improved **TensorRT dynamic input handling** for more robust deployments ⚙
- Made **device selection safer** on CPU/MPS 💻
- Relaxed **dependency constraints** for smoother installs and upgrades 📦
- Polished **docs UX/SEO** and **CI workflows** for long-term reliability 📚

You can view the full release details in the **v8.3.230 GitHub release** page, which is available via the official Ultralytics repository’s releases section.

* * *

## 🌟 Summary

This is a **quality-focused** update: if you

- visualize results with YOLO, RT-DETR, or SAM,
- deploy models with TensorRT and dynamic shapes,
- run on CPU or Apple MPS, or
- maintain modern Python environments with recent dependencies,

then v8.3.230 should give you a more **stable, predictable, and visually accurate** experience. ✅

* * *

## 🆕 New & Improved Behavior

### 🎨 1. Correct Colors for Visualizations (Tensor + PIL)

Color handling in visualizations has been corrected for tensor pipelines and PIL outputs, thanks to [@Y-T-G](https://github.com/Y-T-G) in the pull request that fixes color conversion for tensor inputs and PIL plots, which you can find in the Ultralytics repository under pull request number 22734.

**What changed:**

- Fixed channel order for **tensor inputs** across:
  - YOLO detect
  - YOLO classify
  - RT-DETR
  - SAM

- Ensured `pil=True` plots now return **proper RGB** images (no more “off” or washed-out colors).
- Standardized behavior so `Results.plot()` routes through `annotator.result(pil)` for consistent outputs.

**Impact:**  
If you are building UIs, dashboards, or workflows that rely on **accurate overlays and colors** , this update should make your visual outputs both **trustworthy and consistent**.

* * *

### ⚙ 2. More Robust TensorRT Dynamic Input Handling

Dynamic TensorRT models are now handled more safely, with updates from [@Laughing-q](https://github.com/Laughing-q) in the pull request that improves validation with dynamic TensorRT models by using `max_shape` as the `input_shape`, available as pull request 22729 in the Ultralytics repository.

**What changed:**

- Dynamic TensorRT models now use the **maximum profile shape** as the input shape, instead of the “optimal” one.

**Impact:**

- Reduces **runtime shape errors** when running YOLO models at **larger or varying resolutions**.
- More reliable for production deployments where input sizes can differ but must stay within a defined profile.

* * *

### 🧠 3. Safer Device Selection for CPU / MPS

Device selection logic was hardened for CPU/MPS environments by [@Y-T-G](https://github.com/Y-T-G), in the pull request that sets `CUDA_VISIBLE_DEVICES` to an empty string to avoid Windows crashes, which is available as pull request 22740 in the Ultralytics GitHub repository.

**What changed:**

- Calling `select_device("cpu")` or `select_device("mps")` now sets `CUDA_VISIBLE_DEVICES` to `""` instead of `"-1"`.

**Impact:**

- Avoids **crashes** and odd CUDA behavior on some systems (including Windows).
- Provides **more predictable device behavior** for:
  - CLI runs
  - Python API usage
  - Environments where GPUs must be “hidden” or disabled.

* * *

### 📦 4. Looser Dependency Version Pins

Dependency constraints have been relaxed to play nicer with modern Python stacks, led by [@glenn-jocher](https://github.com/glenn-jocher) in the pull request that reverts strict upper dependency limits in `pyproject.toml`, which you can find as pull request 22721 in the Ultralytics repository.

**What changed:**

- Removed **upper bounds** on major dependencies including:  
`numpy`, `matplotlib`, `opencv-python`, `pillow`, `pyyaml`, `requests`, `scipy`, `torchvision`, `psutil`, `polars`.
- Updated PyTorch requirements to:
  - General: `torch>=1.8.0`
  - Windows: `torch>=1.8.0,!=2.4.0` (skipping a known-bad Windows CPU version).

- Updated `ultralytics-thop` to `>=2.0.18` (no upper cap).

**Impact:**

- Fewer **version conflicts** when installing Ultralytics YOLO into existing environments.
- Better compatibility with **recent PyTorch / numpy ecosystems** , while still avoiding known-bad combos on Windows.

* * *

### 🖼 5. Docs UX & SEO Improvements

Documentation UX and SEO have been refined by [@sergiuwaxmann](https://github.com/sergiuwaxmann), [@glenn-jocher](https://github.com/glenn-jocher), and [@RizwanMunawar](https://github.com/RizwanMunawar) via multiple pull requests:

- A refreshed **docs banner** highlighting Ultralytics’ funding and investors, introduced in pull request 22689 in the Ultralytics GitHub repository, improves first impressions and branding.
- Safer **page title logic** in `main.html` prevents template errors when pages lack a TOC or page metadata, implemented in pull request 22746 in the same repository.
- Object blurring and cropping guides now embed a **new YouTube tutorial** aligned with current YOLO11 workflows, which you can explore through the pull request adding the video tutorial under ID `J1BaCqytBmA` (pull request 22745).

**Impact:**

- More stable docs rendering and better SEO.
- Easier onboarding for workflows like **blurring and cropping** using YOLO11.

* * *

### 🧪 6. CI & Workflow Maintenance

Continuous integration and automation have been upgraded for long-term health, with changes provided by [@dependabot](https://github.com/dependabot) in the pull request that bumps `actions/checkout` from v5 to v6 across workflows, which is available as pull request 22741 in the Ultralytics GitHub repository.

**What changed:**

- All GitHub workflows (CI, docs, Docker, link checks, publishing, mirroring, etc.) now use `actions/checkout@v6`.

**Impact:**

- Keeps automation aligned with **current GitHub Actions best practices**.
- Helps ensure more reliable builds, tests, and releases in the future.

* * *

## 🔍 What’s Included (PR Overview)

Here is a quick mapping of the key pull requests and authors in this release:

- Dependency pin update and revert of strict upper limits by [@glenn-jocher](https://github.com/glenn-jocher) is detailed in pull request 22721 in the Ultralytics repository.
- Dynamic TensorRT `max_shape` handling by [@Laughing-q](https://github.com/Laughing-q) is implemented in pull request 22729.
- Updated docs banner by [@sergiuwaxmann](https://github.com/sergiuwaxmann) is available as pull request 22689.
- Workflow upgrade to `actions/checkout@v6` by [@dependabot](https://github.com/dependabot) is located in pull request 22741.
- Safer docs `main.html` handling by [@glenn-jocher](https://github.com/glenn-jocher) is stored in pull request 22746.
- New object blur/crop tutorial embed by [@RizwanMunawar](https://github.com/RizwanMunawar) appears in pull request 22745.
- Safer `CUDA_VISIBLE_DEVICES` handling for CPU/MPS by [@Y-T-G](https://github.com/Y-T-G) is part of pull request 22740.
- Fixed color conversion for tensor inputs and PIL plots by [@Y-T-G](https://github.com/Y-T-G) is implemented in pull request 22734.

You can explore the complete diff between versions using the comparison tool that GitHub provides between tags `v8.3.229` and `v8.3.230` within the Ultralytics repository.

* * *

## 🧪 How to Try v8.3.230

Upgrade to the latest version with:

```bash
pip install --upgrade ultralytics

```

Then run a quick check, for example with YOLO11 detection:

```python
from ultralytics import YOLO

model = YOLO("yolo11n.pt") # latest recommended model family
results = model("https://ultralytics.com/images/bus.jpg")
results[0].plot(pil=True) # verify colors and overlays look correct

```

You can also experiment with TensorRT exports and dynamic shapes:

```python
from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="engine", dynamic=True)

engine_model = YOLO("yolo11n.engine")
engine_model("https://ultralytics.com/images/zidane.jpg", imgsz=960)

```

* * *

## 🙌 Community & Feedback

This release is shaped by reports, PRs, and reviews from the YOLO community and Ultralytics team. Huge thanks to everyone who contributed:  
[@Y-T-G](https://github.com/Y-T-G), [@Laughing-q](https://github.com/Laughing-q), [@sergiuwaxmann](https://github.com/sergiuwaxmann), [@RizwanMunawar](https://github.com/RizwanMunawar), [@dependabot](https://github.com/dependabot), and all others involved.

We would love your feedback:

- If you notice any remaining color issues, TensorRT edge cases, or device-selection quirks, please open an issue or join the discussion in the Ultralytics GitHub Discussions area.
- If installs are smoother or your deployments are more stable with v8.3.230, sharing that experience also helps guide future work.

Enjoy v8.3.230, and let us know how it works in your pipelines! 🚀
