🌟 Summary
ultralytics 8.3.230 is a stability and UX-focused release that fixes color issues in visualizations, improves TensorRT and device handling, and loosens dependency constraints for smoother installs, along with some docs and CI polish. 🎨⚙️🚀
📊 Key Changes
-
🎨 Accurate colors for visualizations (Tensor + PIL) [@Y-T-G, #22734]
- Fixes channel order for tensor inputs in predictors (RT-DETR, SAM, YOLO detect, YOLO classify).
- Ensures
pil=Trueplots return proper RGB images instead of visually “off” colors. Results.plot()now delegates toannotator.result(pil)for consistent behavior.
-
⚙️ More robust TensorRT dynamic input handling [@Laughing-q, #22729]
- For dynamic TensorRT models, the input shape now uses the maximum profile shape, not the “optimal” one.
- Reduces runtime shape errors when running YOLO models at larger or varying resolutions.
-
🧠 Safer device selection for CPU / MPS [@Y-T-G, #22740]
- When using
select_device("cpu")orselect_device("mps"),CUDA_VISIBLE_DEVICESis now set to""instead of"-1". - Avoids crashes and odd CUDA behavior on some systems (including Windows via Ultralytics HUB).
- When using
-
📦 Looser dependency version pins for better compatibility [@glenn-jocher, #22721]
- Removes upper bounds on major dependencies:
numpy,matplotlib,opencv-python,pillow,pyyaml,requests,scipy,torchvision,psutil,polars. - PyTorch requirements updated to:
- General:
torch>=1.8.0 - Windows:
torch>=1.8.0,!=2.4.0(skips known-bad 2.4.0 on Windows CPU).
- General:
ultralytics-thopnow uses>=2.0.18instead of an upper cap.
- Removes upper bounds on major dependencies:
-
🖼️ Docs UX + SEO improvements [@sergiuwaxmann, @glenn-jocher, @RizwanMunawar]
- Docs banner updated to highlight Ultralytics’ $30M Series A with new visuals and investor logos.
- Page title logic made safer to handle pages without TOC or
pagemetadata, preventing template errors. - Object blurring & cropping guides now embed a new, clearer YouTube tutorial (
J1BaCqytBmA), aligned with current YOLO11 workflows.
-
🧪 CI & workflow maintenance [@dependabot[bot]]
- All GitHub workflows now use
actions/checkout@v6(including CI, docs, docker, link checks, publishing, mirroring). - Keeps automation aligned with the latest GitHub Actions best practices.
- All GitHub workflows now use
🎯 Purpose & Impact
-
🎨 More trustworthy visual outputs
- Fixes incorrect RGB/BGR handling so prediction overlays look right across RT-DETR, SAM, YOLO detect, and YOLO classify.
- Especially important for users working directly with tensors or using
pil=Truefor plotting or UI integrations.
-
🧩 Smoother deployment on TensorRT and varied input sizes
- Using the maximum TensorRT profile shape for dynamic inputs reduces shape mismatches and runtime failures.
- Helpful for production setups that need to handle different image resolutions reliably.
-
💻 More reliable CPU/MPS runs and Ultralytics HUB integration
- Clearing
CUDA_VISIBLE_DEVICESproperly avoids crashes and confusing CUDA behavior on systems where GPUs must be “hidden.” - Leads to more predictable device selection across CLI, Python API, and Ultralytics HUB.
- Clearing
-
📦 Easier installs and upgrades
- Looser dependency pins mean fewer version conflicts with existing environments (e.g., modern
numpy,torch,torchvision). - Still protects Windows users from known PyTorch 2.4.0 CPU issues.
- Looser dependency pins mean fewer version conflicts with existing environments (e.g., modern
-
📚 Better docs experience & onboarding
- Updated banner and safer HTML title logic improve stability, branding, and SEO for documentation.
- New video tutorials make object blurring/cropping with YOLO11 easier to learn and replicate.
-
🏗️ More robust CI/CD
- Upgrading to
actions/checkout@v6keeps the project’s automation current, aiding long-term reliability of builds, tests, and releases.
- Upgrading to
Overall, v8.3.230 is a quality-focused release: if you visualize results, run dynamic TensorRT models, rely on CPU/MPS, or manage modern Python stacks, you should see more stable and predictable behavior. ✅
What's Changed
- Revert "fix(pyproject.toml): 🐞 Update dependency versions in pyproject.toml to enforce upper limits" by @glenn-jocher in #22721
- Fix validation with
dynamicTensorRT model by setting themax_shapeasinput_shapeby @Laughing-q in #22729 - Update Banner by @sergiuwaxmann in #22689
- Bump actions/checkout from 5 to 6 in /.github/workflows by @dependabot[bot] in #22741
- Update main.html to zensical compat by @glenn-jocher in #22746
- Add https://youtu.be/J1BaCqytBmA to docs by @RizwanMunawar in #22745
- Set
CUDA_VISIBLE_DEVICESto empty string instead of -1 to avoid Windows crash by @Y-T-G in #22740 ultralytics 8.3.230Fix color conversion for Tensor inputs and PIL plots by @Y-T-G in #22734
Full Changelog: v8.3.229...v8.3.230