New Release: Ultralytics v8.3.206

Ultralytics v8.3.206 is live :rocket:

CoreML export gets a big upgrade in v8.3.206: dynamic image shapes and multi-image batching now work end-to-end, making Apple deployments more flexible and production-friendly. YOLO11 users on macOS/iOS should see smoother pipelines and higher throughput.

Explore the release details on the official Ultralytics v8.3.206 release page.

TL;DR

  • CoreML export now supports dynamic=True for variable image sizes and batches.
  • Safer exports with validation around dynamic and nms.
  • Better IDE autocomplete via new type hints for lazily loaded classes.
  • Robust visualization for 1–multi-channel images in plot_images.
  • Faster docs with AVIF assets and clearer Predict examples.

New Features

  • CoreML dynamic shapes and batching
    • Export supports variable image size and batch > 1 using dynamic=True.
    • Runtime updated to correctly handle dynamic CoreML inputs during prediction.
    • Docs export table updated to list dynamic support in the CoreML export docs.

Improvements

  • Developer experience

    • Type hints added for lazily loaded classes like YOLO, YOLOWorld, YOLOE, and SAM using TYPE_CHECKING, improving editor support and static analysis.
  • Visualization robustness

    • plot_images now gracefully handles 1-, 2-, 3-, and multi-channel inputs by auto-padding/cropping to 3 channels, improving reliability for multispectral and non-RGB data.
  • Documentation quality and speed

    • Many images migrated to Ultralytics-hosted AVIF for faster loads and fewer broken links, with additional cleanup in integration guides.
    • Predict docs now include tabbed Python and CLI examples to make it easier to get started with YOLO11.
    • A small mkdocs config tidy-up removes a duplicated setting.

Bug Fixes

  • Safer exports through validation
    • Disallows dynamic=True with nms=True.
    • Prevents dynamic=True on CoreML classification models.
    • Tests extended to cover dynamic scenarios and exclude invalid configs.
  • Fixed an import path example in Python docs.

Quick Start

# Upgrade to the latest release
pip install -U ultralytics

# Export CoreML with dynamic shapes and set a max batch
yolo export format=coreml dynamic batch=16

# Batch inference with a CoreML package
yolo predict model=yolo11n.mlpackage batch=2

# Change image size on the fly (still batched)
yolo predict model=yolo11n.mlpackage imgsz=256 batch=2

Minimal Python example:

from ultralytics import YOLO

# Export YOLO11 to CoreML with dynamic shapes and a max batch size
YOLO("yolo11n.pt").export(format="coreml", dynamic=True, batch=16)

# Predict with a different imgsz and batched inputs
YOLO("yolo11n.mlpackage").predict(source="path/to/images", imgsz=256, batch=2)

Notes:

  • Use dynamic=True for CoreML when batch > 1.
  • Do not combine dynamic=True with nms=True.
  • CoreML classification models do not support dynamic=True.

What’s Changed

New contributor:

You can review the complete list of commits in the full changelog diff.

Why it matters

  • Flexible Apple deployments: Run CoreML models with varying input sizes and multiple images per call, closing the parity gap with PyTorch batch inference.
  • Safer, clearer exports: Better validation and warnings reduce misconfigurations and save debugging time.
  • Smoother developer workflow: Enhanced type hints without runtime changes.
  • More robust visualization: Reliable plotting for 2‑channel and multispectral data.
  • Faster, clearer docs: AVIF assets and tabbed examples streamline onboarding for YOLO11.

Try it and share feedback

Upgrade with pip install -U ultralytics, give the new CoreML features a spin with YOLO11, and let us know how it goes. Your feedback helps us prioritize improvements and make YOLO even better for everyone.