Ultralytics v8.4.131: Apple Core AI Support for YOLO26
Ultralytics v8.4.131 introduces Apple Core AI export and inference for YOLO26, more reliable validation, safer model configuration, improved YOLOE class updates, and stronger distributed training and notebook workflows. ![]()
![]()
Explore the Ultralytics v8.4.131 release for the complete release details.
New Features
Export YOLO26 to Apple Core AI
YOLO26 models can now be exported to Appleβs .aimodel format and loaded directly with Ultralytics YOLO:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="coreai")
coreai_model = YOLO("yolo26n.aimodel")
The equivalent CLI export is:
yolo export model=yolo26n.pt format=coreai
Highlights include:
- FP32 and optional FP16 export support.
- A dedicated Core AI inference backend.
- Embedded metadata for class names, stride, and task information.
- Continuous macOS CI coverage.
- Default export of YOLO26βs end-to-end head for finished detections.
- Optional
end2end=Falseexport for raw predictions and potentially lower latency when post-processing runs on the host.
Core AI export currently supports YOLO26 on Apple silicon with macOS 26 or later, while exported assets target iOS 27 and macOS 27.
Current limitations include fixed input sizes, no dynamic shapes, no exported NMS, and no support yet in the Ultralytics iOS or Flutter SDKs. Core ML remains the recommended option when broader Apple platform compatibility is required.
This work was contributed by @john-rocky in PR #25926: Add Apple Core AI export. ![]()
Reliability and Bug Fixes
More trustworthy split=train validation
Validation now consistently uses the unaugmented validation pipeline, preventing Mosaic, MixUp, Random Perspective, and other training augmentations from affecting results. Dataset fractions are also selected according to the requested split.
This resolves crashes and unreliable metrics across detection, segmentation, OBB, RT-DETR, and YOLOE workflows.
Thanks to @onuralpszr for PR #25962: Keep validation unaugmented on split=train.
Correct YOLOE class reordering
YOLOE.set_classes() now detects class-order changes and regenerates prompt embeddings when needed. Dynamically reordered classes will therefore receive the correct IDs and names.
Thanks to @aswanth-07 for PR #25956: Apply YOLOE class updates when only the order changes.
Safer model-scale handling
parse_model now matches scale letters exactly, preventing unscaled or dictionary-based configurations from selecting an incorrect architecture branch. C3k2 configurations without an explicit optional argument also work correctly for medium, large, and extra-large variants.
Thanks to @raimbekovm for PR #25940: Match model scale letters exactly.
Preserved class weights during DDP training
Class weights are now retained on the underlying model during distributed training and continue to target the student model correctly during knowledge distillation.
Thanks to @Laughing-q for PR #25959: Preserve class_weights during DDP training.
Workflow Improvements
Better progress bars
TQDM output no longer disappears in zero-width pseudo-terminals such as Colab. Notebook output can scroll naturally, while truncated terminal lines display an ellipsis instead of silently disappearing.
Thanks to @Y-T-G for PR #25958: Improve TQDM output in notebooks and narrow terminals.
Clearer YOLO26 loss terminology
Documentation and logging now correctly distinguish YOLO26βs l1_loss from the dfl_loss used by models with distribution-based box regression.
Thanks to @raimbekovm for PR #25941: Correct the DFL-free YOLO26 loss description.
More accurate training guidance
Training documentation now better reflects trainer behavior, including:
- Automatic optimizer selection.
- Module-name-based layer freezing.
- Recommended non-zero warmup for fine-tuning.
- Clarification that the full three-epoch default warmup is not always required.
Thanks to @raimbekovm for PR #25957: Correct training-argument documentation.
Documentation Updates
- YOLOE and YOLOv5 run paths now match their actual
increment_pathbehavior, contributed by @raimbekovm in PR #25942. - The missing OBB task header image has been added by @raimbekovm in PR #25947.
- Apple Core AI guidance now covers deployment requirements, current limitations, and when Core ML remains the better choice.
- Architecture documentation more accurately explains scale-dependent model behavior.
Upgrade and Try It
Upgrade to the latest release:
pip install -U ultralytics
We encourage Apple developers to test the new YOLO26 Core AI workflow and everyone using validation, custom model configurations, YOLOE, DDP, or notebooks to try these improvements.
Please share your results, questions, and feedback with the Ultralytics YOLO community. You can review every change in the full v8.4.130 to v8.4.131 changelog. ![]()