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
degreesorshear—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=Trueremains 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
fractionhandling 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.
- Fixes
-
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.
- Custom detection datasets can now report small-, medium-, and large-object mAP when using
-
Simpler edge-device installation
- Raspberry Pi, Jetson, DGX Spark, DeepStream, and related guides now install the base
ultralyticspackage instead of the larger[export]extra. - Export dependencies are installed automatically when an export is requested, reducing installation size and dependency conflicts.
- Raspberry Pi, Jetson, DGX Spark, DeepStream, and related guides now install the base
-
Improved Weights & Biases artifact control — PR #25985 by @glenn-jocher
- W&B model artifact uploads now follow the existing training
saveargument. save=Falseskips uploading the best checkpoint while retaining metrics and plots.- Default behavior remains unchanged with
save=True.
- W&B model artifact uploads now follow the existing training
-
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
savesetting.
What's Changed
- Allow skipping W&B model artifacts by @fcakyon in https://github.com/ultralytics/ultralytics/pull/25979
- Remove
[export]from edge-device install guides by @Y-T-G in https://github.com/ultralytics/ultralytics/pull/25977 - Accelerate predictor preprocessing on inference devices by @jahsef in https://github.com/ultralytics/ultralytics/pull/25982
- Fix INT8 export calibration fractions by @JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25978
- Use save argument for W&B model artifacts by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25985
- Compute size-specific mAP for custom detection datasets by @fcakyon in https://github.com/ultralytics/ultralytics/pull/25981
- Enable channels-last by default for x86 CPU inference by @JESUSROYETH in https://github.com/ultralytics/ultralytics/pull/25983
- Improve hyperparameter Tuner mutation convergence by @glenn-jocher in https://github.com/ultralytics/ultralytics/pull/25984
Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.132...v8.4.133