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
- Truncated terminal lines now show ellipsis instead of being silently cut off
- Correct documented run paths to match actual increment_path behavior for each product
- Architecture guide now explains scale-dependent behaviors more accurately
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
.aimodelasset format, which can be loaded again withYOLO("yolo26n.aimodel"). - Supports FP32 and optional FP16 export through the new
export-coreaidependency 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.
- Export models with
-
⚡ Core AI deployment options
- YOLO26’s end-to-end head is exported by default, returning finished detections directly.
- Exporting with
end2end=Falseproduces 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
.aimodelasset.
-
✅ 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_lossfromdfl_lossused by models with distribution-based box regression. - Training guides, default configuration comments, tuning tables, experiment trackers, and tutorial output have been updated accordingly.
- Documentation and logging now distinguish YOLO26’s
-
🎯 Improved model configuration handling
- Model-scale overrides in
parse_modelnow match exact scale letters, preventing unscaled or dictionary-based configurations from taking the wrong architecture branch. C3k2configurations 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.
- Model-scale overrides in
-
🔤 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_pathbehavior. - Adds the missing OBB task header image.
- Expands and updates Apple Core AI integration guidance, including deployment limitations and Core ML recommendations.
- Corrects documented YOLOE and YOLOv5 run paths to match actual
🎯 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
- Match documented run paths to each product's own increment_path by @raimbekovm in https://github.com/ultralytics/ultralytics/pull/25942
- Match model scale letters exactly in parse_model and correct the architecture guide by @raimbekovm in https://github.com/ultralytics/ultralytics/pull/25940
- Add the OBB task header image by @raimbekovm in https://github.com/ultralytics/ultralytics/pull/25947
- Correct the
dflloss description for DFL-free YOLO26 by @raimbekovm in https://github.com/ultralytics/ultralytics/pull/25941 - Correct training-argument documentation that disagrees with the trainer by @raimbekovm in https://github.com/ultralytics/ultralytics/pull/25957
- Preserve class_weights during DDP training by @Laughing-q in https://github.com/ultralytics/ultralytics/pull/25959
- Apply YOLOE class updates when only the order changes by @aswanth-07 in https://github.com/ultralytics/ultralytics/pull/25956
- Fit the TQDM bar on zero-width and notebook terminals by @Y-T-G in https://github.com/ultralytics/ultralytics/pull/25958
- Keep validation unaugmented on split=train and pick the fraction by split by @onuralpszr in https://github.com/ultralytics/ultralytics/pull/25962
- Add Apple Core AI export by @john-rocky in https://github.com/ultralytics/ultralytics/pull/25926
Full Changelog: https://github.com/ultralytics/ultralytics/compare/v8.4.130...v8.4.131