New Release: Ultralytics v8.4.128

:rocket: Ultralytics v8.4.128 Released

Ultralytics v8.4.128 is here with more reliable OpenVINO batch inference, optimized TensorRT and ONNX exports, lower training RAM usage, faster SAM mask generation, safer FastSAM prompts, and stronger dataset and training utilities. :glowing_star:

The v8.4.128 GitHub release includes the complete release package and upgrade details.

:high_voltage: Deployment and Export Improvements

  • In PR #25921, @glenn-jocher introduced synchronous OpenVINO batch inference with a consistent LATENCY performance hint, reducing the risk of hangs from asynchronous dynamic INT8 workloads.
  • In PR #25920, @onuralpszr scoped TensorRT INT8 Sigmoid precision exclusions to detection heads for TensorRT 7–10 and removed the unnecessary exclusion for TensorRT 11.
  • In PR #25915, @Y-T-G capped ONNX exports at opset 18 to improve ONNX Runtime CUDA kernel coverage and avoid unwanted CPU fallback.
  • In PR #24703, @lakshanthad improved RKNN INT8 validation, fixed “no detections” behavior, and updated YOLO26 Rockchip benchmarks.
  • In PR #23187, @acgist added class-aware NMS to shared C++ postprocessing.

Compatibility note: OpenVINO now prioritizes predictable, latency-safe synchronous execution. Throughput-focused users should benchmark v8.4.128 on their specific hardware and workloads.

:brain: Performance and Memory

  • In PR #24673, @raimbekovm moved cache='ram' images into a shared contiguous buffer, preventing DataLoader workers from duplicating the cache during forked training.
  • In PR #25909, @JESUSROYETH optimized SAM auto-mask generation by encoding each crop once and reusing its features across point batches.
  • In PR #23664, @gabe-zhang moved YOLO26n AMP-check weights into the global user configuration directory so they can be reused across projects.

:hammer_and_wrench: Training and Data Fixes

  • In PR #22724, @Y-T-G prevented externally defined RANK and LOCAL_RANK variables from incorrectly activating DDP behavior.
  • In PR #25922, @glenn-jocher fixed Ray Tune metric aggregation across multiple datasets and corrected completed-epoch reporting.
  • In PR #25906, @aswanth-07 preserved bounding-box formats during indexing.
  • In PR #25907, @aswanth-07 preserved instance axes during scalar indexing.
  • In PR #25912, @ShuaiLYU made ground-truth side clamping monotonic for more consistent candidate selection with very small boxes.
  • In PR #25916, @JESUSROYETH clipped FastSAM box and point prompts to image boundaries, preventing invalid coordinates from selecting incorrect masks.
  • In PR #24357, @Y-T-G added support for local image paths during NDJSON dataset conversion.
  • In PR #20870, @roel-klein removed an unreachable YOLODataset task assertion.
  • In PR #24163, @noorchauhan removed an unreachable resume-training branch.

:books: Documentation and Usability

:waving_hand: Welcome, New Contributors

A warm welcome to first-time contributors @roel-klein, @acgist, @blm25, @noorchauhan, @PhuTd03, @aswanth-07, and @gabe-zhang. Thank you for helping improve Ultralytics YOLO! :raising_hands:

:package: Try v8.4.128

Upgrade to the latest release with:

pip install -U ultralytics

Please test your training, export, and deployment workflows—especially OpenVINO batch inference, TensorRT INT8, ONNX Runtime CUDA, and RAM-cached training—and share your feedback with the community.

For every change since v8.4.127, review the full v8.4.128 changelog before upgrading production environments. :rocket: