New Release: Ultralytics v8.4.203

:rocket: Ultralytics v8.4.203: NXP Export, Safer Loading, and Reliability Fixes

Ultralytics YOLO v8.4.203 is here! This release introduces NXP i.MX95 Neutron NPU export, strengthens dataset and checkpoint loading security, and improves training, inference, tracking, and visualization.

:glowing_star: New Feature: NXP i.MX95 Export

PR #27047 by @glenn-jocher adds format=nxp export for all seven YOLO tasks.

  • Creates an INT8 LiteRT model compiled with Neutron SDK 3.3.0.
  • Uses the existing LiteRT inference backend with NXP’s delegate.
  • Targets i.MX95 only; unsupported operations may fall back to the CPU.

Before deployment, validate accuracy, latency, and CPU fallback behavior on your target board.

:locked: Security Improvements

  • Restricted dataset cache loading: PR #27041 by @onuralpszr introduces a restricted unpickler for dataset caches.
  • No automatic checkpoint dependency installation: PR #27035 by @onuralpszr makes missing checkpoint dependencies raise an error instead of automatically installing packages.
  • Safer SAM and NAS loading: PR #27032 by @Y-T-G uses weights-only checkpoint loading where supported.
  • Safer text embedding caches: PR #27045 by @onuralpszr applies weights-only loading to YOLO-World and YOLOE text embedding caches.
  • Shell-free sudo detection: PR #27034 by @onuralpszr replaces a shell call with shutil.which.

:brain: Training Improvements

  • YOLOE prompt-loss fixes: PR #27048 by @raimbekovm corrects text-prompt training with smaller class counts and fixes CPU runner image builds.
  • Correct hand-keypoint flips: PR #27024 by @raimbekovm preserves landmark assignments when hands are flipped.
  • Faster deterministic semantic loss: PR #27027 by @Y-T-G reports a 2.8x speedup in focused measurements, not a guaranteed end-to-end training speedup.
  • Cleaner Platform training commands: PR #27004 by @laodouya removes duplicate training-command serialization.

:bullseye: Inference, Tracking, and Export Fixes

  • Better tracker assignments: PR #27026 by @Y-T-G improves matching in the SciPy fallback and skips unused LAP cost computation.
  • Predictable FastSAM box prompts: PR #27043 by @raimbekovm selects no masks when a box overlaps none.
  • Resilient SAM prompts: PR #27046 by @raimbekovm keeps prompts usable after an interrupted “segment everything” call.
  • Consistent backend precision: PR #27040 by @aswanth-07 synchronizes precision after module conversions.
  • More reliable ExecuTorch exports: PR #27044 by @raimbekovm captures exports on CPU to fix incorrect MPS output and CUDA crashes.

:framed_picture: Visualization and Utility Fixes

  • Correct binary semantic-mask rendering: PR #27025 by @raimbekovm plots only the foreground.
  • PIL text-coordinate support: PR #27038 by @MohammadHijjawi97 enables tuple coordinates in Annotator.text with PIL fonts.
  • Mask-IoU dtype handling: PR #27039 by @cainiao33 promotes non-floating-point masks to float32.
  • Screenshot runner support: PR #27030 by @glenn-jocher adds Chromium system libraries for Playwright screenshots in the CPU runner image.

:books: Dataset Workflow Updates

  • Argoverse through Ultralytics Platform: PR #27033 by @onuralpszr replaces Google Drive downloads with a Platform-based download and conversion workflow.
  • Clearer dataset subset documentation: PR #27029 by @JaypeeLan explains fraction subset selection for image-folder datasets. :tada: Welcome, and thank you for your first contribution!

Documentation also now lists NXP among the available export options.

:high_voltage: Try v8.4.203

Upgrade with:

pip install --upgrade ultralytics==8.4.203

Explore the v8.4.203 release notes for release details, or review the full changelog to see every change.

Give the release a try and share your feedback below! Whether you’re testing NXP export or updating an existing workflow, we’d love to hear what works well and what needs attention. :raising_hands: