Ultralytics

Latest version: v8.4.118

Safety actively analyzes 988340 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 75

8.4.118

πŸ“Š Key Changes

- πŸ€– **New standalone `LLM` model interface** by glenn-jocher
- Add `from ultralytics import LLM` for text and image-based language-model requests.
- Supports OpenAI Responses and Chat Completions APIs, including synchronous and asynchronous calls.
- Accepts images from local paths, URLs, data URLs, NumPy arrays, and PIL images.
- Supports reusable prompts, request overrides, conversation state, API keys, and OpenAI-compatible service endpoints.
- Uses the optional `openai` dependency and remains independent of Ultralytics Platform and workflow-runtime components.

- πŸ“ **Improved oriented bounding box training**
- Mosaic, CutMix, and RandomPerspective now preserve OBB orientation when objects are clipped by image boundaries.
- Prevents clipped objects from receiving incorrect rotation angles during training.

- ⚑ **Faster CopyPaste augmentation**
- Batches instance concatenation instead of repeatedly copying growing arrays.
- Reduces unnecessary processing overhead, especially when many objects are copied.

- 🧠 **More reliable YOLOE behavior**
- Validates visual prompts before modifying model state.
- Accepts flat prompts for supported batched image sources.
- Rejects invalid string class labels and mismatched vocabularies earlier with clearer errors.
- Preserves gradient settings when converting YOLOE convolution layers to linear layers.

- πŸ‹οΈ **Training and inference stability fixes**
- Correctly resets dataloader workers when resuming after Mosaic augmentation is closed.
- Allows repeated `train()` and `tune()` calls on the same model object.
- Prevents duplicate World model callbacks across multi-dataset training.
- Fixes classification prediction for models without predefined transforms.
- Ensures classification validation loaders do not discard samples when compiling.
- Fixes SAM and related predictor models being created with incompatible inference-only tensors.

- πŸ—‚οΈ **Dataset and prediction improvements**
- Classification auto-splitting now recognizes all supported image formats, including JPEG, BMP, WebP, TIFF, AVIF, HEIC, and uppercase extensions.
- Missing classification images now raise a clear `FileNotFoundError` instead of failing later with an unrelated directory error.
- Preserves original filenames when loading images after EXIF correction.
- Keeps bounding-box fallbacks for malformed grounding segmentation labels.

- πŸ“š **Documentation and deployment updates**
- Standardizes strict documentation validation on Zensical and updates contributor instructions.
- Documentation redeployment now detects Python docstring and all configuration-file changes.
- Restores model benchmark chart placeholders, including for YOLO26, while moving production site features to the centralized publisher.
- Documents replacing the model behind an existing deployment without changing its endpoint URL, API key, or deployment identity.
- Updates Albumentations examples for current 2.x constructor names and refreshes the Rust inference dependency to `0.0.34`.
- Adds API reference documentation for the new `LLM` interface.

🎯 Purpose & Impact

- πŸš€ **Broader AI capabilities:** Developers can now use Ultralytics as a unified entry point for YOLO vision models and OpenAI-compatible language models, including multimodal image understanding.
- πŸ”Œ **Flexible integration:** The new `LLM` class works with OpenAI and compatible providers without requiring Platform or workflow features.
- 🎯 **Better OBB accuracy:** Rotated-object datasets should receive more consistent training targets when augmentation crops objects at image edges.
- ⚑ **Improved performance:** CopyPaste augmentation can run more efficiently, particularly on images containing many instances.
- πŸ›‘οΈ **More predictable training:** Resume, compile, repeated training, World models, SAM, and classification workflows are less likely to produce silent errors or invalid results.
- 🧰 **Easier maintenance:** Broader dataset format support, clearer validation errors, and more accurate documentation reduce setup and debugging time for users.

What's Changed
* Preserve OBB orientation through clipped augmentations by Nikhi00718 in https://github.com/ultralytics/ultralytics/pull/25723
* Redeploy docs when Python or cfg sources change by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25733
* Standardize Docs validation on Zensical by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25736
* Simplify strict Docs validation and restore model charts by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25738
* Document deployment model replacement by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25745
* Remove the YOLO11 podcast audio embed by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25765
* Align grounding segmentation fallback by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25743
* Batch the concatenation loop in CopyPaste.apply_instances to avoid O(n^2) growth by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25732
* Update the Albumentations examples to the 2.x constructor arguments by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25759
* Standardize export data defaults by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25742
* Cache external test assets before pytest by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25737
* Accept all image formats in classification auto-split and report missing images instead of crashing by doublecurry in https://github.com/ultralytics/ultralytics/pull/25749
* Validate yoloe visual prompts by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25744
* Reject a short YOLOE vocabulary before the head is re-parameterized by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25747
* Build loaded models outside inference mode by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25748
* Register the World pretrain hook once per model by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25758
* Build the name=model save directory from the model stem by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25763
* Reset dataloader workers when resuming after mosaic closure by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25762
* Restore the model override after training by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25760
* Fix: `autocast_list` loses image filename after `exif_transpose` by Q-qqq in https://github.com/ultralytics/ultralytics/pull/25741
* Fix classification predict crash when the model has no transforms by ahmet-f-gumustas in https://github.com/ultralytics/ultralytics/pull/25735
* Build SAM predictor models outside inference mode by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25756
* fix: only apply `drop_last` to the classify train loader under `compile`, not val by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25734
* Revert "Build loaded models outside inference mode" by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25768
* Name the ImageNet pseudo-label teacher checkpoints and correct stored dtype by Bovey0809 in https://github.com/ultralytics/ultralytics/pull/25754
* Bump ultralytics-inference docs version to 0.0.34 by onuralpszr in https://github.com/ultralytics/ultralytics/pull/25778
* Add standalone LLM model interface by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25761

New Contributors
* doublecurry made their first contribution in https://github.com/ultralytics/ultralytics/pull/25749

**Full Changelog**: https://github.com/ultralytics/ultralytics/compare/v8.4.117...v8.4.118

8.4.117

πŸ“Š 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
* Bump eviden-actions/clean-self-hosted-runner from v1.4.35 to v1.4.36 in /.github/workflows by UltralyticsAssistant in https://github.com/ultralytics/ultralytics/pull/25711
* Bump ultralytics-inference version to 0.0.33 in documentation by onuralpszr in https://github.com/ultralytics/ultralytics/pull/25712
* Publish docs only from main by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25713
* Move the Depth Anything V2 speed table into a docs macro by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25715
* Fix Windows semantic mask shape regression by Y-T-G in https://github.com/ultralytics/ultralytics/pull/25721
* Document the predictor data attribute as the args copy it holds by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25692
* Threshold SAM3 video semantic masks at the model logit threshold by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25643
* Fix shell injection in check_requirements() via untrusted requirement strings by Zenka737 in https://github.com/ultralytics/ultralytics/pull/25720
* Document max_det, iou, conf export arguments by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25675
* feat: clarify confusion matrix confidence threshold during validation by Rahulbiradar9 in https://github.com/ultralytics/ultralytics/pull/25677
* fix GMC empty descriptor handling by Nikhi00718 in https://github.com/ultralytics/ultralytics/pull/25709
* Fix redundant SavedModel INT8 calibration copy by amanharshx in https://github.com/ultralytics/ultralytics/pull/25639
* Fix depth val silently overriding its own stretch letterbox with inherited `rect=True` by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25646
* Document the OBB long-edge canonicalization, convert empty box inputs, and skip degenerate segment contours by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25655
* Use the Hailo Model Zoo quantization recipe for YOLO26 HEF export by nivosco in https://github.com/ultralytics/ultralytics/pull/25687
* Document the confidence threshold used for the val confusion matrix (25674) by Parth1353 in https://github.com/ultralytics/ultralytics/pull/25722
* Write one label format per file in convert_coco and document the classification data input by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25672
* Grouped topk e2e postprocess by artest08 in https://github.com/ultralytics/ultralytics/pull/25666
* Speed up RT-DETR FLOPs profiling by Daniiiil1 in https://github.com/ultralytics/ultralytics/pull/25652
* Document missing export and predict arguments and the classification data directory by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25690
* Support optional kpt_oks_sigmas in v8PoseLoss for training by cosmo-gb in https://github.com/ultralytics/ultralytics/pull/25656
* Name the classification input in the export calibration, benchmark and tuner data rows by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25698
* Report unimplemented predict arguments, refresh the predictor after training, and register tracker callbacks once per model by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25688
* Remove brittle Hailo model-specific recipe by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25728
* Move documentation FAQs to page ends by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25730
* Use Ultralytics YOLO in task page titles and lead copy by miles-deans-ultralytics in https://github.com/ultralytics/ultralytics/pull/25705
* Align depth postprocessing across inference backends by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25628
* Validate YOLOE classes and enable prompt-free vocabulary workflows by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25691
* Fix grounding label scanning, caching, and reporting by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25678
* Fix the KITTI Eigen test split: 3 test drives were in train by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25650
* Fix unbounded per-track solution state in continuous streams by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25729
* docs: add YAML2ModelGraph integration documentation by Rahulbiradar9 in https://github.com/ultralytics/ultralytics/pull/25726
* Average DepthMetrics per image instead of pooling every valid pixel by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25648
* Gate `DepthLoss26` gradient pyramids per image by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25637
* Route spatial Albumentations by type and carry masks, polygons and keypoints through it by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25633

New Contributors
* Parth1353 made their first contribution in https://github.com/ultralytics/ultralytics/pull/25722
* Nikhi00718 made their first contribution in https://github.com/ultralytics/ultralytics/pull/25709
* nivosco made their first contribution in https://github.com/ultralytics/ultralytics/pull/25687
* Daniiiil1 made their first contribution in https://github.com/ultralytics/ultralytics/pull/25652

**Full Changelog**: https://github.com/ultralytics/ultralytics/compare/v8.4.116...v8.4.117

8.4.116

🌟 Summary

πŸš€ **v8.4.116** improves installation reliability, expands YOLOE and Platform workflows, strengthens tracking and export support, and refreshes YOLO26 documentation.

πŸ“Š Key Changes

- **πŸ”§ OpenCV compatibility fix β€” current PR 25702 by Y-T-G**
- Raises the minimum `opencv-python` version from `4.6.0` to `4.7.0`.
- Keeps the exclusion for `4.13.0.90`, which is affected by a FIPS self-test crash.
- Removes an outdated ONNX DNN backend requirement check.
- This aligns the dependency with `cv2.imdecodemulti`, which Ultralytics uses internally.

- **🧠 Reusable YOLOE prompt embeddings**
- Adds `save_prompt_embeddings()` and `load_prompt_embeddings()` for storing text or visual prompt configurations in NPZ files.
- Profiles are validated against the source YOLOE model and can be reused before exporting to formats such as ONNX, OpenVINO, TensorRT, CoreML, LiteRT, and RKNN.
- Exported models remain standard single-input models and do not require the NPZ file at runtime.

- **πŸ“š Improved model guidance**
- Reworks the model index into a task-and-mode comparison table.
- Positions **[YOLO26](https://docs.ultralytics.com/models/yolo26/)** as the recommended model for new projects, with YOLO11 as a mature production alternative.
- Clarifies support for YOLO12, OBB, SAM models, YOLOE, YOLO-World, RT-DETR, and other model families.
- Adds a YOLO26 custom-dataset training video and highlights monocular depth estimation.

- **🎯 Broader and safer tracking support**
- Documents and supports OBB tracking alongside detection, segmentation, and pose.
- Rejects unsupported semantic and depth tracking tasks with a clear error before processing begins.
- Skips unnecessary camera-motion compensation work when `gmc_method: none`.
- Keeps OC-SORT observation history bounded on all track lifecycle paths.

- **πŸ“¦ More efficient model export**
- Streams ONNX and QNN calibration data instead of retaining all transformed images in memory.
- Reduces calibration memory usage substantially for large datasets.
- Updates anchor creation to use CoreML-friendly tensor operations, improving dynamic CoreML export compatibility.

- **πŸ§ͺ Depth and segmentation fixes**
- Excludes ground-truth depth values outside the configured valid range during calibration, keeping calibration consistent with validation metrics.
- Fixes FP16 segmentation with class-agnostic NMS.
- Preserves YOLOE one-to-one classifier weights during linear probing, preventing a severe accuracy drop.
- Makes pose activation-map gradients compatible with autograd and `torch.compile`.

- **πŸ–ΌοΈ Visualization and analytics improvements**
- Restores percentage labels in analytics pie charts.
- Speeds up semantic-mask overlay rendering by replacing repeated full-image scans with a palette lookup.

- **☁️ Expanded Ultralytics Platform workflows**
- Adds documented custom metadata support for datasets, images, projects, and models.
- Supports nested metadata, metadata search, NDJSON image metadata, and Dataset Ingest API uploads.
- Refreshes Platform integration screenshots and documents native Platform support for YOLOv8 and YOLOv5.
- Refactors Platform callbacks to load only where needed, reducing unnecessary imports in prediction, validation, and export paths.

- **πŸ›‘οΈ Reliability and infrastructure**
- Makes downloads atomic, preventing concurrent test or application processes from reading partially written files.
- Updates CI runner images to Node.js 24 for compatibility with newer tooling.
- Refreshes OpenVINO benchmark data across Intel CPUs and NPUs.
- Improves documentation deployment detection when configuration defaults change.

🎯 Purpose & Impact

- βœ… **Fewer installation failures:** Users relying on OpenCV image decoding now receive a compatible version automatically.
- πŸš€ **Simpler YOLOE deployment:** Prompt configurations can be prepared once and reused across multiple export targets.
- πŸ’Ύ **Lower memory usage:** Large ONNX and QNN calibration jobs are more practical, especially on limited-memory systems.
- πŸŽ₯ **More capable tracking:** OBB tracking is now clearly supported, while unsupported tasks fail with actionable messages instead of obscure runtime errors.
- πŸ“ˆ **Better model fine-tuning:** YOLOE linear probing and depth calibration now preserve pretrained performance more reliably.
- 🧩 **Improved deployment compatibility:** Dynamic CoreML exports and FP16 segmentation workflows are more robust.
- πŸ” **Better Platform organization:** Custom metadata helps teams track provenance, review status, equipment, projects, and deployment context.
- πŸ“– **Clearer onboarding:** The refreshed model documentation makes it easier to choose the right Ultralytics model and understand its supported modes.

What's Changed
* Fix analytics pie chart percentage labels by rudrakumar07 in https://github.com/ultralytics/ultralytics/pull/25600
* Prevent concurrent download cache corruption by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25612
* Fix dynamic CoreML anchor export by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25619
* Refactor Ultralytics Platform integration by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25622
* Fix FP16 end-to-end segmentation with class-agnostic NMS by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25613
* Preserve YOLOE one-to-one classifiers during linear probing by Y-T-G in https://github.com/ultralytics/ultralytics/pull/25607
* Name the PyPI version check step by MGPOCKY in https://github.com/ultralytics/ultralytics/pull/25606
* Stream ONNX and QNN calibration data by amanharshx in https://github.com/ultralytics/ultralytics/pull/25617
* Exclude out-of-range ground truth from depth calibration by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25614
* Build semantic overlays in a single pass by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25585
* Add reusable YOLOE prompt embedding profiles by zgh2022 in https://github.com/ultralytics/ultralytics/pull/25572
* Remove stale reproduce command from Chinese depth notes by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25624
* Refresh Platform integration screenshots by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25627
* Update `openvino 2026.2.1` benchmarks with Intel 155H, 258V and 358H systems by lakshanthad in https://github.com/ultralytics/ultralytics/pull/25360
* Docs: Update "What is Ultralytics Platform?" section (include YOLOv8 & YOLOv5) by sergiuwaxmann in https://github.com/ultralytics/ultralytics/pull/25641
* Add https://youtu.be/7lZa3Yi2kbo to docs by RizwanMunawar in https://github.com/ultralytics/ultralytics/pull/25642
* Update docs landing new banner to depth estimation by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25645
* docs: Update depth estimation tip to specify monocular depth estimation by onuralpszr in https://github.com/ultralytics/ultralytics/pull/25649
* Bump eviden-actions/clean-self-hosted-runner from 1 to 1.4.34 in /.github/workflows by dependabot[bot] in https://github.com/ultralytics/ultralytics/pull/25651
* Include OBB in the tracking task summaries by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25661
* Skip the GMC warp when a tracker sets `gmc_method: none` by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25636
* Bound the OC-SORT observation history on every recording path by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25638
* Refuse semantic and depth tracking instead of crashing by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25665
* Upgrade CI runner images to Node 24 by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25673
* Bump eviden-actions/clean-self-hosted-runner from v1.4.34 to v1.4.35 in /.github/workflows by UltralyticsAssistant in https://github.com/ultralytics/ultralytics/pull/25680
* Reorder the models nav and replace the index list with a task and mode chooser by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25659
* Document image upload metadata by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25697
* Deploy docs when `ultralytics/cfg/default.yaml` changes by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25663
* Fix pose activation map gradients by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25694
* Document custom metadata for platform resources by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25700
* Raise minimum `opencv-python` to 4.7.0 by Y-T-G in https://github.com/ultralytics/ultralytics/pull/25702

New Contributors
* MGPOCKY made their first contribution in https://github.com/ultralytics/ultralytics/pull/25606

**Full Changelog**: https://github.com/ultralytics/ultralytics/compare/v8.4.115...v8.4.116

8.4.115

πŸ“Š Key Changes

- πŸ” **Introduced validated Platform CLI authentication**
- Log in with `yolo login API_KEY`
- Remove credentials with `yolo logout`
- API keys are checked against the Platform before being saved.

- πŸ”„ **Added settings migration to schema `0.0.7`**
- Existing compatible settings, such as custom dataset and run directories, are preserved.
- Legacy HUB configuration and incompatible HUB API keys are removed automatically.
- Users with old credentials are directed to create a Platform API key.

- 🧹 **Removed the legacy `ultralytics.hub` package**
- HUB authentication, remote training sessions, model loading, exports, dataset utilities, callbacks, and HUB-specific exceptions have been retired.
- HUB-related API references, documentation pages, navigation entries, and the HUB example notebook were also removed.

- 🧠 **Simplified model and trainer workflows**
- Models no longer load directly from HUB URLs.
- Training no longer manages HUB sessions, remote checkpoints, heartbeats, or HUB-specific training arguments.
- Platform callbacks remain available for streaming training information.

- πŸ“š **Updated documentation and examples**
- Guides, notebooks, CLI help, and API documentation now reference the [Ultralytics Platform](https://platform.ultralytics.com/) instead of HUB.
- Platform authentication and login commands are included in the quickstart and CLI documentation.

- βœ… **Expanded test coverage**
- Added tests for settings migration, API-key validation, login, and logout behavior.

🎯 Purpose & Impact

- ✨ **A clearer user experience:** Platform is now the primary destination for dataset management, training, and deployment, avoiding confusion between HUB and Platform services.
- ⚑ **Simpler authentication:** The new `yolo login` command validates credentials directly and provides a more intuitive alternative to manually editing settings.
- πŸ› οΈ **Cleaner and easier-to-maintain code:** Removing obsolete HUB components reduces dependencies, integration complexity, and potential maintenance issues.
- πŸ”’ **Safer upgrades:** Existing user settings are migrated instead of being reset, while outdated or incompatible HUB keys are discarded.
- ⚠️ **Compatibility consideration:** Applications that import `ultralytics.hub`, use HUB training sessions, load models from HUB URLs, or rely on HUB-specific utilities must migrate to [Ultralytics Platform](https://platform.ultralytics.com/) workflows.
- πŸš€ **Recommended next step:** Create a Platform API key and authenticate with:

bash
yolo login YOUR_API_KEY


For no-code dataset annotation, training, and deployment, use the [Ultralytics Platform](https://platform.ultralytics.com/).

What's Changed
* Deprecate HUB in favor of Ultralytics Platform by sergiuwaxmann in https://github.com/ultralytics/ultralytics/pull/25608


**Full Changelog**: https://github.com/ultralytics/ultralytics/compare/v8.4.114...v8.4.115

8.4.114

πŸ“Š Key Changes

- **Clearer Ultralytics Platform errors and quieter retries** β€” PR 25581 by glenn-jocher:
- Platform URI resolution now uses `GET` instead of `HEAD`, preserving the detailed error messages returned by the Platform.
- API errors such as invalid credentials, inaccessible datasets, and malformed pose labels now include actionable details.
- Console-output upload failures no longer create a feedback loop where logged retry warnings trigger additional failed uploads.
- Platform requests now stop early when no API key is available, and invalid credentials disable further attempts.

- **Improved exported-model validation**:
- Static ONNX, TensorRT, OpenVINO, and similar models now automatically reuse the image size stored in export metadata.
- Users no longer need to manually provide the exact export `imgsz` during validation. βœ…

- **More reliable model export and deployment**:
- Fixed GPU device mismatches during TorchScript inference by ensuring generated anchors follow the runtime device.
- Prompt-free YOLOE exports now work correctly with NCNN and Paddle formats.
- Loading a TorchScript archive as if it were a PyTorch checkpoint now produces a clearer error message.
- Paddle export compatibility was improved for newer Python and x2paddle environments.

- **Faster LiteRT CPU inference**:
- LiteRT now uses the configured number of CPU threads, enabling multi-core inference.
- Raspberry Pi 5 LiteRT benchmarks were corrected for YOLO26n and YOLO26s, showing substantially lower latency than previously reported. ⚑

- **Fixes for SAM3, visualization, and pose rendering**:
- SAM3 semantic prediction now defines the required mask threshold and avoids an `AttributeError`.
- Class activation maps safely handle class IDs outside a model’s output range.
- Pose keypoints and limbs located exactly on image borders are now rendered correctly instead of being silently dropped.

- **Improved training and data pipelines**:
- BGR augmentation now applies correctly to semantic segmentation and depth training.
- Distributed validation no longer crashes when the total batch size exceeds the number of validation images.
- Dataset YAML validation handles empty `names` fields more safely.
- Analytics line charts now accumulate counts across the configured update window instead of resetting every frame.

- **Documentation and maintenance updates**:
- Added missing validation documentation for `channels_last`.
- Documented class remapping and depth-loss training parameters.
- Updated augmentation support tables for semantic and depth tasks.
- Fixed Intel DL Streamer installation links and similarity-search examples.
- Removed several redundant regression tests to reduce test-suite maintenance overhead. πŸ“š

🎯 Purpose & Impact

- πŸ› οΈ **Faster troubleshooting:** Platform failures now explain what went wrong, helping users fix dataset, authorization, and configuration issues without repeated trial and error.
- πŸ” **More stable automation:** Console logging will no longer feed failed messages back into Platform upload retries, reducing noisy logs and unnecessary network traffic.
- βœ… **Simpler validation:** Exported models can generally be validated without manually matching their original image size and batch settings.
- πŸš€ **Better edge performance:** Multi-core LiteRT support can significantly improve CPU inference speed on devices such as Raspberry Pi 5.
- πŸ“¦ **Broader deployment compatibility:** TorchScript, NCNN, Paddle, and other export paths are more dependable across devices and Python environments.
- 🎯 **More robust vision workflows:** SAM3, pose visualization, CAM generation, depth, semantic segmentation, and distributed validation now handle common edge cases more gracefully.
- πŸ“– **Clearer documentation:** Users can more easily discover supported arguments and follow current Intel and similarity-search setup instructions.

What's Changed
* Enable multi-core Google LiteRT CPU inference by lakshanthad in https://github.com/ultralytics/ultralytics/pull/25562
* Update Raspberry Pi 5 benchmarks with Google LiteRT using multi-cores by lakshanthad in https://github.com/ultralytics/ultralytics/pull/25564
* Fix `AttributeError` on `mask_threshold` in SAM3 semantic prediction by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25563
* Fix installation guide links in Intel DL Streamer documentation by onuralpszr in https://github.com/ultralytics/ultralytics/pull/25574
* Remove tests added alongside small bug-fix PRs by Laughing-q in https://github.com/ultralytics/ultralytics/pull/25578
* Reuse imgsz from export metadata when validating static exported models by synml in https://github.com/ultralytics/ultralytics/pull/25559
* Document channels_last in the validation args table by synml in https://github.com/ultralytics/ultralytics/pull/25561
* Apply the bgr augmentation to semantic and depth training by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25580
* Fix IndexError in class_activation_map with out-of-range classes by leoventuroso in https://github.com/ultralytics/ultralytics/pull/25582
* Fix `Annotator.kpts()` dropping keypoints and limbs on image borders by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25565
* Fix: Analytics line chart total_counts resets before update_graph consumes it by Zenka737 in https://github.com/ultralytics/ultralytics/pull/25567
* Fix NCNN and Paddle export of prompt-free YOLOE models by Y-T-G in https://github.com/ultralytics/ultralytics/pull/25568
* Fix DDP error when total batch size is higher than validation images by Y-T-G in https://github.com/ultralytics/ultralytics/pull/25576
* Document depth loss gains and attribute semantic and depth in the argument tables by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25577
* fix `Python` syntax error in `similarity-search` solution by RizwanMunawar in https://github.com/ultralytics/ultralytics/pull/25579
* Fix TorchScript GPU inference device mismatch by Y-T-G in https://github.com/ultralytics/ultralytics/pull/25569
* Surface Platform error messages and stop the console-output retry loop by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25581

New Contributors
* leoventuroso made their first contribution in https://github.com/ultralytics/ultralytics/pull/25582

**Full Changelog**: https://github.com/ultralytics/ultralytics/compare/v8.4.113...v8.4.114

8.4.113

πŸ“Š Key Changes

- **Qualcomm Dragonwing IQ-8275 QNN export**
- Adds `iq-8275` and `qcs8275` as QNN export targets using Qualcomm SoC model 82.
- Centralizes the mapping between supported QNN targets and their HTP or SoC provider options.
- Adds documentation for supported Snapdragon and Dragonwing targets, including the unsupported IQ-615.
- Enables QNN export testing on Linux x86-64 with `onnxruntime-qnn==2.4.0`.
- Example usage: `model.export(format="qnn", name="iq-8275")`.
- Requires a compatible Qualcomm/Yocto BSP and target-side QNN, FastRPC, DSP firmware, and driver components.

- **New class activation heatmaps for prediction πŸ”₯**
- Replaces the previous `visualize=True` feature-map dump with a more useful LayerCAM-style heatmap.
- Saves one heatmap image per input, showing which image regions influenced the predicted class scores.
- Respects confidence and class filters and is available for PyTorch models.
- Reduces output clutter compared with the former multi-file feature-map visualization.

- **More accurate attention FLOPs reporting πŸ“Š**
- THOP-based profiling now counts functional attention matrix multiplications in YOLO12 attention blocks.
- Models containing area attention are measured at the requested image size rather than extrapolated from a small stride-sized input.
- Reported GFLOPs should better reflect the real computational cost of attention-heavy models.

- **Improved RKNN and quantized export support**
- Normalizes detection and pose coordinates during INT8 RKNN export to preserve class-score precision.
- Restores coordinates at runtime for RKNN inference.
- Adds compatibility handling for current `rknn-toolkit2` dependencies, including `setuptools<82`.
- Improves ONNX compatibility and cleans up temporary normalized graphs after export.

- **Export and runtime reliability fixes πŸ› οΈ**
- Resets detection shape caches at TorchScript, ONNX, and OpenVINO export boundaries.
- Avoids redundant TorchScript retracing.
- Replaces ONNX advanced indexing with `gather` where needed.
- Fixes YOLOE-26 prompt-free RKNN export for detection and segmentation.
- Corrects pose loss selection for end-to-end models using non-Pose26 heads.
- Prevents C2PSA failures when its channel count is below 64.
- Fixes MuSGD handling of custom model head locations and higher-rank parameters.

- **Performance and stability improvements ⚑**
- Vectorizes Deep OC-SORT global motion compensation operations.
- Reduces temporary memory usage and plotting time for segmentation masks by processing them in row bands.
- Keeps accumulated heatmap overlays visible when a tracking frame temporarily contains no detections.
- Prevents grayscale video stream failures from killing readers or crashing inference.
- Makes mixed-text ordering deterministic across processes and distributed workers.
- Keeps profiler samples when runtime variance reaches zero.

- **Documentation consistency and accuracy πŸ“š**
- Establishes one canonical task and mode order across code, documentation, tables, and the Ultralytics Platform.
- Consolidates supported-task tables into a shared macro and reports model-family-specific support more accurately.
- Corrects multiple docstrings, doctest examples, export claims, task descriptions, and API references.
- Updates Hailo, QNN, GraphDef, RKNN, and other integration pages with clearer model and hardware limitations.

🎯 Purpose & Impact

- **For Qualcomm users:** IQ-8275 and QCS8275 devices can now be targeted directly during QNN export, simplifying deployment to Dragonwing hardware. Hardware-side BSP compatibility must still be verified.
- **For model developers:** Heatmaps provide a clearer way to understand model decisions, while corrected FLOPs estimates make performance comparisons more trustworthy.
- **For edge deployment:** RKNN and QNN improvements increase export compatibility and improve quantized inference reliability on specialized accelerators.
- **For training workflows:** MuSGD, pose-loss, C2PSA, and higher-rank tensor fixes reduce silent training errors and improve support for custom architectures.
- **For tracking and streaming applications:** Video recovery, heatmap persistence, and Deep OC-SORT updates improve robustness in real-world, imperfect inputs.
- **For documentation users:** Shared and empirically validated compatibility tables make it easier to determine which model family, task, and deployment target is supported. πŸš€

What's Changed
* Fix the dangling chi2inv95 reference in the Kalman gating distance docstring by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25516
* Set imgsz in SAM pre_transform docstring examples by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25512
* Consolidate export task tables into a shared macro and correct unproven claims by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25523
* docs: fix missing 'to' in Probs description by rudrakumar07 in https://github.com/ultralytics/ultralytics/pull/25522
* keep the mixed text order stable across processes by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25540
* Vectorize the Deep OC-SORT GMC warp and drop a redundant mean copy by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25534
* Fix MuSGD head grouping for custom backbones by fcakyon in https://github.com/ultralytics/ultralytics/pull/25532
* Fix Docker CI failures and export warnings by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25525
* Keep profiler samples when the run time variance is zero by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25513
* Fix MuSGD batching for higher-rank parameters by songjiahao-wq in https://github.com/ultralytics/ultralytics/pull/25317
* Fix PoseModel using PoseLoss26 for non-Pose26 heads when end2end=True by Zenka737 in https://github.com/ultralytics/ultralytics/pull/25261
* Replace pytube/pafy with `yt-dlp` for YouTube streams by ambitious-octopus in https://github.com/ultralytics/ultralytics/pull/16336
* Keep stream reader alive when grayscale frame read fails by raimbekovm in https://github.com/ultralytics/ultralytics/pull/24709
* Revert "Replace pytube/pafy with `yt-dlp` for YouTube streams" by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25546
* Count the attention matmuls YOLO12 area-attention runs functionally by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25545
* Clarify IoA wording in Copy-Paste augmentation documentation by gizembm in https://github.com/ultralytics/ultralytics/pull/25528
* fix: prevent C2PSA division by zero when c < 64 by rudrakumar07 in https://github.com/ultralytics/ultralytics/pull/25517
* Fix supported-tasks table rendering on docs.ultralytics.com by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25544
* correct the declared output in fourteen docstring examples by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25543
* Remove the unmatchable printed output from the Kalman filter docstring examples by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25533
* Describe what emojis() does to the HUBModelError message by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25538
* Restore the supported-tasks macro and drop the dead model_name sets by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25550
* Render supported tasks per model family by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25551
* Use one canonical task and mode order everywhere by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25552
* Replace predict feature-map dumps with class activation heatmaps by Y-T-G in https://github.com/ultralytics/ultralytics/pull/25548
* Reduce `Annotator.masks` in row bands to cut mask plotting time and memory by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25554
* Fix `Heatmap` overlay disappearing on frames without tracks by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25556
* Fix YOLOE-26 prompt-free RKNN export crash by zgh2022 in https://github.com/ultralytics/ultralytics/pull/25536
* Fix RKNN export by pinning package versions by lakshanthad in https://github.com/ultralytics/ultralytics/pull/25529
* Fix RKNN INT8 exports returning all-zero class scores by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25524
* Fix ECC global motion compensation warping against the first frame by JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25555
* replace the set_logging stream handler instead of accumulating one per call by raimbekovm in https://github.com/ultralytics/ultralytics/pull/25541
* Add Dragonwing IQ-8275 QNN export target by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25558

New Contributors
* songjiahao-wq made their first contribution in https://github.com/ultralytics/ultralytics/pull/25317
* zgh2022 made their first contribution in https://github.com/ultralytics/ultralytics/pull/25536

**Full Changelog**: https://github.com/ultralytics/ultralytics/compare/v8.4.112...v8.4.113

Page 1 of 75

Links

Releases

Has known vulnerabilities

Β© 2026 Safety CLI Cybersecurity Inc. All Rights Reserved.