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. ![]()
The v8.4.128 GitHub release includes the complete release package and upgrade details.
Deployment and Export Improvements
- In PR #25921, @glenn-jocher introduced synchronous OpenVINO batch inference with a consistent
LATENCYperformance 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.
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.
Training and Data Fixes
- In PR #22724, @Y-T-G prevented externally defined
RANKandLOCAL_RANKvariables 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
YOLODatasettask assertion. - In PR #24163, @noorchauhan removed an unreachable resume-training branch.
Documentation and Usability
- In PR #18658, @ambitious-octopus refreshed the Docker quickstart and added clearer local build instructions.
- In PR #24527, @AffanBinFaisal added task-specific K-Fold split guidance.
- In PR #25910, @RizwanMunawar added a new instructional video to the documentation.
- In PR #23578, @PhuTd03 corrected the
InfiniteDataLoaderiteration documentation. - In PR #22849, @blm25 documented Android ExecuTorch runtime setup.
- In PR #25919, @raimbekovm corrected augmentation parameters and clarified COCO JSON training, caching, and validation guidance.
- In PR #25908, @raimbekovm clarified that tracking is a mode used with detection, segmentation, pose, or OBB models rather than a separate task.
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! ![]()
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. ![]()