ultralytics

AI

Ultralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking

Latest v8.4.137 · by ultralyticsWebsiteultralytics/ultralyticsRSS

Release activity

Release activity — 10 releases across 6 days since Aug 25, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Aug 25, 2026. Older weeks are hidden at this screen width.
JunJulAug
SundayNo releases on Aug 30, 2026
Monday2 releases on Aug 31, 2026
Tuesday2 releases on Aug 25, 2026
Wednesday1 release on Aug 26, 2026
Thursday1 release on Aug 27, 2026
Friday1 release on Aug 28, 2026
Saturday3 releases on Aug 29, 2026

10 releases since Aug 25, 2026, busiest day 3

Changelog

v8.4.137Latest

v8.4.137 - Auto-enable channels-last CUDA training (#26007)

Changed 3
  • Automatically enable channels-last memory layout for CUDA training on PyTorch 1.11 and newer to improve GPU training performance
  • Include channels_last setting among training options that can be updated when resuming a run
  • Update training guides and argument references to describe the automatic CUDA channels-last behavior

From ultralytics

🌟 Summary

v8.4.137 automatically enables the faster channels-last memory layout for CUDA training on PyTorch 1.11+, improving GPU training performance while preserving clear opt-out and compatibility options. 🚀

📊 Key Changes
  • Automatic channels-last training: The existing channels_last=None setting now automatically uses the NHWC memory format for CUDA training with PyTorch 1.11 and newer.
  • Explicit control remains available:
    • channels_last=None: Automatically selects channels-last when supported.
    • channels_last=False: Explicitly keeps the traditional NCHW format.
    • channels_last=True: Explicitly requests channels-last, preserving previous behavior.
  • Safe compatibility behavior: PyTorch 1.10 and older, CPU, and MPS training continue using NCHW by default.
  • Improved resume handling: The channels_last setting is now included among the training options that can be updated when resuming a run.
  • Documentation updates: Training guides and argument references now describe the automatic CUDA behavior.
  • No model architecture changes: This release focuses on training performance and memory layout rather than changing model structure or outputs.
🎯 Purpose & Impact
  • Potentially faster CUDA training: Channels-last can improve convolution performance on compatible GPUs, particularly modern Tensor Core hardware.
  • 🧠 Better YOLO26 training defaults: Users no longer need to manually enable the optimization when using a supported PyTorch and CUDA environment.
  • 🛡️ Reduced compatibility risk: Automatic activation begins at PyTorch 1.11, the first validated version that avoids known channels-last failures in YOLO26 training.
  • 🔧 Full user control: Workloads that require the traditional layout can disable the optimization with channels_last=False.
  • 🌍 Broad validation: The change was tested across CUDA 11.1–13.2, PyTorch 1.8–2.12, Python 3.8–3.13, and a wide range of modern NVIDIA GPUs.
  • 📦 Minimal implementation impact: The behavior is selected during trainer setup without adding new arguments, persistent state, helper utilities, or GPU-specific allowlists.
What's Changed

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.136...v8.4.137

View originalPermalink
How v8.4.137 went
v8.4.136

v8.4.136 - Improve Tuner search with confidence-weighted covariance (#25996)

Added 1
  • Type validation for dataset YAML files with clearer error messages
Changed 5
  • Hyperparameter tuning now learns relationships between promising hyperparameters by analyzing best-performing results and uses confidence-weighted, correlated mutations when enough elite trial data is available
  • AutoBackend now owns memory-layout selection during backend construction, avoiding duplicated or unsafe conversions
  • Automatic channels-last selection is available for supported Linux and Windows x86 CPU environments using PyTorch 1.13 or newer with oneDNN
  • PIL and NumPy image inputs now use more efficient OpenCV color conversions while avoiding unnecessary image copies
  • Hyperparameter tuning reflects correlated proposals at search boundaries to avoid repeatedly clipping values
Fixed 7
  • CLI classes filter for YOLOE and World models when class IDs are supplied numerically
  • TIFF loading now respects uppercase extensions and grayscale flags, preserving multispectral image channels correctly
  • Pose visualization now scales keypoint coordinates without incorrectly scaling confidence values
  • Matplotlib backend restoration is safer when the originally configured backend is unavailable
  • BoT-SORT sparse optical-flow tracking avoids unnecessary per-pixel grid allocation, reducing overhead on large frames
  • MongoDB-based distributed tuning now assigns iteration IDs atomically, preventing duplicate trial numbers from concurrent workers
  • PyTorch 1.9 and JetPack 6 compatibility issues affecting channels-last inference

From ultralytics

🌟 Summary

Version 8.4.136 improves hyperparameter tuning, inference performance, backend compatibility, and data handling—making YOLO workflows more reliable and efficient. 🚀

📊 Key Changes
  • 🎯 Smarter hyperparameter tuning — Current PR #25996 by @glenn-jocher

    • Keeps the existing Gaussian search behavior unchanged during the first 30 completed trials.
    • Learns relationships between promising hyperparameters by analyzing the best-performing results.
    • Uses confidence-weighted, correlated mutations only when enough elite trial data is available.
    • Reflects correlated proposals at search boundaries to avoid repeatedly clipping values.
    • Benchmarking on basketball-hoop detection reported a new best fitness of 0.60576, outperforming the tested Ray Tune and previous custom Tuner configurations.
    • Updated the hyperparameter tuning documentation.
  • 🧠 More robust channels-last inference

    • AutoBackend now owns memory-layout selection during backend construction, avoiding duplicated or unsafe conversions.
    • Automatic channels-last selection is available for supported Linux and Windows x86 CPU environments using PyTorch 1.13 or newer with oneDNN.
    • CUDA support remains available, while ARM64, MPS, older PyTorch versions, and exported backends retain their existing behavior.
    • Fixed compatibility issues affecting PyTorch 1.9 and JetPack 6 systems.
  • ⚡ Faster image preprocessing

    • PIL and NumPy image inputs now use more efficient OpenCV color conversions.
    • Avoids unnecessary image copies while preserving correct channel order and contiguous memory layout.
  • 🔍 More reliable prediction filtering

    • Fixed the CLI classes filter for YOLOE and World models when class IDs are supplied numerically.
    • Text-based class prompts continue to work as before.
  • 📷 Improved image and visualization handling

    • TIFF loading now respects uppercase extensions and grayscale flags, preserving multispectral image channels correctly.
    • Pose visualization now scales keypoint coordinates without incorrectly scaling confidence values.
    • Matplotlib backend restoration is safer when the originally configured backend is unavailable.
  • 🏃 Tracking and distributed tuning improvements

    • BoT-SORT sparse optical-flow tracking avoids an unnecessary per-pixel grid allocation, reducing overhead on large frames.
    • MongoDB-based distributed tuning now assigns iteration IDs atomically, preventing duplicate trial numbers from concurrent workers.
  • 🧪 Better validation and project maintenance

    • Dataset YAML files now receive early type validation with clearer error messages.
    • Added CI and PyPI publishing status for the Ultralytics SDK repository.
    • Updated the package version to 8.4.136.
🎯 Purpose & Impact
  • Better tuning results: The Tuner can discover useful relationships between hyperparameters instead of treating every parameter independently, potentially improving final model quality with fewer wasted trials. 📈
  • Safer inference across platforms: Backend construction now handles memory formats and retained tensors more consistently, reducing regressions on older PyTorch versions, ARM64 devices, and JetPack environments.
  • Faster predictions: Common PIL and NumPy input paths require fewer copies and more efficient conversions, which can improve throughput in image-heavy applications.
  • More predictable CLI behavior: Class filtering now works consistently across standard, YOLOE, and World models.
  • Improved dataset reliability: Invalid YAML field types are reported earlier, making dataset configuration errors easier to diagnose.
  • No architecture changes: This release does not introduce a new model architecture; its primary benefits are improved tuning, compatibility, performance, and correctness.
What's Changed
New Contributors

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.135...v8.4.136

View originalPermalink
How v8.4.136 went
v8.4.135

v8.4.135 - Respect dataset object counts when selecting max_det (#25993)

Added 2
  • Warnings notify users when images contain more objects than max_det allows, explaining that a low limit can cap recall and produce misleading validation metrics
  • Additional tests cover configuration validation, dataset conversion, concatenated datasets, training pipelines, and end-to-end detection behavior
Changed 5
  • Training and validation now automatically increase max_det if the default value is lower than the largest number of labeled objects found in a single image
  • User-specified max_det values are preserved but a warning is shown when they may limit validation recall
  • The resolved max_det value is propagated to native end-to-end model heads before validation for improved consistency with NMS-free models
  • Fraction boundary behavior is now consistent, with fraction=1 and fraction=1.0 both meaning use the full dataset, integers greater than 1 representing image count, 0 and 0.0 for skipping optional test split
  • Boolean values such as fraction=True are now rejected instead of being interpreted ambiguously

From ultralytics

🌟 Summary

v8.4.135 improves detection reliability by adapting max_det to dataset object counts and standardizing dataset fraction handling.

📊 Key Changes
  • 🚀 Smarter max_det selection for detection, segmentation, pose, and OBB tasks

    • Training and validation now inspect the largest number of labeled objects found in a single image.
    • If the default max_det is too low, it is automatically increased to match the observed dataset maximum.
    • User-specified max_det values are preserved, but a warning is shown when they may limit validation recall.
    • The resolved value is propagated to native end-to-end model heads before validation, improving consistency for NMS-free models.
  • ⚠️ Clearer warnings for object-count mismatches

    • Users are notified when images contain more objects than max_det allows.
    • Warnings explain that a low limit can cap recall and produce misleading validation metrics.
    • Increasing max_det may increase validation cost, and cannot exceed the model or export format’s own capacity.
  • 📏 Consistent fraction boundary behavior

    • fraction=1 and fraction=1.0 now both mean “use the full dataset.”
    • Integers greater than 1 continue to represent an image count.
    • 0 and 0.0 remain available for skipping an optional test split.
    • Training and validation splits must still contain at least one image.
    • Boolean values such as fraction=True are now rejected instead of being interpreted ambiguously.
  • 📚 Documentation and validation updates

    • Training, export, and cloud-training documentation now describe the normalized fraction semantics.
    • Additional tests cover configuration validation, dataset conversion, concatenated datasets, training pipelines, and end-to-end detection behavior.
🎯 Purpose & Impact
  • More trustworthy validation: Large-object-count images are less likely to be truncated by an unnoticed default limit.
  • 📈 Better recall measurement: Automatically matching max_det to observed data helps prevent artificially low validation recall.
  • 🧩 More predictable configuration: Dataset behavior no longer depends on whether a serializer writes 1 as an integer or 1.0 as a float.
  • 🛠️ Safer user overrides: Custom max_det settings continue to work, with warnings when they may restrict results.
  • Potential performance trade-off: A higher detection limit can increase validation and inference post-processing cost, while model or deployment-format limits may still cap the maximum number of predictions.
What's Changed

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.134...v8.4.135

View originalPermalink
How v8.4.135 went
v8.4.134

v8.4.134 - Reduce TaskAlignedAssigner OOM recovery cost (#25990)

Changed 8
  • TaskAlignedAssigner now retries target assignment one image at a time on GPU instead of moving the entire operation to CPU when GPU memory runs out
  • Remove unused trailing ground-truth padding before retrying target assignment to lower memory usage
  • Preallocate retry outputs and reuse dense metric buffers during target assignment
  • Keep candidate masks in compact integer format to reduce memory usage
  • Compute box metrics only for valid anchor/ground-truth pairs instead of all pairs
  • Use more memory-efficient in-place operations during target assignment where possible
  • Streamline point-in-box checks and overlapping ground-truth resolution
  • Hyperparameter tuning default increased from 10 trials to 300 trials for built-in tuner, direct Tuner usage, and Ray Tune

From ultralytics

🌟 Summary

v8.4.134 makes crowded-object training more resilient to GPU memory limits and increases the default hyperparameter search budget from 10 to 300 trials. 🚀

📊 Key Changes
  • Faster TaskAlignedAssigner OOM recovery 🧠

    • When GPU memory runs out during target assignment, Ultralytics now retries the work one image at a time on the GPU instead of moving the entire operation to the CPU.
    • The model’s forward-pass batch size remains unchanged.
    • A warning is shown only once per training run and reports the assignment dimensions.
  • Lower memory usage during target assignment 💾

    • Removes unused trailing ground-truth padding before retrying.
    • Preallocates retry outputs and reuses dense metric buffers.
    • Keeps candidate masks in a compact integer format.
    • Computes box metrics only for valid anchor/ground-truth pairs.
    • Uses more memory-efficient in-place operations where possible.
  • Improved geometric and assignment processing ⚙️

    • Streamlines point-in-box checks and overlapping-ground-truth resolution.
    • Preserves compatible output behavior while reducing temporary tensor allocations.
  • Hyperparameter tuning now defaults to 300 trials 🔍

    • The built-in tuner, direct Tuner usage, and Ray Tune all now use 300 trials by default, up from 10.
    • Documentation has been updated to reflect the shared default.
  • Version update 📦

    • Package version updated to 8.4.134.
🎯 Purpose & Impact
  • Much better recovery from GPU out-of-memory errors
    Large or highly crowded batches can continue training without falling back to a very slow full-CPU assignment. In the reported xView benchmark, optimized single-image GPU assignment used about 1.56 GB of peak memory and completed in 0.376 seconds, compared with 194.86 seconds and 85.62 GB for the previous GPU-to-CPU fallback.

  • More practical training on dense datasets 🏙️
    The changes are particularly valuable for aerial imagery, crowd analysis, and other datasets containing many objects per image.

  • No need to reduce the model’s forward batch size after recovery 📈
    The fallback is isolated to target assignment, helping retain the intended training configuration while handling temporary memory pressure.

  • More effective automatic hyperparameter tuning 🎯
    A 300-trial default gives the tuner substantially more opportunities to explore configurations and find stronger settings, especially for the broad YOLO26 search space.

  • Higher tuning cost unless overridden ⏱️
    Users who rely on defaults should expect tuning jobs to run considerably longer and consume more compute. Smaller runs can still be requested explicitly when time or budget is limited.

What's Changed

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.133...v8.4.134

View originalPermalink
How v8.4.134 went
v8.4.133

v8.4.133 - Improve hyperparameter Tuner mutation convergence (#25984)

Added 2
  • Enable channels-last memory layout automatically for native PyTorch inference and standalone validation on supported x86 Linux and Windows CPUs with oneDNN
  • Custom detection datasets can now report small-, medium-, and large-object mAP when using save_json=True
Changed 8
  • Replace coordinate-by-coordinate crossover with fitness-weighted selection of complete, high-performing configurations in hyperparameter tuning
  • Mutate approximately half of the parameters in normalized search-space coordinates to allow parameters starting at zero to evolve more effectively
  • Gradually reduce mutation size when tuning stops finding better results to encourage refinement after broad exploration
  • Set Ray Tune to default to Optuna multivariate TPE with parallel-aware suggestions instead of independent random search
  • Move image channel reordering and tensor-contiguity operations from CPU-side NumPy processing to the inference device
  • Simplify edge-device installation by installing the base ultralytics package instead of the larger [export] extra, with export dependencies installed automatically when an export is requested
  • W&B model artifact uploads now follow the existing training save argument where save=False skips uploading the best checkpoint while retaining metrics and plots
  • Convert saved models back to safe contiguous format and clear stale EMA data to improve compatibility with channels-last inference
Fixed 2
  • Prevent duplicate candidates after clipping, rounding, or integer conversion in hyperparameter tuning
  • Fix fraction handling during classification and detection INT8 export calibration so scalar fractions apply directly to the selected calibration split

From ultralytics

🌟 Summary

Ultralytics 8.4.133 improves hyperparameter tuning convergence, speeds up inference preprocessing, expands detection metrics, and simplifies edge-device setup. 🚀

📊 Key Changes
  • Smarter hyperparameter tuning — PR #25984 by @glenn-jocher

    • Replaces coordinate-by-coordinate crossover with fitness-weighted selection of complete, high-performing configurations.
    • Preserves useful relationships between hyperparameters instead of mixing them independently.
    • Mutates approximately half of the parameters in normalized search-space coordinates, allowing parameters that start at zero—such as degrees or shear—to evolve more effectively.
    • Gradually reduces mutation size when tuning stops finding better results, encouraging refinement after broad exploration.
    • Prevents duplicate candidates after clipping, rounding, or integer conversion, including small and discrete search spaces.
    • Ray Tune now defaults to Optuna multivariate TPE, with parallel-aware suggestions rather than independent random search.
  • Faster predictor preprocessing — PR #25982 by @jahsef

    • Moves image channel reordering and tensor-contiguity operations from CPU-side NumPy processing to the inference device.
    • Preserves output values while reducing unnecessary CPU copies.
    • Reported benchmarks show approximately 2.2–3.1× faster preprocessing on an RTX 5080, with additional gains on CPU.
  • Automatic channels-last CPU inference — PR #25983 by @JESUSROYETH

    • Enables channels-last memory layout automatically for native PyTorch inference and standalone validation on supported x86 Linux and Windows CPUs with oneDNN.
    • Keeps training defaults and unsupported platforms unchanged.
    • Explicit channels_last=True remains available for supported CPU and CUDA paths.
    • Saved models are converted back to a safe contiguous format and stale EMA data is cleared to improve compatibility.
  • More accurate INT8 calibration subsets — PR #25978 by @JESUSROYETH

    • Fixes fraction handling during classification and detection INT8 export calibration.
    • Scalar fractions now apply directly to the selected calibration split, while list-based fractions retain train/validation/test behavior.
    • Prevents exports from unintentionally calibrating on an entire dataset when only a subset was requested.
  • Size-specific mAP for custom detection datasets — PR #25981 by @fcakyon 📈

    • Custom detection datasets can now report small-, medium-, and large-object mAP when using save_json=True.
    • Builds temporary COCO-format annotations internally while preserving existing native metrics and prediction files.
    • Applies consistently during training validation, final-model validation, and standalone validation.
  • Simpler edge-device installation

    • Raspberry Pi, Jetson, DGX Spark, DeepStream, and related guides now install the base ultralytics package instead of the larger [export] extra.
    • Export dependencies are installed automatically when an export is requested, reducing installation size and dependency conflicts.
  • Improved Weights & Biases artifact control — PR #25985 by @glenn-jocher

    • W&B model artifact uploads now follow the existing training save argument.
    • save=False skips uploading the best checkpoint while retaining metrics and plots.
    • Default behavior remains unchanged with save=True.
  • Package update

    • Version bumped to 8.4.133.
🎯 Purpose & Impact
  • Better tuning results: Hyperparameter searches are more likely to preserve successful configurations, explore meaningful alternatives, and avoid wasting trials on duplicates. 🎯
  • Faster inference: Device-side preprocessing can reduce latency, particularly for batched inference and CPU-bound pipelines.
  • Broader performance optimization: Supported x86 CPU users may benefit from channels-last inference without changing their existing commands.
  • More reliable model export: INT8 calibration now honors requested dataset fractions, improving calibration speed and reducing unexpected resource usage.
  • Richer evaluation: Custom detection datasets can now receive object-size performance breakdowns similar to COCO evaluations.
  • Easier edge deployment: Base installations are smaller and less prone to dependency conflicts, while export workflows remain available when needed.
  • More control over experiment storage: W&B users can keep experiment tracking lightweight by disabling checkpoint saving with the standard save setting.
What's Changed

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.132...v8.4.133

View originalPermalink
How v8.4.133 went
v8.4.132

v8.4.132 - Extend fraction to the test split (#25966)

Added 1
  • List-based fraction now supports train, validation, and test splits with a third value to limit test data or skip test-image downloads entirely
Changed 12
  • NMS now uses the optimized torchvision path on supported Ascend NPU setups
  • Fraction-based sampling for local classification datasets now selects images across classes instead of taking a class-ordered prefix
  • Ray Tune now uses its public context and reporting APIs
  • ClearML, Comet, TensorBoard, MLflow, Ray Tune, and W&B instructions now better match current callback behavior
  • MLflow environment-variable handling is more flexible
  • TensorBoard setup is clearly documented as optional
Fixed 5
  • Repeated NMS time-limit warnings on Ascend NPU
  • Incomplete batches on Ascend NPU from producing incorrect mAP results
  • Classification fraction sampling to select representative subsets
  • IMX exports no longer reject end-to-end models at the exporter entry point
  • CLA workflow matching now accepts signature comments with surrounding whitespace or text
Removed 1
  • Neptune integration and settings retired following the service shutdown

From ultralytics

🌟 Summary

🚀 Ultralytics v8.4.132 improves dataset efficiency, hardware compatibility, export workflows, and experiment-tracking documentation, with the headline feature being finer control over test-split downloads.

📊 Key Changes
  • 🎯 Test-split control with fraction (PR #25966 — @fcakyon)

    • List-based fraction now supports train, validation, and test splits.
    • Use a third value to limit test data or set it to 0 to skip test-image downloads entirely.
    • Existing two-value lists remain compatible and continue using the full test split.
    • The same split-selection behavior is shared across training, validation, dataset conversion, and export calibration.
  • ⚡ More efficient NDJSON workflows

    • Platform NDJSON runs no longer need to download unused test images, which can significantly reduce transfer time, storage use, and bandwidth during multi-dataset sweeps.
  • 🩹 Corrected NMS and validation on Ascend NPU

    • NMS now uses the optimized torchvision path on supported Ascend NPU setups while continuing to avoid unsupported XPU behavior.
    • Fixes repeated NMS time-limit warnings and prevents incomplete batches from producing incorrect mAP results.
  • 📚 Improved YOLO26 end-to-end and export guidance

    • Documentation now more accurately describes NMS-free detection, segmentation, pose, and OBB models.
    • Clarifies export-format fallbacks, quantization limitations, Hailo behavior, detection limits, and expected accuracy trade-offs.
    • Updates performance claims and explains when custom post-processing or NMS is still required.
  • 🔄 Broader support for exported non-YOLO models

    • Documents loading generic exported models through YOLO() when task and imgsz are supplied explicitly.
    • Adds guidance for using format-specific backend classes and explains input-layout, autograd, and post-processing differences.
    • Corrects TensorFlow SavedModel, LiteRT, and numerical-parity documentation.
  • 🧪 Better classification subset sampling

    • Fraction-based sampling for local classification datasets now selects images across classes instead of taking a class-ordered prefix.
    • Produces more representative subsets for quick experiments and validation.
  • 📈 Updated experiment-tracking integrations

    • Ray Tune now uses its public context and reporting APIs.
    • ClearML, Comet, TensorBoard, MLflow, Ray Tune, and W&B instructions now better match current callback behavior.
    • Neptune integration and settings were retired following the service shutdown.
    • MLflow environment-variable handling is more flexible, and TensorBoard setup is clearly documented as optional.
  • 🧩 Additional training and export corrections

    • RT-DETR documentation recommends disabling deterministic mode on CUDA, since its attention operation cannot provide fully deterministic backward training.
    • Copy-Paste augmentation is correctly documented for both segment and OBB tasks.
    • Classification color-jitter settings are clarified when automatic augmentation is disabled.
    • IMX exports no longer reject end-to-end models at the exporter entry point.
    • CLA workflow matching now accepts signature comments with surrounding whitespace or text.
🎯 Purpose & Impact
  • 💾 Lower data-transfer costs: Users running Platform or NDJSON workflows can avoid downloading test data they do not need.
  • ⏱️ Faster experimentation: Smaller, representative dataset subsets make tuning and iteration quicker without changing existing two-item fraction usage.
  • 📊 More trustworthy metrics: Ascend NPU validation now processes complete batches, improving the reliability of reported mAP.
  • 🚀 Easier deployment: Clearer YOLO26 export guidance helps users understand when NMS-free inference works and when a traditional NMS pipeline is necessary.
  • 🌍 Better hardware coverage: NPU and export-path fixes improve compatibility across specialized accelerators and deployment formats.
  • 🧭 Smoother integrations: Updated tracking documentation reduces setup confusion, while users migrating from Neptune should select an active integration such as ClearML, Comet, MLflow, TensorBoard, W&B, or the Ultralytics Platform.
What's Changed
New Contributors

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.131...v8.4.132

View originalPermalink
How v8.4.132 went
v8.4.131

v8.4.131 - Add Apple Core AI export (#25926)

Added 7
  • Export models to Apple Core AI format with model.export(format="coreai") creating .aimodel assets that can be loaded with YOLO("yolo26n.aimodel")
  • Support FP32 and optional FP16 export for Apple Core AI through new export-coreai dependency group
  • Add dedicated Core AI backend, metadata handling, API references, and export-table support
  • Include model metadata such as class names, stride, and task information inside .aimodel assets
  • Support exporting YOLO26 with end2end=False to produce raw predictions and reduce inference latency
  • Add OBB task header image to documentation
  • Add continuous macOS CI coverage for Core AI export
Changed 9
  • YOLO26's end-to-end head is exported by default, returning finished detections directly
  • Validation now consistently uses unaugmented validation pipeline instead of accidentally applying training augmentations like Mosaic, MixUp, and Random Perspective
  • Dataset fractions are now selected according to the requested split during validation
  • Model-scale overrides in parse_model now match exact scale letters, preventing unscaled or dictionary-based configurations from taking wrong architecture branch
  • Documentation and logging now distinguish YOLO26's l1_loss from dfl_loss used by models with distribution-based box regression
  • TQDM output no longer disappears in zero-width pseudo-terminals and notebook output is allowed to scroll naturally
Fixed 4
  • C3k2 configurations without explicitly provided optional argument no longer fail for medium, large, or extra-large variants
  • YOLOE.set_classes() now recognizes class-order changes and regenerates prompt embeddings when necessary
  • Class weights are now preserved on underlying model during DDP training and continue to target student model correctly during knowledge distillation
  • Fix crashes and unreliable metrics for detection, segmentation, OBB, RT-DETR, and YOLOE validation workflows caused by training augmentations

From ultralytics

🌟 Summary

Ultralytics v8.4.131 adds Apple Core AI export and inference support for YOLO26, alongside important validation, training, model-configuration, and documentation improvements. 🚀

📊 Key Changes
  • 🍎 Apple Core AI export and inference

    • Export models with model.export(format="coreai") or the equivalent CLI command.
    • Creates Apple’s .aimodel asset format, which can be loaded again with YOLO("yolo26n.aimodel").
    • Supports FP32 and optional FP16 export through the new export-coreai dependency group.
    • Adds a dedicated Core AI backend, metadata handling, API references, export-table support, and continuous macOS CI coverage.
    • Supports YOLO26 models on Apple silicon with macOS 26 or later; exported assets target iOS 27 and macOS 27.
    • Core AI export currently has important limitations: fixed input size, no dynamic shapes or NMS export, and no support in the Ultralytics iOS or Flutter SDKs yet.
  • ⚡ Core AI deployment options

    • YOLO26’s end-to-end head is exported by default, returning finished detections directly.
    • Exporting with end2end=False produces raw predictions and can significantly reduce inference latency when post-processing is handled on the host.
    • Core AI export includes model metadata such as class names, stride, and task information inside the .aimodel asset.
  • ✅ More reliable validation with split=train

    • Validation now consistently uses the unaugmented validation pipeline instead of accidentally applying training augmentations such as Mosaic, MixUp, and Random Perspective.
    • Dataset fractions are now selected according to the requested split.
    • This fixes crashes and unreliable metrics for detection, segmentation, OBB, RT-DETR, and YOLOE validation workflows.
  • 🧮 Correct YOLO26 loss terminology

    • Documentation and logging now distinguish YOLO26’s l1_loss from dfl_loss used by models with distribution-based box regression.
    • Training guides, default configuration comments, tuning tables, experiment trackers, and tutorial output have been updated accordingly.
  • 🎯 Improved model configuration handling

    • Model-scale overrides in parse_model now match exact scale letters, preventing unscaled or dictionary-based configurations from taking the wrong architecture branch.
    • C3k2 configurations without an explicitly provided optional argument no longer fail for medium, large, or extra-large variants.
    • The architecture guide now explains these scale-dependent behaviors more accurately.
  • 🔤 YOLOE class reordering fixes

    • YOLOE.set_classes() now recognizes class-order changes and regenerates prompt embeddings when necessary.
    • Reordering classes therefore updates class IDs and names correctly instead of being treated as a no-op.
  • ⚖️ Training robustness improvements

    • Class weights are now preserved on the underlying model during DDP training and continue to target the student model correctly during knowledge distillation.
    • Fine-tuning guidance now recommends non-zero warmup while clarifying that the full three-epoch default is not always necessary.
    • Documentation now accurately describes automatic optimizer selection and module-name-based layer freezing.
  • 📟 Better progress bars in notebooks and narrow terminals

    • TQDM output no longer disappears in zero-width pseudo-terminals such as those used by Colab.
    • Notebook output is allowed to scroll naturally, while truncated terminal lines now show an ellipsis instead of being silently cut off.
  • 📚 Documentation and presentation updates

    • Corrects documented YOLOE and YOLOv5 run paths to match actual increment_path behavior.
    • Adds the missing OBB task header image.
    • Expands and updates Apple Core AI integration guidance, including deployment limitations and Core ML recommendations.
🎯 Purpose & Impact
  • Apple developers gain a new native deployment path for YOLO26 models on the latest Apple silicon platforms, potentially improving on-device inference integration and performance. 🍏
  • Core ML remains the better choice for broader compatibility, including older Apple operating systems and the Ultralytics iOS or Flutter SDKs. Core AI is currently best suited to experimental or platform-specific deployments.
  • Validation results become more trustworthy, especially when evaluating training data with split=train, because training-time augmentation is no longer applied accidentally.
  • YOLO26 users receive clearer training feedback, avoiding confusion between L1 box-distance loss and DFL metrics.
  • Custom and scaled model definitions are more dependable, reducing silent architecture mismatches and configuration-related errors.
  • YOLOE class prompts are safer to update, particularly in applications that dynamically change class ordering.
  • Distributed training and notebook workflows become more reliable, with class weights preserved correctly and progress output rendered consistently.
What's Changed

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.130...v8.4.131

View originalPermalink
How v8.4.131 went
v8.4.130

v8.4.130 - Enable fraction to limit dataset by image counts (#25951)

Added 5
  • fraction parameter now accepts positive integer image counts such as fraction=1000 to train on exactly 1000 images
  • fraction parameter accepts list format [train_count, val_count] to limit training and validation splits independently
  • Count-based dataset subset selection now supported for YOLO, RTDETR, classification, validation, and INT8 calibration workflows
  • Added or corrected license information for MNIST, Global Wheat2020, PASCAL VOC, KITTI, and official depth datasets
  • Explicitly marked Depth8 and SUN RGB-D datasets as having no specified source license
Changed 8
  • fraction parameter now distinguishes between integer 1 meaning one image and float 1.0 meaning the complete split
  • Count-based subsets are selected before images are downloaded for NDJSON and Platform datasets
  • NDJSON records are now selected deterministically to ensure repeated runs use the same images
  • Model.tune() now defaults to AdamW optimizer unless another optimizer is explicitly selected
  • tune_fitness.png now displays overall fitness progression, best result achieved, and initial-versus-best fitness for each dataset
  • Tracking documentation now lists six built-in trackers and documents TrackTrack as the default tracker
  • Tracking documentation expanded to clarify confidence thresholds, low-confidence recovery, custom ReID models, and task-specific behavior for segmentation, pose, and OBB models
  • Export documentation across ONNX, TensorRT, OpenVINO, LiteRT, Hailo, QNN, Rockchip and other formats updated to reflect expanded fraction behavior
Fixed 2
  • Fixed concurrent MongoDB tuner default claims in multi-worker tuning runs
  • Fixed tuning optimizer default to apply hyperparameter changes effectively

From ultralytics

🌟 Summary

Version v8.4.130 makes dataset subset selection far more flexible and efficient, while improving tuning, tracking guidance, and dataset metadata. 🚀

📊 Key Changes
  • Count-based dataset limits 🎯

    • fraction now accepts a positive image count, such as fraction=1000, to train on exactly 1,000 images.
    • Use fraction=[1000, 100] to limit the training and validation splits independently.
    • Existing decimal ratio behavior remains unchanged, so fraction=0.1 still uses 10% of the dataset.
    • Integer 1 means one image, while float 1.0 means the complete split.
    • Supports YOLO, RTDETR, classification, validation, and INT8 calibration workflows.
  • More efficient NDJSON and Platform dataset downloads

    • Count-based subsets are selected before images are downloaded.
    • NDJSON records are selected deterministically, helping repeated runs use the same images.
    • This avoids downloading an entire dataset when only a fixed-size subset is needed.
  • Improved hyperparameter tuning 🧠

    • Model.tune() now defaults to AdamW unless another optimizer is explicitly selected.
    • This ensures tuning parameters such as learning rate and momentum actually affect training instead of being ignored by automatic optimizer selection.
    • MongoDB-based tuning now uses safer atomic coordination, preventing multiple workers from incorrectly claiming the default configuration.
  • Clearer tuning fitness plots 📈

    • tune_fitness.png now shows overall fitness progression, the best result achieved so far, and initial-versus-best fitness for each dataset.
    • The new layout is easier to interpret, especially for multi-dataset tuning runs.
  • Expanded and clarified tracking documentation 🎥

    • Documentation now lists six built-in trackers: TrackTrack, BoT-SORT, ByteTrack, OC-SORT, Deep OC-SORT, and FastTracker.
    • TrackTrack is documented as the default tracker, with optional ReID and camera-motion compensation.
    • Tracking guidance now more clearly explains confidence thresholds, low-confidence recovery, custom ReID models, and task-specific behavior for segmentation, pose, and OBB models.
    • Tracker-specific training is clarified: users train a detection, segmentation, pose, or OBB model, then apply tracking during inference.
  • More complete dataset license metadata 📚

    • Added or corrected license information for MNIST, Global Wheat2020, PASCAL VOC, KITTI, and official depth datasets.
    • Depth8 and SUN RGB-D are now explicitly marked as having no specified source license where applicable.
    • Export documentation across ONNX, TensorRT, OpenVINO, LiteRT, Hailo, QNN, Rockchip, and other formats now reflects the expanded fraction behavior.
🎯 Purpose & Impact
  • Faster experimentation: Quickly train or calibrate on a known number of images without creating duplicate dataset copies.
  • Lower storage and bandwidth usage: Platform NDJSON datasets no longer need to download every image before applying a count-based limit.
  • More reliable tuning: AdamW makes the default tuning search spaces effective, while MongoDB coordination avoids duplicate baseline trials in concurrent runs.
  • Better reproducibility: Deterministic NDJSON subset selection makes repeated experiments more consistent.
  • Improved deployment workflows: Fixed-size calibration subsets are now easier to use across supported export formats, helping reduce INT8 calibration time.
  • Clearer tracking decisions: Users can more easily choose a tracker and understand the trade-offs between speed, ReID, camera-motion compensation, and occlusion handling.
  • No major model architecture changes: This release primarily improves data handling, tuning reliability, tracking usability, and documentation rather than introducing a new model family.
What's Changed

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.129...v8.4.130

View originalPermalink
How v8.4.130 went
v8.4.129

v8.4.129 - Delegate multi-dataset tuning to MultiTrainer (#25937)

Added 2
  • BF16 mixed-precision training support with amp parameter accepting True, False, fp16, bf16, and fp32
  • Added imread_unicode for image paths containing non-ASCII characters on Windows
Changed 8
  • Multi-dataset tuning is now managed by MultiTrainer, removing duplicated dataset orchestration from the tuner and running each dataset training job in an isolated YOLO CLI subprocess
  • Improved YOLO26 LiteRT exports for GPU delegates by reworking detection-head indexing and gathering to use operations better supported by GPU accelerators
  • Parallelized large batch image decoding and FastSAM CLIP crop preprocessing for improved preprocessing speed
  • ONNX CPU benchmarking now uses the shared ONNXBackend with configurable session options and multi-input model support
  • Progress-bar redraws are now transmitted as live state rather than ordinary log lines for more reliable progress reporting to the Ultralytics Platform
  • TensorRT tests now validate exported engines on task-specific datasets
  • Detection postprocessing is now shared across Detect, Segment, Pose, OBB, and related heads
  • Disk cleanup is skipped for JetPack Docker builds to retain sufficient runner swap space for native Jetson builds

From ultralytics

🌟 Summary

v8.4.129 improves multi-dataset hyperparameter tuning, training precision, model export acceleration, data loading, and platform reliability—without introducing a new model architecture. 🚀

📊 Key Changes
  • Multi-dataset tuning is now managed by MultiTrainer (PR #25937, @glenn-jocher):

    • Removes duplicated dataset orchestration from the tuner.
    • Runs each dataset training job in an isolated YOLO CLI subprocess.
    • Preserves YOLOWorld and YOLOE checkpoint filename handling.
    • Records individual dataset metrics, macro-mean metrics, and cleanup paths.
    • Improves distributed MongoDB tuning by safely assigning defaults and identifying winning runs by their result paths instead of worker-local indexes.
    • Validated with single-dataset and five-dataset MongoDB tuning runs. ✅
  • Added BF16 mixed-precision training (PR #25931, @artest08):

    • amp now accepts True, False, "fp16", "bf16", and "fp32".
    • BF16 uses less memory than FP32 while offering greater numerical range than FP16.
    • Gradient scaling is correctly disabled for BF16.
    • Supported CUDA hardware is required for native BF16 training.
  • Improved YOLO26 LiteRT exports for GPU delegates (PR #25914, @Y-T-G):

    • Reworked detection-head indexing and gathering to use operations better supported by GPU accelerators.
    • Helps keep more of the end-to-end, NMS-free detection head on the GPU instead of falling back to the CPU.
    • Also centralizes export-specific behavior outside the main detection head implementation.
  • Faster image and FastSAM preprocessing (PRs #25935 and #25938, @JESUSROYETH):

    • Large batches of regular images can now be decoded in parallel while preserving input order.
    • FastSAM CLIP crop preprocessing is parallelized for sufficiently large CUDA workloads.
    • Small batches, unsupported image formats, CPU, and MPS paths retain the safer serial behavior.
  • More consistent ONNX CPU benchmarking (PR #23924, @Laughing-q):

    • ONNX profiling now uses the shared ONNXBackend.
    • Adds configurable ONNX Runtime session options and multi-input model support.
    • Benchmarks now follow the same backend execution path used during inference.
  • Stronger export and validation coverage:

    • TensorRT tests now validate exported engines on task-specific datasets, not only through inference.
    • CoreML and LiteRT export helpers are documented in the API reference.
    • Detection postprocessing is shared across Detect, Segment, Pose, OBB, and related heads.
  • Improved Windows image compatibility (PR #21070, @Laughing-q):

    • Added imread_unicode for image paths containing non-ASCII characters.
    • Preserves native OpenCV grayscale behavior and simplifies semantic-mask handling.
  • More reliable progress reporting for Ultralytics Platform (PR #25905, @Y-T-G):

    • Progress-bar redraws are now transmitted as live state rather than ordinary log lines.
    • Reduces duplicated or cluttered logs and gives consumers a cleaner progress contract.
  • Documentation and training guidance corrections:

    • Clarifies YOLO26’s DFL-free l1_loss, pretrained-weight behavior, AutoBatch rules, AMP behavior, freezing, fine-tuning, K-Fold workflows, model YAML construction, and tuning output paths.
    • Adds guidance for class-name-based head weight remapping during fine-tuning.
    • Documents BF16 settings and supported distillation task limitations.
  • Build reliability improvements for Jetson (PR #25930, @glenn-jocher):

    • Disk cleanup is skipped for JetPack Docker builds so native Jetson builds retain sufficient runner swap space.
🎯 Purpose & Impact
  • More dependable distributed tuning: Multi-dataset experiments are now simpler to maintain, better isolated, and easier to analyze because results and output paths are tracked per dataset. MongoDB workers are also less likely to race when initializing defaults. 📈

  • More training options: Users with compatible CUDA hardware can choose BF16 for a practical balance of speed, memory use, and numerical stability. Existing FP16 and FP32 behavior remains available.

  • Faster edge deployment: LiteRT exports of YOLO26 end-to-end models should make better use of WebGPU and other GPU delegates, reducing unnecessary CPU fallback and potentially improving inference latency. ⚡

  • Better throughput for large workloads: Parallel image decoding and FastSAM preprocessing can reduce time spent waiting for CPU preprocessing, especially with large batches or many candidate crops.

  • Improved compatibility and confidence: Non-ASCII Windows paths, multi-input ONNX models, TensorRT validation, and distillation checkpoint handling receive targeted fixes that reduce failures in real-world workflows.

  • Cleaner integrations: Platform and other log consumers can process progress updates directly instead of guessing which log lines represent progress bars.

  • Release status: The package version is updated to 8.4.129.

What's Changed

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.128...v8.4.129

View originalPermalink
How v8.4.129 went
v8.4.128

v8.4.128 - Use synchronous OpenVINO batch inference (#25921)

Added 4
  • NDJSON conversion now supports local image paths
  • Local Docker build instructions added to documentation
  • Task-specific K-Fold guidance expanded in documentation
  • Android ExecuTorch setup documented
Changed 7
  • OpenVINO now submits each input batch as a single synchronous request and consistently uses the LATENCY performance hint instead of asynchronous requests
  • TensorRT 7–10 now keeps only the detection-head Sigmoid layers in higher precision instead of affecting every matching activation
  • ONNX export now caps the opset at 18 to avoid CUDA execution falling back to CPU for unsupported operations
  • SAM auto-mask generation now encodes each crop once and reuses its features across point batches
  • Documentation now describes tracking as a mode that runs on detection, segmentation, pose, or OBB models
  • Augmentation behavior clarified in documentation
  • YOLO26n weights used for AMP compatibility checks are now stored in the user configuration directory and reused across projects
Fixed 7
  • RKNN INT8 export now clearly rejects unsupported non-detection tasks and recommends FP16 instead
  • Cached images are stored in a shared contiguous memory buffer to prevent DataLoader workers from duplicating the cache during forked training
  • FastSAM box and point prompts are clipped to image boundaries to prevent negative or out-of-range coordinates from selecting incorrect masks
  • DDP now ignores externally set RANK and LOCAL_RANK values unless a real multi-process environment is detected
  • Ray tuning correctly aggregates metrics across multiple datasets and reports the completed epoch
  • Scalar indexing now preserves bounding-box formats and instance dimensions
  • Ground-truth candidate selection is more consistent for very small boxes

From ultralytics

🌟 Summary

v8.4.128 improves OpenVINO reliability and batch inference, reduces RAM use during training, strengthens export behavior, and clarifies dataset, augmentation, and tracking workflows. 🚀

📊 Key Changes
  • Synchronous OpenVINO batch inference — priority update
    OpenVINO now submits each input batch as a single synchronous request and consistently uses the LATENCY performance hint. Throughput implementations remain available internally, but mode selection is forced to latency-oriented execution to avoid hangs in AsyncInferQueue, particularly for dynamic INT8 batches on CPU systems.
  • Improved OpenVINO efficiency and stability 🧠
    Benchmarks showed that one batched synchronous request was about twice as fast and used roughly one-third the RAM compared with splitting the batch into separate asynchronous requests. This should make OpenVINO exports more dependable in CI and production workloads, though throughput-focused applications may see different performance characteristics.
  • TensorRT INT8 optimizations 🔧
    TensorRT 7–10 now keeps only the detection-head Sigmoid layers in higher precision instead of affecting every matching activation. TensorRT 11 no longer applies the unnecessary Sigmoid exclusion. This reduces model size and improves inference speed while preserving confidence calibration.
  • More compatible ONNX exports 📦
    ONNX export now caps the opset at 18 to avoid CUDA execution falling back to CPU for unsupported operations. This prevents extra host-memory copies and should improve GPU inference consistency, especially for models such as RT-DETR.
  • Safer RKNN exports 📱
    RKNN INT8 export now clearly rejects unsupported non-detection tasks and recommends FP16 instead. Documentation also adds updated YOLO26 FP16 and INT8 benchmarks for Rockchip devices.
  • Lower RAM usage for cache='ram' 💾
    Cached images are stored in a shared contiguous memory buffer, preventing DataLoader workers from duplicating the cache during forked training. This should keep memory usage flatter when using multiple workers.
  • SAM and FastSAM improvements 🎯
    • SAM auto-mask generation now encodes each crop once and reuses its features across point batches, reducing repeated computation.
    • FastSAM box and point prompts are clipped to image boundaries, preventing negative or out-of-range coordinates from silently selecting incorrect masks.
  • More robust training and data utilities 🛠️
    • DDP now ignores externally set RANK and LOCAL_RANK values unless a real multi-process environment is detected.
    • Ray tuning correctly aggregates metrics across multiple datasets and reports the completed epoch.
    • Scalar indexing now preserves bounding-box formats and instance dimensions.
    • Ground-truth candidate selection is more consistent for very small boxes.
  • Improved dataset workflows 📚
    NDJSON conversion now supports local image paths, while COCO JSON training documentation adds clearer requirements, cache warnings, and validation guidance.
  • Documentation and usability updates ✍️
    Documentation now describes tracking as a mode that runs on detection, segmentation, pose, or OBB models; adds local Docker build instructions; expands task-specific K-Fold guidance; clarifies augmentation behavior; and documents Android ExecuTorch setup.
  • AMP check weights are cached globally 📥
    The YOLO26n weights used only for AMP compatibility checks are now stored in the user configuration directory and reused across projects instead of being downloaded into the current working directory.
🎯 Purpose & Impact
  • More reliable deployment: Synchronous OpenVINO execution reduces the risk of indefinite hangs and makes batch inference more predictable across Intel and AMD CPU environments. ✅
  • Better performance on supported hardware: TensorRT and ONNX changes reduce unnecessary precision constraints and CPU fallback operations, potentially improving speed, memory usage, and GPU utilization.
  • Lower training memory requirements: Shared RAM caching is especially beneficial for large datasets and multi-worker training.
  • Fewer silent prediction errors: Prompt clipping and format-preserving indexing ensure that invalid coordinates or scalar selections do not produce misleading masks or improperly interpreted boxes.
  • Clearer user guidance: Updated documentation makes it easier to choose the right task, prepare datasets, configure augmentations, build Docker images, and deploy models on mobile and edge hardware.
  • Compatibility note: OpenVINO now prioritizes latency-safe synchronous execution over automatic throughput mode selection. Users seeking maximum throughput should benchmark their specific hardware and workload after upgrading.
What's Changed
New Contributors

Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.127...v8.4.128

View originalPermalink
How v8.4.128 went
View all

Discussion

If you publish ultralytics, you can claim this product by proving you administer its repository.