New Release: Ultralytics v8.4.117

:rocket: Ultralytics v8.4.117: Safer Augmentations, Faster YOLO26, and More Reliable Deployment

Ultralytics v8.4.117 is now available! :tada:

This release improves augmentation correctness, model reliability, deployment security, depth estimation, and documentation across Ultralytics YOLO and YOLO26. Highlights include type-aware Albumentations routing, safer dependency installation, faster YOLO26 end-to-end postprocessing, stronger dataset validation, and more consistent inference across backends.

Explore the v8.4.117 GitHub release for the complete release details.

:glowing_star: New Features and Major Improvements

:puzzle_piece: Type-Aware Albumentations

Spatial Albumentations are now detected recursively by type instead of relying on a fragile transform-name list. Wrapped transforms such as OneOf can correctly update annotations, while bounding boxes, polygons, masks, depth maps, and keypoints remain aligned.

The update also improves background-only augmentation, flip_idx handling, zero-probability behavior, and detection of unsupported topology-changing transforms. This work was contributed by @raimbekovm in PR #25633.

:locked_with_key: Safer Dependency Installation

check_requirements() now prevents untrusted requirement strings from being interpreted as shell commands, protecting workflows that automatically install dependencies while loading model files. Thanks to @Zenka737 for PR #25720.

:high_voltage: Faster YOLO26 End-to-End Inference

YOLO26 end-to-end postprocessing now uses grouped top-k selection, reducing TensorRT FP16 latency by approximately 1.8% to 8.1% without changing mAP. Thanks to @artest08 for PR #25666.

YOLO26 HEF export also received Hailo quantization updates through @nivosco in PR #25687, followed by removal of the brittle model-specific recipe by @glenn-jocher in PR #25728.

:brain: Better Depth Estimation

Depth workflows receive several important correctness and reproducibility improvements:

  • PyTorch, Hailo, and exported-model outputs are aligned before padding is removed, contributed by @JESUSROYETH in PR #25628.
  • Depth validation no longer inherits incompatible rect=True behavior, fixed by @JESUSROYETH in PR #25646.
  • The KITTI configuration now uses the canonical 652-frame left-camera evaluation split, correcting train/test overlap through @JESUSROYETH in PR #25650.
  • Depth metrics are averaged per image instead of pooling all valid pixels, implemented by @JESUSROYETH in PR #25648.
  • DepthLoss26 gradient pyramids are now gated per image, contributed by @JESUSROYETH in PR #25637.
  • The Depth Anything V2 speed table is now reusable through a documentation macro, added by @raimbekovm in PR #25715.

:bullseye: Expanded Training and Model Support

Pose training now accepts dataset-defined kpt_oks_sigmas, with validation against the model keypoint count. Thanks to @cosmo-gb for PR #25656.

YOLOE class validation and prompt-free vocabulary workflows are more robust following work by @raimbekovm in PR #25691.

Predictors now report unsupported options, refresh after training to use new weights and class names, and register tracker callbacks only once per model. These changes were contributed by @raimbekovm in PR #25688.

:shield: Reliability and Bug Fixes

  • Windows semantic masks remain two-dimensional, preventing Mosaic failures during semantic training. Thanks to @Y-T-G for PR #25721.
  • COCO conversion writes one label format per file, handles unusable polygons more safely, and clarifies classification dataset inputs. Thanks to @raimbekovm for PR #25672.
  • Grounding dataset scanning, caching, validation, and reporting are more reliable following @raimbekovm in PR #25678.
  • OBB empty inputs are handled safely, long-edge canonicalization is documented, and degenerate contours are skipped during export through @raimbekovm in PR #25655.
  • GMC tracking now tolerates textureless frames and incomplete feature matches, allowing recovery instead of stopping. Thanks to @Nikhi00718 for PR #25709.
  • Continuous-stream solution state no longer grows without bounds, fixed by @JESUSROYETH in PR #25729.
  • SAM3 video masks now use the configured model logit threshold consistently, contributed by @JESUSROYETH in PR #25643.
  • SavedModel INT8 calibration avoids an unnecessary NumPy copy thanks to @amanharshx in PR #25639.
  • RT-DETR FLOPs profiling is faster and correctly supports attention-based decoder architectures following @Daniiiil1 in PR #25652.

:books: Documentation and Platform Updates

Export documentation now covers more options, including conf, iou, and max_det, through @raimbekovm in PR #25675.

Additional export and prediction arguments, including classification data directory guidance, were documented by @raimbekovm in PR #25690. Classification inputs were also named consistently across calibration, benchmark, and tuner tables through @raimbekovm in PR #25698.

Other documentation improvements include:

:waving_hand: Welcome, New Contributors!

A warm welcome to the community members making their first contribution:

Thank you to every contributor helping make Ultralytics YOLO faster, safer, and more reliable! :raising_hands:

:package: Try v8.4.117

Upgrade to the latest release:

pip install -U ultralytics

Please try v8.4.117 with your training, validation, export, tracking, and deployment workflows. Share your results and feedback with the community, especially if you use custom Albumentations pipelines, depth estimation, semantic masks, or YOLO26 TensorRT exports.

For every merged change, review the full v8.4.116 to v8.4.117 changelog. :rocket: