Skip to content

Releases: ultralytics/ultralytics

v8.4.127 - Load exported YOLO models with the correct task across all 20 formats (#25886)

Choose a tag to compare

@github-actions github-actions released this 23 Aug 18:39
8e1eb77

🌟 Summary

🚀 v8.4.127 makes exported YOLO models reliably load with the correct task and model family, while improving deployment stability, training recovery, and dataset documentation.

📊 Key Changes

  • Correct task detection for exported models across all 20 formats by @artest08

    • Model loading now reads the task and architecture information embedded in export metadata instead of guessing from the filename or directory path.
    • Fixes segmentation exports being loaded as detection models, which previously caused masks to disappear.
    • Fixes pose exports losing keypoint outputs when weights are moved outside their training directory.
    • Correctly routes RT-DETR exports to the appropriate predictor, avoiding incorrect interpretation of its output format.
    • Applies consistently through both the Python API and CLI, making exported models safer to copy, deploy, and rename. 🎯
  • Improved OpenVINO inference reliability

    • Uses the appropriate throughput setting for single-device dynamic batching.
    • Adds a targeted fix for INT8 dynamic-shape segmentation faults on Intel AMX CPUs.
    • Reduces the risk of crashes in affected CPU inference and CI environments.
  • Safer training resume behavior

    • Resuming a run no longer replaces checkpoint weights with a custom pretrained model.
    • Preserves the actual model state, optimizer, scaler, EMA, and epoch from last.pt.
    • Restores distillation model handling during resume. 🔄
  • More robust result handling

    • Semantic segmentation and depth result indexing now preserves complete dense maps instead of accidentally returning only one image row.
    • Improves iteration and indexing behavior for depth and semantic results.
  • Expanded CoreML export support

    • nms=True now works for segmentation and pose exports in addition to detection.
    • Keeps masks and keypoints aligned with the boxes retained after suppression. 🍎
  • Tracking and YOLOE fixes

    • Corrects DeepOCSORT OCR appearance matching so zero-overlap objects are not incorrectly matched.
    • Aligns TrackTrack new-track prediction and confirmation behavior with its reference implementation.
    • Fixes YOLOE prompt-free segmentation training crashes during final validation.
  • Checkpoint and training reproducibility improvements

    • Custom Albumentations transforms are serialized as portable text representations rather than live Python objects.
    • YOLO26 documentation now explains the two-stage Objects365 pretraining and COCO fine-tuning process, embedded training logs, and checkpoint code revisions. 📚
  • More direct Ultralytics Platform dataset access

    • Documentation now links official dataset pages for all 52 publicly hosted datasets, including detection, segmentation, pose, depth, and OBB resources.
    • Users can preview samples, inspect statistics, clone datasets, annotate, train, and deploy through the Ultralytics Platform.
  • Documentation media delivery improvements

    • Documentation images and animations now use the CMS assets CDN, improving link previews and reliability across tools such as Slack and Telegram.
    • Several demonstrations were upgraded from static images to videos.

🎯 Purpose & Impact

  • More dependable deployment: Exported models now retain their intended behavior even when renamed or moved into a different folder—a common step in production workflows.
  • Correct predictions for specialized tasks: Segmentation masks, pose keypoints, and RT-DETR outputs are now handled by the correct predictors automatically.
  • Fewer interrupted training runs: Resume behavior is safer, and OpenVINO fixes reduce crashes on supported Intel hardware.
  • Better portability: Checkpoints containing custom augmentations can be loaded and shared more safely, although the original transform objects may still be needed when resuming with those augmentations.
  • Broader Apple deployment options: CoreML users can now export segmentation and pose models with integrated NMS processing.
  • Easier experimentation: Clearer YOLO26 training documentation and checkpoint metadata make it simpler to understand, reproduce, and fine-tune official models.
  • A smoother dataset workflow: Exact Platform links make it faster to move from dataset discovery to annotation, training, and deployment. 🚀

What's Changed

New Contributors

Full Changelog: v8.4.126...v8.4.127

v8.4.126 - Make restricted checkpoint loading thread-safe and 40% faster, simplify RLE prior (#25885)

Choose a tag to compare

@github-actions github-actions released this 21 Aug 14:14
3a65423

🌟 Summary

v8.4.126 makes restricted checkpoint loading safer and up to 40% faster in concurrent environments, while simplifying RLE loss calculations and preserving backward compatibility.

📊 Key Changes

  • 🔒 Thread-safe restricted checkpoint loading

    • Fixed a race condition when multiple threads loaded PyTorch checkpoints with restricted loading enabled.
    • The shared allow-list is now registered for the process lifetime instead of being temporarily removed when one thread finishes.
    • Added a regression test covering 32 concurrent restricted loads.
  • Faster restricted model loading

    • Only checkpoint globals actually referenced by a file are registered, rather than rebuilding a large allow-list for every load.
    • This reduces restricted-loading overhead by approximately 40% in affected cases.
  • 🛡️ Improved compatibility with secure loading

    • Restricted loading now requires PyTorch functionality available from version 2.6 onward; older versions continue to fall back to standard loading behavior.
    • Normal, unrestricted loading remains unchanged.
    • Official YOLO26 checkpoints, including YOLO26x, are protected from failures caused by concurrent loading.
  • 🧠 Simplified RLE prior calculation

    • Replaced the runtime multivariate distribution object with a simpler closed-form implementation.
    • Retained existing checkpoint buffers so models saved before v8.4.126 can still resume correctly.
    • Improved numerical behavior under mixed-precision training.
  • 🏷️ Version update

    • Updated the Ultralytics package version from 8.4.125 to 8.4.126.

🎯 Purpose & Impact

  • More reliable production inference: Multi-threaded services and Platform CPU workers can load models concurrently without intermittent checkpoint errors.
  • 🚀 Reduced startup and loading time: Restricted checkpoint loading performs less unnecessary work, benefiting applications that frequently load models.
  • 🔐 Maintained security benefits: Safe loading continues to limit checkpoint reconstruction to known, approved classes.
  • 🔄 Backward compatible: Existing unrestricted workflows and older saved model checkpoints continue to work as before.
  • 📉 Cleaner internal implementation: The RLE change removes unnecessary distribution-object overhead without changing the intended loss behavior.

What's Changed

  • Make restricted checkpoint loading thread-safe and 40% faster, simplify RLE prior by @pderrenger in #25885

Full Changelog: v8.4.125...v8.4.126

v8.4.125 - Speed up initial model loading (#25883)

Choose a tag to compare

@github-actions github-actions released this 21 Aug 10:26
329682a

🌟 Summary

Ultralytics 8.4.125 makes YOLO26 model startup significantly faster—up to 46% faster in fresh Python processes—while improving dependency loading and documentation consistency. 🚀

📊 Key Changes

  • Faster initial model loading (PR #25883 by @pderrenger):
    • TorchVision transforms are now imported only when a checkpoint actually contains them.
    • Matplotlib is loaded only when semantic-training label plots are requested.
    • Restricted checkpoint loading is substantially faster while retaining compatibility with older PyTorch versions.
    • Official YOLO26n and YOLO26x checkpoints showed approximately 44–46% faster model loading on an Apple M5 Pro.
    • Restricted loading improved from 451 ms to 94 ms for YOLO26n and from 517 ms to 162 ms for YOLO26x.
    • The common from ultralytics import YOLO import also became faster, improving from 558 ms to 471 ms.
  • 🧪 Expanded loading validation:
    • Verified restricted loading across YOLO26 detection, classification, segmentation, pose, OBB, depth, and semantic checkpoints.
    • Confirmed multiple model types can be loaded sequentially in one process.
    • Tested compatibility with internal torch.nn checkpoint classes.
  • 📦 Package version updated from 8.4.124 to 8.4.125.
  • 🔗 Canonical Ultralytics URLs (PR #25879 by @pderrenger):
    • Removed trailing slashes from Ultralytics URLs across 136 files, including documentation, examples, source code, configuration, and workflow files.
    • Updated several outdated or redirected external links, including dataset, CUDA/cuDNN, MediaPipe, and PASCAL VOC references.

🎯 Purpose & Impact

  • 🚀 Faster startup for developers and applications: Model-based scripts, services, notebooks, and command-line workflows begin running sooner, especially in fresh Python processes.
  • 🪶 Lower unnecessary import overhead: Users who do not use semantic label plotting or serialized TorchVision transforms avoid loading those large optional dependencies.
  • 🛡️ Safer and more reliable checkpoint handling: The updated loading logic preserves restricted loading behavior while supporting a broad range of official YOLO26 tasks and checkpoint formats.
  • 🔄 Minimal migration impact: No major model architecture or training behavior changes are introduced; existing YOLO26 workflows should continue to work normally.
  • 🧭 Cleaner documentation navigation: Consistent URL formatting and refreshed external links should reduce redirects, improve link maintenance, and provide more reliable access to guides.

What's Changed

Full Changelog: v8.4.124...v8.4.125

v8.4.124 - Restore dynamic image sizes for NMS exports (#25874)

Choose a tag to compare

@github-actions github-actions released this 20 Aug 14:11
5fff766

🌟 Summary

🚀 Ultralytics v8.4.124 restores reliable dynamic-size inference for exports with embedded NMS, while improving training stability, deployment compatibility, performance, and documentation.

📊 Key Changes

  • Dynamic NMS exports restored — PR #25874

    • ONNX, OpenVINO, and TensorRT exports with dynamic=True and nms=True once again support runtime image heights and widths.
    • Exported NMS now consistently respects the configured max_det limit instead of using the number of anchors from the export image size.
    • NMS coordinate normalization now uses the actual input dimensions at inference time.
    • Dynamic ONNX OBB exports are padded appropriately so candidate selection is not limited by the traced image size.
    • The existing export test matrix remains unchanged, preserving broad backend coverage.
  • Improved CoreML attention export

    • CoreML mlprogram exports now use a more compatible attention implementation to avoid GPU compilation crashes on recent Apple systems.
    • This is scoped to CoreML export and does not alter normal model execution.
  • More efficient RT-DETR training and TensorRT inference

    • RT-DETR denoising queries are capped at the configured query budget, preventing dense images from causing excessive memory use.
    • RT-DETR TensorRT Top-K processing now uses grouped selection for faster candidate filtering.
  • Training reliability fixes

    • Resumed training now preserves the weights from the checkpoint instead of accidentally reloading the original pretrained weights.
    • Training seeds now reach dataloader workers, making different seeds produce different augmentation and sampling sequences while preserving reproducibility.
    • Dataset construction no longer mutates shared training configuration values.
    • Deterministic training settings are always cleared when training finishes or fails.
    • AutoBatch now raises a clear error when no tested batch size fits, rather than silently falling back to an unrelated default.
  • Prediction and result-processing improvements

    • Reusing a model for predict() or track() no longer carries filters such as classes, max_det, or NMS settings into later calls.
    • GPU-to-CPU transfers in Results.save_txt(), save_crop(), and summary() are consolidated, reducing per-object synchronization overhead.
    • Segmentation mask encoding now transfers data to the CPU more efficiently.
    • Depth tensor inputs now use the expected BGR image order.
    • Coordinate restoration now handles stretched, nonuniform resizing correctly.
  • Export and platform updates

    • ONNX INT8 export uses less peak memory by releasing intermediate graphs earlier.
    • TensorRT dynamic optimization profiles now handle dynamic input dimensions more safely.
    • macOS dependency constraints avoid affected NumPy releases associated with Accelerate warnings.
    • Platform documentation now describes depth datasets, depth-map viewing, training requirements, and updated workflow behavior.
    • Hailo documentation now reflects current hardware names, AI HAT+ support, compiler generations, precision notes, and fixed-shape deployment requirements.
    • Tracking documentation now identifies TrackTrack as the default tracker for documented workflows.
    • CoreML documentation includes an updated YOLO26 INT8 deployment tutorial.

🎯 Purpose & Impact

  • More dependable deployment across input sizes 📐 — Dynamic exported models can process images at runtime sizes without silently bypassing confidence filtering or the max_det limit.
  • Correcter detections and coordinates 🎯 — Runtime-aware normalization and nonuniform scaling fixes help ensure boxes, keypoints, and OBB predictions remain accurately positioned.
  • Lower memory use and faster execution ⚡ — RT-DETR query capping, grouped Top-K selection, consolidated GPU transfers, and improved ONNX memory handling benefit both training and inference.
  • Safer long-running workflows 🔁 — Reused prediction models, resumed training, seeded dataloaders, and deterministic settings now behave more predictably.
  • Better edge and Apple deployment 🍎📦 — CoreML and Hailo export guidance and compatibility improvements make it easier to move YOLO models to supported hardware.
  • Clearer user guidance 📚 — Updated documentation better reflects actual defaults, supported tasks, deployment limitations, and Platform workflows.

What's Changed

New Contributors

Full Changelog: v8.4.123...v8.4.124

v8.4.123 - Accept existing depth dataset formats (#25859)

Choose a tag to compare

@github-actions github-actions released this 19 Aug 13:46
c00fbea

🌟 Summary

Ultralytics 8.4.123 expands depth-estimation dataset compatibility, allowing standard scaled PNG and floating-point NPY depth maps to be used directly across training, NDJSON conversion, and Ultralytics Platform workflows. 🚀

📊 Key Changes

  • 🗂️ Broader depth format support

    • Accepts plain 16-bit grayscale PNG depth maps.
    • Adds support for floating-point .npy depth maps with values stored in meters.
    • PNG files no longer require Ultralytics-specific embedded metadata.
  • ⚙️ Configurable depth scaling

    • Adds the optional depth_scale dataset YAML field.
    • Defaults to 1000, meaning PNG values are interpreted as millimeters.
    • Supports datasets with other conventions, such as KITTI (256) and Virtual KITTI 2 (100).
  • 🔗 Improved dataset pairing and validation

    • Depth files are matched by filename stem in parallel images/ and depth/ directories.
    • PNG files are preferred, with automatic fallback to NPY files.
    • Depth maps may use a smaller resolution than RGB images when their aspect ratios match.
    • Invalid values, including zero, NaN, and infinity, are safely handled.
  • 📥 NDJSON depth dataset support

    • Depth records now only require a paired depth.url.
    • Dataset-level depth_scale is preserved when converting NDJSON to YOLO format.
    • Large downloads are processed in batches to reduce memory usage.
  • ☁️ Ultralytics Platform integration

    • Depth datasets can now be uploaded, exported, and used for training on the Platform.
    • NDJSON exports include the depth task, scaling configuration, and paired depth URLs.
    • Depth estimation is now fully listed among the Platform’s supported task types.
  • 🧰 Dataset configurations updated

    • Built-in depth datasets now preserve their native storage scales instead of converting everything to meter-based metadata PNGs.
    • Documentation and tests were updated for ARKitScenes, DIODE, KITTI, TartanAir, Virtual KITTI 2, Depth8, and other depth datasets.

🎯 Purpose & Impact

  • Easier dataset adoption: Existing depth datasets can be used with less preprocessing and fewer custom conversion scripts.
  • 📦 Simpler, more portable files: Plain PNG and NPY formats work with common tools and do not depend on special PNG metadata.
  • 🎯 More accurate dataset handling: Dataset-specific scales preserve the intended precision and depth range.
  • 🚀 End-to-end depth workflows: Users can now prepare, upload, convert, and train depth datasets through the Ultralytics Platform.
  • ⚠️ Migration consideration: Older self-describing Ultralytics depth PNGs that rely on embedded metadata may need to be converted to the new scaled PNG format. See the depth dataset format documentation.

What's Changed

Full Changelog: v8.4.122...v8.4.123

v8.4.122 - Use canonical PNG depth maps (#25858)

Choose a tag to compare

@github-actions github-actions released this 19 Aug 10:01
fc96eac

🌟 Summary

v8.4.122 standardizes Ultralytics depth estimation around compact, self-describing 16-bit PNG depth maps—simplifying the data pipeline and significantly reducing storage requirements. 🖼️📉

📊 Key Changes

  • Canonical depth format introduced: Depth targets now use 16-bit PNG files with embedded metadata describing their meter range.
  • Invalid pixels are clearly represented: Pixel value 0 is reserved for missing or invalid depth values, allowing training and evaluation to ignore them safely.
  • New depth utilities added:
    • save_depth_png() writes depth maps in the required format.
    • load_depth() reconstructs meter-valued depth maps for training and inference.
  • NPY support removed: The depth loader, converters, manifests, path handling, and compatibility fallbacks no longer support .npy depth maps.
  • Dataset support updated: Built-in depth dataset configurations and generators—including Depth8, NYU Depth, KITTI, SUN RGB-D, DIODE, Hypersim, TartanAir, Virtual KITTI 2, and ARKitScenes—now produce and consume PNG depth maps.
  • NDJSON conversion updated: Depth records must use the linear-u16 PNG encoding contract.
  • Documentation and tests refreshed: Depth dataset guides, task documentation, reference pages, and validation tests now describe the PNG-only workflow.
  • Smaller published archives:
    • Depth8 archive reduced to approximately 8.9% of its previous size.
    • NYU Depth archive reduced to approximately 39.6% of its previous size. 🚀

🎯 Purpose & Impact

  • Lower storage and download costs: PNG compression substantially reduces dataset and hosted asset sizes.
  • More portable depth files: Each PNG contains the information needed to interpret its depth values, making files easier to move, inspect, and process independently.
  • Simpler, more consistent tooling: All supported depth datasets now follow one file format and one loading path.
  • Improved browser/display behavior: The encoding preserves valid depth information when 16-bit assets are viewed through systems that reduce them to 8-bit displays.
  • Important migration requirement: Existing custom datasets using .npy depth maps must be converted to the new metadata-enabled PNG format before use with this release. Existing hosted depth assets also require the planned production migration; no runtime compatibility layer is included.
  • No major model architecture change: This release primarily improves the YOLO26-Depth data representation and dataset pipeline, rather than changing model structure or training objectives.

What's Changed

Full Changelog: v8.4.121...v8.4.122

v8.4.121 - Fix OpenVINO INT8 detection head scope (#25841)

Choose a tag to compare

@github-actions github-actions released this 17 Aug 13:15
3702ebe

🌟 Summary

v8.4.121 improves OpenVINO INT8 export reliability for YOLO26 models while delivering broad Platform API, dataset, annotation, deployment, and documentation updates. 🚀

📊 Key Changes

  • Fixed OpenVINO INT8 detection-head handling by @glenn-jocher:

    • Replaced fragile PyTorch-based layer matching with exact names from the converted OpenVINO graph.
    • Keeps Detect decoding, DFL, and Sigmoid operations in floating point as intended.
    • Preserves strict NNCF validation during quantization.
    • Verified with a successful YOLO26n-P2 INT8 export using 55 exact ignored operations, with no unwanted FakeQuantize nodes. ✅
    • This directly addresses export failures reported in Sentry and is the most important change in this release.
  • Expanded Ultralytics Platform API documentation:

    • Documented the generated ultralytics-platform Python SDK alongside REST examples.
    • Updated endpoint paths, authentication, pagination, rate limits, response formats, and OpenAPI guidance.
    • Added coverage for images, dataset ingestion, exports, storage integrations, billing, usage, trash, training, deployments, and account APIs.
    • Clarified that workspace API keys have owner-level permissions and are managed by workspace owners.
  • Improved Platform dataset and annotation workflows 🏷️:

    • Added clearer documentation for URL, cloud-storage, and On Premise dataset imports.
    • Documented class merging/deletion, conflict handling, dataset readiness checks, clustering, version restore, and expanded annotation controls.
    • Added support documentation for COCO and NDJSON imports, while clarifying that Pascal VOC XML labels are not imported.
    • Documented annotation visibility controls, copy/paste workflows, and new keyboard shortcuts.
  • Updated Platform account, billing, and team documentation 💳:

    • Added the Usage tab, detailed credit metering, monthly credit expiration, auto top-up behavior, seat billing, renewals, and downgrade effects.
    • Clarified workspace roles, owner-only API keys, team invitations, seat reuse, ownership transfer, and team deletion.
    • Expanded activity exports, trash permissions, storage usage, and account deletion guidance.
  • Improved deployment and inference documentation 🌐:

    • Clarified dedicated endpoint lifecycle operations, authentication, rate limits, model replacement, health checks, metrics, logs, and capacity behavior.
    • Documented video inference, endpoint-specific API references, depth response options, and generated deployment URLs.
  • Security and CI improvements 🔒:

    • Prevented checkout credentials from being copied into Docker images.
    • Moved workflow secrets into environment variables instead of embedding them in scripts.
    • Updated self-hosted runner cleanup actions to v1.4.39.
    • Reduced individual SlowTests attempts from 180 to 120 minutes while retaining one retry.
    • Changed Dependabot GitHub Actions checks from daily to weekly.
  • Dependency and documentation maintenance 📚:

    • Bumped the package version to 8.4.121.
    • Allowed newer setuptools and NNCF versions, including NNCF 3.x.
    • Updated Rust inference examples to ultralytics-inference 0.0.35.
    • Corrected task banners and documentation to consistently represent YOLO26’s supported task coverage.

🎯 Purpose & Impact

  • More dependable edge deployment: YOLO26 users exporting INT8 models through OpenVINO should see fewer conversion failures and more predictable quantization behavior. ⚡
  • Better model accuracy preservation: Keeping detection-head decode operations in floating point helps protect inference correctness while still applying INT8 compression elsewhere.
  • Easier Platform automation: The updated REST contract and generated Python SDK documentation make it simpler to build integrations, manage datasets, start training, create exports, and operate deployments.
  • Clearer team and billing behavior: Users can better understand permissions, shared workspace costs, credit expiration, seat charges, and training metering before taking action.
  • More capable dataset preparation: New import, annotation, class-management, clustering, and versioning guidance supports more complete end-to-end computer vision workflows.
  • Safer builds and more stable CI: Docker images are less likely to contain authentication credentials, while CI jobs are better protected against hangs and stale runner state. 🛡️

What's Changed

Full Changelog: v8.4.120...v8.4.121

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