pypi ultralytics 8.4.117
v8.4.117 - Route spatial Albumentations by type and carry masks, polygons and keypoints through it (#25633)

4 hours ago

🌟 Summary

v8.4.117 improves augmentation correctness, model reliability, deployment safety, and documentation across Ultralytics YOLO and YOLO26. πŸš€

πŸ“Š Key Changes

  • 🧩 Albumentations now handles spatial transforms by type

    • PR #25633 replaces the fragile hardcoded transform-name list with recursive type detection, so wrapped transforms such as OneOf correctly update annotations.
    • Spatial augmentations now carry bounding boxes, polygons, masks, depth maps, and keypoints through the pipeline.
    • Background-only images receive pixel-level augmentations even when they have no annotations.
    • Keypoint flipping respects the configured flip_idx mapping.
    • Probability handling now makes a zero probability a reliable off switch.
    • Unsupported topology-changing transforms, such as grid shuffling with polygons or keypoints, are detected instead of silently corrupting labels.
  • πŸ” Improved security for dependency installation

    • check_requirements() now prevents untrusted requirement strings from being interpreted as shell commands.
    • This protects workflows that automatically install missing dependencies while loading model files.
  • πŸ›‘οΈ More reliable dataset and mask processing

    • Fixed Windows semantic-mask shape handling so grayscale masks remain two-dimensional and semantic training no longer fails during Mosaic augmentation.
    • COCO conversion now keeps one consistent label format per file, warns about unusable polygons, and falls back to box-shaped polygons when necessary.
    • Mixed detection and segmentation rows are rejected instead of being silently misread.
    • Grounding dataset caching and validation were improved, including clearer errors for empty or invalid annotation sets.
    • Degenerate polygon contours are skipped when exporting labels.
  • 🧠 Depth estimation improvements

    • Depth postprocessing now aligns PyTorch, Hailo, and exported-model outputs before removing padding, producing more consistent results across inference backends.
    • Depth validation no longer inherits rectangular batching behavior that conflicts with its intentional square stretching.
    • The KITTI depth configuration now uses the canonical 652-frame left-camera evaluation split, avoiding test-set overlap and making reported results more reproducible.
    • Depth metrics and documentation were updated to reflect per-image evaluation behavior.
  • ⚑ Faster and more consistent inference

    • YOLO26 end-to-end postprocessing uses grouped top-k selection, improving TensorRT FP16 latency by approximately 1.8% to 8.1% without changing mAP.
    • RT-DETR FLOPs profiling is faster and now supports attention-based decoder architectures correctly.
    • SavedModel INT8 calibration avoids an unnecessary NumPy copy.
    • GMC tracking now handles textureless frames and incomplete feature matches without stopping, allowing tracking to recover cleanly.
    • SAM3 video masks use the model’s configured threshold consistently instead of a fixed threshold.
  • 🎯 Expanded model and training support

    • Pose training now accepts dataset-defined kpt_oks_sigmas, with validation that the configuration matches the model’s keypoint count.
    • OBB utilities handle empty inputs more safely, and documentation clarifies long-edge canonicalization and prediction formats.
    • Predictors now report unsupported options such as augmentation, embeddings, and visualization instead of silently ignoring them.
    • Cached predictors are refreshed after training so predictions use the newly trained weights and class names.
    • Embedding requests now provide clearer errors for exported or third-party models that do not expose compatible internal layers.
    • YOLOE class and visual-prompt validation was strengthened, supporting more reliable prompt-free vocabulary workflows.
  • πŸ“š Documentation and platform updates

    • Export documentation now covers additional options such as name, split, conf, iou, max_det, and agnostic_nms.
    • Classification dataset inputs are consistently documented as directories or built-in dataset names rather than YAML files.
    • Added reusable depth-speed comparison documentation and a new YAML2ModelGraph integration guide for generating YOLO architecture diagrams from model YAML files.
    • Added Platform troubleshooting guidance for datasets, training, deployment, billing, and common questions.
    • FAQ and supporting sections were reorganized for more consistent documentation rendering.
    • Rust inference documentation now references ultralytics-inference version 0.0.33.
    • Documentation publishing is now restricted to the main branch to prevent accidental production releases.

🎯 Purpose & Impact

  • βœ… More trustworthy augmentation: Labels and auxiliary data remain aligned when using custom or nested Albumentations pipelines, reducing silent training errors.
  • πŸ§ͺ Better training stability: Depth, semantic segmentation, pose, OBB, grounding, and tracking workflows handle edge cases more gracefully.
  • πŸš€ Improved deployment performance: YOLO26 TensorRT exports can achieve lower postprocessing latency, while depth predictions behave more consistently across backends.
  • πŸ”’ Safer model loading: Dependency checks no longer expose shell execution risks through malicious requirement strings.
  • πŸ“Š More reproducible evaluation: The corrected KITTI split and clarified depth metrics make comparisons easier to interpret, although results from older downloaded datasets may require rebuilding.
  • πŸ“– Clearer user experience: Updated documentation explains task-specific inputs, export controls, model limitations, and platform troubleshooting in more practical terms.

What's Changed

New Contributors

Full Changelog: v8.4.116...v8.4.117

Don't miss a new ultralytics release

NewReleases is sending notifications on new releases.