🌟 Summary
Ultralytics 8.4.155 improves dataset-cache safety, export reliability, training validation, and platform compatibility—helping YOLO26 workflows fail less often and provide clearer feedback. 🚀
📊 Key Changes
-
🧹 Prevented stale
labels.cachereuse after dataset configuration changes (PR #26207, the primary release change)
Dataset cache validation now includes important scan settings such as:- Number of classes
- Keypoint configuration
- Detection versus pose usage
- Single-class mode
This ensures changes todata.yamltrigger a fresh label scan instead of reusing incompatible cached labels.
-
⛔ Invalid epoch values are now rejected early
Training configurations withepochs=0or negative values now raise a validation error instead of silently running 100 epochs or producing invalid training outputs. -
🖥️ Improved Windows OpenVINO inference
Windows CPU inference now explicitly requests FP32 precision to avoid reduced-precision kernel failures on affected systems. -
📦 Better control over automatic dependency installation
SettingYOLO_AUTOINSTALL=Falsenow also prevents automaticaptinstallations and Edge TPU compiler setup. Missing dependencies produce a warning or actionable error instead of modifying the environment unexpectedly. -
📱 Fixed YOLO26 pose training on Apple MPS
The RLE pose-loss weights now use the correctfloat32type, allowing YOLO26 pose training to run on MPS devices. -
⚡ Faster font checking
Font lookup uses Matplotlib’s cached font list before rescanning the operating system, significantly reducing startup time on systems such as macOS. -
📤 Improved export and inference paths
- LiteRT conversion now explicitly uses evaluation mode.
- MNN examples no longer clamp pixel-coordinate boxes to
[0, 1], fixing collapsed bounding boxes and producing correct detections. - OBB angle data is passed directly during decoding, avoiding unnecessary model attributes and export warnings.
-
🔧 Updated distributed training compatibility
DDP now uses the appropriate buffer-synchronization option for newer PyTorch versions, reducing deprecation warnings while preserving behavior. -
☁️ Updated Platform SDK documentation
Documentation now recommendsultralytics-platform>=0.1.45and explains how training metrics, checkpoints, arguments, and host information synchronize with the Ultralytics Platform. -
🌐 Expanded repository mirroring infrastructure
A scheduled workflow now mirrors public Ultralytics repositories to GitLab daily, including branches, tags, Git LFS objects, metadata, and repository avatars. -
📚 Refreshed heatmaps documentation
The heatmaps guide now features an updated YOLO26 tutorial video.
🎯 Purpose & Impact
- More reliable dataset changes: Users can safely modify class counts, keypoint settings, or task configuration without unknowingly training from incompatible cached labels. Errors are detected during scanning rather than appearing later as confusing loss or indexing failures. 🛡️
- Safer training behavior: Invalid epoch settings now fail clearly at configuration time, preventing accidental long training runs and misleading output files.
- Better device and backend support: YOLO26 pose training on Apple hardware, Windows OpenVINO inference, MNN inference, LiteRT export, and OBB export workflows are more dependable. 💻
- Faster startup on macOS: Cached font discovery can substantially reduce the overhead of validation and training commands that generate plots. ⚡
- Greater environment control: Production, CI, and container users can disable automatic package installation while still receiving useful dependency guidance.
- Improved maintainability: Cleaner export code, fewer PyTorch warnings, and updated Platform integration guidance make the package easier to operate and integrate.
What's Changed
- Add https://youtu.be/UU87gGC-kKg to docs by @RizwanMunawar in #26203
- Add daily GitLab mirrors and fix Windows OpenVINO inference by @glenn-jocher in #26206
- Fix CI warnings at their source: OBB angle attribute, DDP broadcast_buffers, LiteRT training mode by @glenn-jocher in #26215
- Use matplotlib's cached font list in check_font instead of rescanning system fonts by @raimbekovm in #26216
- Fix YOLO26 pose training on MPS by declaring RLE_WEIGHT as float32 by @raimbekovm in #26212
- Document Platform SDK training callbacks and raise the SDK floor to 0.1.45 by @raimbekovm in #26205
- Remove the [0, 1] box clamp from the MNN inference examples by @raimbekovm in #26204
- Reject epochs < 1 at config validation instead of silently training 100 epochs by @cainiao33 in #26208
- Respect
YOLO_AUTOINSTALLin apt and Edge TPU install paths by @Y-T-G in #26214 - Fix stale labels.cache reuse after data.yaml semantic edits by @cainiao33 in #26207
Full Changelog: v8.4.154...v8.4.155