New Release: Ultralytics v8.4.131

:rocket: 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. :red_apple::high_voltage:

Explore the Ultralytics v8.4.131 release for the complete release details.

:glowing_star: New Features

:red_apple: 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=False export 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.

:warning: 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. :raising_hands:

:white_check_mark: 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.

:high_voltage: 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.

:books: Documentation Updates

  • YOLOE and YOLOv5 run paths now match their actual increment_path behavior, 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.

:package: 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. :tada: