New Release: Ultralytics v8.3.208

Ultralytics v8.3.208 :rocket:

A focused release that expands safe FP16 exports across ONNX and TorchScript, improves NCNN reliability by routing through ONNX, and speeds up RT-DETR with anchor caching β€” plus clearer docs and smoother dependency handling. Built with and for our community. :raising_hands:

Highlights

  • Safer FP16 exports on GPU for both ONNX and TorchScript, with automatic CPU fallback and clear warnings.
  • NCNN export pipeline now flows through ONNX β†’ PNNX for better stability and compatibility.
  • Faster RT-DETR inference/training via anchor and mask caching.
  • Smarter check_requirements() with interchangeable packages like onnxruntime or onnxruntime-gpu.

New Features :sparkles:

  • FP16 export improvements for ONNX and TorchScript with GPU-only enforcement, expanded tests, and updated docs in PR #22316 by @glenn-jocher.
  • Interchangeable package support in check_requirements() (e.g., ("onnxruntime", "onnxruntime-gpu")) in PR #22321 by @glenn-jocher.

Improvements :gear:

  • NCNN export now uses ONNX β†’ PNNX (instead of TorchScript β†’ PNNX) for better reliability in PR #22315 by @Y-T-G.
  • RT-DETR speed-up with cached decoder anchors and masks in PR #22318 by @Y-T-G.
  • Clearer validation docs explaining that validation uses model.names in PR #22319 by @jb297686.
  • Better check_requirements() examples, including custom pip args and version constraints, in PR #22317 by @glenn-jocher.

Bug Fixes & Maintenance :broom:

Quick Examples :light_bulb:

  • Export ONNX in FP16 on GPU with Ultralytics YOLO (YOLO11 recommended):
from ultralytics import YOLO

YOLO("yolo11n.pt").export(format="onnx", half=True, device=0)  # βœ… GPU FP16
  • Attempting FP16 export on CPU will auto-disable FP16 and warn:
from ultralytics import YOLO

YOLO("yolo11n.pt").export(format="onnx", half=True, device="cpu")  # ℹ️ Will warn and use half=False
  • Check requirements with interchangeable packages:
from ultralytics.utils.checks import check_requirements

check_requirements([("onnxruntime", "onnxruntime-gpu"), "numpy"])
  • Export NCNN (now via ONNX β†’ PNNX under the hood):
from ultralytics import YOLO

YOLO("yolo11n.pt").export(format="ncnn")

Upgrade :hammer_and_wrench:

pip install -U ultralytics

What’s Changed

New Contributors :clap:

Try It & Share Feedback :speech_balloon:

Upgrade, kick the tires, and let us know how it goes. The team recommends starting with YOLO11 for all new projects. Check the full details in the v8.3.208 release notes, and compare changes using the v8.3.207 β†’ v8.3.208 diff.

Thanks to everyone in the YOLO community and the Ultralytics team for making this happen. Your feedback drives our roadmap β€” keep it coming! :rocket: