Skip to content

Releases: ultralytics/ultralytics

v8.4.120 - Avoid nondeterministic CUDA anchor cumsum (#25806)

Choose a tag to compare

@github-actions github-actions released this 13 Aug 22:38
b103ba8

🌟 Summary

Ultralytics 8.4.120 improves CUDA training determinism and TensorFlow export reliability, while expanding documentation for LLM workflows and AI coding-agent integrations. 🚀

📊 Key Changes

  • Deterministic CUDA anchor generation by @glenn-jocher

    • Replaced CUDA cumulative-sum operations with deterministic arange-based generation when creating detection anchors.
    • Removes recurring cumsum_cuda_kernel warnings during deterministic training.
    • Preserves runtime device handling for traced and TorchScript GPU models, avoiding device information being incorrectly fixed during tracing.
  • More reliable TensorFlow exports 🛠️

    • Removed the obsolete NVIDIA package index from TensorFlow and non-YOLO export dependency installation.
    • onnx-graphsurgeon can now be installed directly from PyPI, reducing DNS and connectivity issues—especially in CPU-based CI environments and isolated export setups.
  • New Ultralytics LLM documentation 🤖

    • Documents the OpenAI-compatible LLM interface for text, image, streaming, asynchronous, provider-specific, and YOLO-combined workflows.
    • Provides examples for OpenAI-compatible services such as DeepSeek, Kimi, Z.AI GLM, OpenRouter, and local servers.
    • Updates the default documented and runtime model to gpt-5.6-luna.
  • New Agent Skills integration guide 🧩

    • Documents the official ultralytics/skills repository.
    • Covers AI-agent skills for model selection, datasets, training, tuning, inference, and export.
    • Includes installation guidance for Claude Code, Codex, and other compatible agents.
  • Version update

    • Bumped the Ultralytics package version from 8.4.119 to 8.4.120.

🎯 Purpose & Impact

  • Cleaner deterministic training logs: Users no longer see repeated CUDA cumsum warnings that can obscure important training messages.
  • More predictable model tracing: TorchScript and traced GPU models retain runtime device behavior without sacrificing the deterministic anchor-generation fix.
  • Smoother TensorFlow export setup: Fewer external package-index dependencies should improve export reliability in restricted networks, CI pipelines, and CPU-only environments.
  • Better LLM discoverability: Developers can more easily connect YOLO detection results with language and vision models through a consistent interface.
  • Improved AI-assisted development: Agent Skills provide structured, workflow-specific guidance for using Ultralytics tools with supported coding agents.
  • ℹ️ No major model architecture changes were introduced in this release; the primary technical improvement is improved determinism and export robustness.

What's Changed

New Contributors

Full Changelog: v8.4.119...v8.4.120

v8.4.119 - Enable OpenVINO NPU_TURBO for classification models on supported NPUs (#25784)

Choose a tag to compare

@github-actions github-actions released this 13 Aug 19:37
61f4fe7

🌟 Summary

v8.4.119 improves Intel NPU classification performance with OpenVINO, strengthens detection and tracking reliability, expands Platform integration, and refreshes documentation and developer tooling. 🚀

📊 Key Changes

  • OpenVINO NPU_TURBO for classification

    • Enables NPU_TURBO automatically for classification models running on supported Intel NPU devices.
    • Applies only when the device advertises support, preserving existing behavior for other tasks, devices, and drivers.
    • Measured classification latency improvements of approximately 42–52% on an Intel Core Ultra 9 185H, with bit-identical accuracy across tested configurations.
    • Turbo mode is intentionally limited to classification because larger image sizes showed little benefit and could consume unnecessary power.
  • 🔌 Platform SDK exposed from ultralytics

    • Python 3.11+ users can access Platform, AsyncPlatform, APIError, and APIConnectionError directly from the main package.
    • Imports are lazy, so the SDK is loaded only when needed.
    • Python 3.8–3.10 users receive a clear compatibility message when requesting Platform exports.
  • 🛰️ More efficient Platform training callbacks

    • Subsequent metrics, telemetry, and model uploads now reuse the registered model ID instead of repeatedly resolving project and model names.
    • Reduces internal Platform traffic and improves reliability during long training runs.
  • 🛡️ Improved tracking robustness

    • BYTETracker now ignores detections with zero or negative width or height before creating tracks, preventing invalid Kalman filter states.
    • Kalman filter operations were simplified to use direct slicing instead of unnecessary matrix operations.
    • Removed redundant array copies in multi-object tracking paths.
  • 🎯 Safer detection export postprocessing

    • Detection top-k selection is now limited to the number of available anchors.
    • Prevents export failures on very small input sizes while preserving normal behavior for standard inputs.
  • 🧩 Corrected CopyPaste augmentation probability

    • The CopyPaste transform now respects its configured probability in flip mode.
    • Previously, eligible images could receive the augmentation unconditionally.
  • 📚 Documentation and usability updates

    • Updated supported-task banners to cover all seven supported tasks, including semantic segmentation and depth estimation.
    • Added the Cmd/Ctrl+Delete image-deletion shortcut to the Platform annotation guide.
    • Added a YOLO26 LiteRT export and mobile deployment tutorial video.
    • Restored light, dark, and system theme controls in the documentation.
    • Removed documentation embeds that did not render correctly on the live site.
    • Improved ASCII string checks using Python’s built-in string operation for faster annotation rendering.
  • 🧰 CI maintenance

    • Updated the self-hosted runner cleanup action used across several CI jobs.

🎯 Purpose & Impact

  • 🚀 Faster edge inference: Supported Intel NPU users running classification models should see substantially lower latency without sacrificing accuracy.
  • 🔋 Better power awareness: Restricting turbo mode to classification avoids enabling a potentially costly optimization where it provides little practical benefit.
  • 🤝 Simpler Platform development: Python 3.11+ applications can use Platform SDK functionality through familiar top-level ultralytics imports.
  • 📈 More reliable training runs: Model ID reuse reduces repeated lookup work and supports smoother metric streaming and checkpoint uploads.
  • 🛡️ Fewer runtime and export failures: Invalid tracking boxes and small-input detection exports are handled safely instead of producing corrupted states or indexing errors.
  • 🎛️ More predictable augmentation: CopyPaste now behaves according to its documented probability setting.
  • 🌐 Improved user experience: Refreshed documentation, working theme controls, clearer task coverage, and better Platform guidance make the ecosystem easier to use for both new and experienced users.

What's Changed

New Contributors

Full Changelog: v8.4.118...v8.4.119

v8.4.118 - Add standalone LLM model interface (#25761)

Choose a tag to compare

@github-actions github-actions released this 11 Aug 23:49
9526203

🌟 Summary

Ultralytics v8.4.118 introduces a standalone OpenAI-compatible LLM interface alongside YOLO, while improving OBB training, dataset handling, model training reliability, and documentation workflows. 🚀

📊 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

New Contributors

Full Changelog: v8.4.117...v8.4.118

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

Choose a tag to compare

@github-actions github-actions released this 09 Aug 17:10
878d385

🌟 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

Read more

v8.4.116 - Raise minimum `opencv-python` to 4.7.0 (#25702)

Choose a tag to compare

@github-actions github-actions released this 07 Aug 10:34
3bb651d

🌟 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 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

New Contributors

Full Changelog: v8.4.115...v8.4.116

v8.4.115 - Deprecate HUB in favor of Ultralytics Platform (#25608)

Choose a tag to compare

@github-actions github-actions released this 01 Aug 16:06
98a9cfd

🌟 Summary

v8.4.115 transitions Ultralytics from legacy HUB integrations to the streamlined Ultralytics Platform experience, with simpler authentication and a leaner training codebase. 🚀

📊 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 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 workflows.
  • 🚀 Recommended next step: Create a Platform API key and authenticate with:
yolo login YOUR_API_KEY

For no-code dataset annotation, training, and deployment, use the Ultralytics Platform.

What's Changed

Full Changelog: v8.4.114...v8.4.115

v8.4.114 - Surface Platform error messages and stop the console-output retry loop (#25581)

Choose a tag to compare

@github-actions github-actions released this 31 Jul 16:28
ee3fe3e

🌟 Summary

v8.4.114 improves reliability across Platform workflows, exported models, validation, edge inference, and advanced vision tasks—while delivering clearer errors and faster, more robust execution. 🚀

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

New Contributors

Full Changelog: v8.4.113...v8.4.114

v8.4.113 - Add Dragonwing IQ-8275 QNN export target (#25558)

Choose a tag to compare

@github-actions github-actions released this 30 Jul 23:43
ab0571e

🌟 Summary

🚀 Ultralytics 8.4.113 expands Qualcomm QNN deployment to Dragonwing IQ-8275 devices, improves model visualization and export reliability, and standardizes task support documentation across the project.

📊 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

New Contributors

Full Changelog: v8.4.112...v8.4.113

v8.4.112 - Document supported tasks for every export format (#25511)

Choose a tag to compare

@github-actions github-actions released this 29 Jul 17:36
4997945

🌟 Summary

Release v8.4.112 makes model export support much clearer and more reliable, with comprehensive task documentation across formats and a fix enabling DEEPX classification exports. 📦✅

📊 Key Changes

  • Documented supported tasks for every export format 📚

    • Added consistent Supported Tasks tables to 20 integration pages.
    • Clearly lists support for all seven Ultralytics tasks:
      • Object detection
      • Instance segmentation
      • Semantic segmentation
      • Pose estimation
      • OBB detection
      • Classification
      • Depth estimation
    • Documents model-family limitations, such as semantic segmentation and depth estimation being YOLO26-only for many formats.
    • Explicitly identifies unsupported combinations, including:
      • Axelera depth estimation
      • Hailo YOLO26 instance segmentation, pose, and OBB
      • Sony IMX500 semantic segmentation, OBB, and depth estimation
  • Verified export coverage across formats 🔍

    • Completed 77 local export and inference checks across seven tasks.
    • Coverage was verified for TorchScript, ONNX, OpenVINO, CoreML, TensorFlow formats, PaddlePaddle, MNN, NCNN, ExecuTorch, and LiteRT.
    • TensorRT and RKNN support was confirmed through existing CI test matrices.
  • Fixed DEEPX classification export 🛠️

    • Corrected calibration dataset discovery for classification models.
    • Classification datasets store their image directory as root, rather than img_path; the exporter now handles this correctly.
    • Updated DEEPX smoke tests to cover every task-specific default model instead of only YOLO26 detection.
  • Removed outdated GraphDef benchmark restrictions

    • TensorFlow GraphDef benchmarks no longer reject OBB or pose models based on obsolete limitations.
  • Minor documentation and release updates

    • Updated the package version to 8.4.112.
    • Improved wording around Huawei Ascend, TensorFlow GraphDef, NCNN, RKNN, and Hailo support.
    • Clarified that Edge TPU task support may still involve CPU execution for unsupported operations.

🎯 Purpose & Impact

  • Easier format selection: Users can now quickly determine whether their task and model family are compatible with a target export format. 🧭
  • Fewer failed deployments: Explicit support tables reduce confusion caused by previously undocumented or implied limitations.
  • Improved classification deployment: DEEPX users can now export classification models successfully, including through automated smoke testing.
  • Better confidence in task support: Broad empirical validation helps ensure documentation reflects actual export and inference behavior.
  • More accurate benchmarking: Removing outdated GraphDef checks allows supported OBB and pose workflows to be benchmarked properly.
  • Important practical note: A task marked as supported does not always mean the entire model runs on the accelerator; formats such as Edge TPU may execute some operations on the CPU.

What's Changed

Full Changelog: v8.4.111...v8.4.112

v8.4.111 - Add Huawei Ascend NPU training support (#25500)

Choose a tag to compare

@github-actions github-actions released this 29 Jul 16:22
e945e59

🌟 Summary

🚀 Ultralytics 8.4.111 expands hardware support with validated Huawei Ascend NPU training, broader accelerator compatibility, and important tracking, MPS, deployment, and documentation improvements.

📊 Key Changes

  • Huawei Ascend NPU training support 🧠

    • Added single- and multi-NPU training and validation through torch_npu.
    • Supports standard training features including AMP, checkpointing, resume, AutoBatch, profiling, memory management, and validation.
    • Multi-NPU training uses Huawei’s HCCL distributed backend.
    • Example device selections include device=npu:0 and device=npu:0,1.
    • Ascend documentation now covers the workflow from training through .om export and deployment.
  • Unified accelerator handling ⚙️

    • Device behavior is now derived from the selected PyTorch device rather than being hard-coded for CUDA.
    • Improves compatibility with:
      • Huawei Ascend npu
      • Intel xpu
      • AMD ROCm through PyTorch’s standard CUDA-style device interface
    • Distributed training now selects the appropriate backend: NCCL for NVIDIA, HCCL for Ascend, and XCCL for Intel.
  • AMD ROCm integration guide 🔴

    • Added documentation for training, validation, and inference on supported AMD GPUs using PyTorch ROCm.
    • Clarifies that ROCm uses device=0 or device=cuda:0, not device=rocm:0.
    • Clearly distinguishes supported ROCm workflows from currently unsupported or separate technologies such as MIGraphX, DirectML, and Ryzen AI NPU.
  • Improved accelerator-aware data loading and profiling 📈

    • Dataloaders, pinned memory, synchronization, memory checks, profiling, automatic batch sizing, and mixed precision now account for more device types.
    • NPU and XPU execution avoids unsupported operations such as torchvision NMS kernels where necessary.
  • Tracking and numerical stability improvements 🎯

    • Object counting now detects objects that pass through polygon regions between frames, even when no centroid is sampled inside the region.
    • Deep OC-SORT preserves homography precision.
    • Kalman filter states consistently use float64.
    • Re-identification features are stored safely as float32.
    • GMC matching now retains valid zero-variance and boundary-distance matches.
    • NumPy assignment now raises a clear error for infeasible cost matrices instead of potentially hanging.
  • Apple MPS reliability fixes 🍎

    • Avoids problematic in-place operations on strided MPS tensors across affected macOS and PyTorch versions.
    • Prevents autocast crashes on MPS with PyTorch versions older than 2.5.
  • Documentation and platform updates 📚

    • Added LabelMe dataset import instructions for converting offline annotations to YOLO format and uploading them to the Ultralytics Platform.
    • Updated Rust inference documentation for ultralytics-inference 0.0.32, including Intel CPU, GPU, and NPU device options.
    • Refreshed Raspberry Pi 5 YOLO26 benchmarks with LiteRT and clarified that LiteRT export must be performed off-device.
    • Added a monocular depth estimation tutorial to the YOLO26 documentation.
    • Normalized GPU names in usage telemetry to improve reporting consistency.

🎯 Purpose & Impact

  • 🌍 Broader hardware choice: Users can train Ultralytics models on Huawei Ascend NPUs, AMD GPUs, Intel accelerators, and NVIDIA GPUs through more consistent device handling.
  • 🚀 Easier enterprise and edge deployment: Ascend training now connects directly to existing export and deployment workflows, while AMD and Raspberry Pi guidance makes hardware-specific setup clearer.
  • 🧩 Less backend-specific code: The shared PyTorch device abstraction reduces the need for separate trainers or parallel implementations for each accelerator.
  • 📊 More dependable tracking: Object counters and trackers should behave more accurately in fast-motion, low-variance, and mixed-precision scenarios.
  • 🛡️ Improved reliability: MPS fixes prevent crashes and inconsistent detections, while the assignment fallback now fails safely on impossible inputs.
  • 📖 Better onboarding: New LabelMe, AMD, Ascend, Rust, Raspberry Pi, and depth resources help users move from dataset preparation to training and deployment more easily.
  • 🔢 The package version is updated to 8.4.111.

What's Changed

New Contributors

Full Changelog: v8.4.110...v8.4.111