Meet YOLO26: next-gen vision AI.

Link to this section针对 YOLO26 模型的 CoreML 导出#

苹果在每一台现代 iPhone、iPad 和 Mac 中都配备了专用的 AI 芯片——Neural Engine,而 CoreML 是对其进行编程的唯一途径。将 Ultralytics YOLO26 模型导出为 CoreML,可将训练好的 .pt 检查点转换为原生 .mlpackage,从而在设备上以毫秒级的速度运行所有六项 YOLO 任务,无需网络连接,数据也不会离开设备。

立即通过官方移动应用在 Apple Neural Engine 上运行 YOLO

官方 Ultralytics YOLO iOS SDKFlutter 插件 开箱即用地在 Apple Neural Engine 上运行 CoreML 导出模型——支持实时相机推理、单图预测以及针对所有六项 YOLO26 任务的自动模型下载。关于 Android NPU 部署,请参阅 Qualcomm QNN 集成



Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀

Link to this section什么是 CoreML?#

Apple CoreML deployment pipeline

CoreML(苹果称之为“Core ML”)是苹果的设备端 机器学习 框架。它以现代 ML Program 格式加载模型(即 Ultralytics 导出器生成的 .mlpackage 包),并将其调度到设备的 CPU、GPU 和 Apple Neural Engine (ANE)(每个苹果芯片中专用的 NPU)上。由于一切都在本地运行,因此推理可以离线进行,不会产生网络延迟,并将用户数据保留在设备上。

CoreML 直接与苹果的 Vision 框架 集成,该框架可在模型输入前处理图像缩放和方向——这也是 Ultralytics iOS SDK 如何以近乎零预处理成本将相机帧提供给 YOLO 的方式。

Link to this section为什么将 YOLO26 导出为 CoreML?#

  • Neural Engine 速度:YOLO26n 检测在 iPhone 17 Pro 上对单张图像的端到端运行时间为 3.8 毫秒,在持续实时相机使用中约为 16 毫秒/帧(见下表和说明)——在保持舒适的实时性能的同时,还能为你的应用其余部分留出空间。
  • 天生无需 NMS:YOLO26 是端到端的,因此导出的计算图不需要 NMS 流水线,解码速度可达亚毫秒级。像 YOLO11 这样的旧模型可以使用 nms=True 来嵌入 CoreML NMS 流水线。
  • 隐私与离线:所有计算都保留在设备上——无需往返云端,无需 API 密钥,实现完全的 数据隐私
  • 一次导出,完整生态:相同的 .mlpackage 可在 iOS、iPadOS、macOS、watchOS、tvOS 和 visionOS 上运行,并支持官方的 Ultralytics iOS SDKFlutter 插件

Link to this section性能测试#

iPhone 17 Pro(Apple A19, iOS 26.5)上官方 YOLO26n INT8 CoreML 模型的端到端单图推理性能。每个单元格显示的是 总时间(预处理 + 推理 + 后处理,不含标注),下方是各阶段的耗时拆分。在 iOS 上,Vision 会在推理请求中执行输入缩放,因此预处理记为 0,其成本包含在推理中。

模型任务尺寸
(像素)
CPU
.cpuOnly
(ms)
Neural Engine
.cpuAndNeuralEngine
(ms)
YOLO26n检测6409.1
0.0 / 9.1 / 0.0
3.8
0.0 / 3.8 / 0.0
YOLO26n-seg分割64012.3
0.0 / 12.1 / 0.2
4.8
0.0 / 4.5 / 0.3
YOLO26n-sem语义1024121.8
0.0 / 21.0 / 0.8
12.1
0.0 / 11.3 / 0.8
YOLO26n-cls分类2242.2
0.0 / 2.2 / 0.0
2.0
0.0 / 2.0 / 0.0
YOLO26n-pose姿态64012.0
0.0 / 11.9 / 0.0
3.8
0.0 / 3.8 / 0.0
YOLO26n-obbOBB102421.7
0.0 / 21.7 / 0.0
7.2
0.0 / 7.2 / 0.0
  • 1 语义化 CoreML 导出会在计算图中嵌入 ArgMax 并返回一个紧凑的全分辨率类别图([1, 1024, 1024])而非浮点 logits,因此后处理过程仅为亚毫秒级的色彩扫描,且掩码渲染呈现出像素级清晰度。
  • 速度值是单图突发延迟——在 bus.jpg 上进行 3 次预热运行后的 15 次运行平均值,通过 iOS SDK 的分阶段计时以及 Flutter 插件 的基准测试工具(在 profile 模式下,即优化后的原生代码)测得。持续的实时相机运行延迟会更高(每一帧进行全传感器 letterboxing 处理加上热调节):YOLO26n 检测在同一设备的实时相机应用中测得约 ~16 毫秒/帧——请参阅 iOS SDK 性能文档 以了解稳态性能分析。
  • 匹配的 Snapdragon CPU/GPU/NPU 表位于 Qualcomm QNN 集成 中。

Link to this section将 YOLO26 模型导出到 CoreML#

Link to this section安装#

要安装所需的软件包,请运行:

安装
# Install the required package for YOLO26
pip install ultralytics

coremltools 转换器在首次导出时自动安装。导出在 macOS 或 x86 Linux 上运行;有关详细说明和最佳实践,请查看我们的 安装指南常见问题指南

Link to this section用法#

CoreML 格式支持 导出预测验证 模式。CoreML 的推理和验证仅在 macOS 上运行。导出你的模型,然后加载已导出的模型进行推理或验证其准确性。

导出
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export to CoreML (FP16 by default); quantize=8 matches the official app models
model.export(format="coreml", quantize=8)  # creates 'yolo26n.mlpackage'
预测
from ultralytics import YOLO

# Load the exported CoreML model (macOS)
model = YOLO("yolo26n.mlpackage")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

# Load the exported CoreML model (macOS)
model = YOLO("yolo26n.mlpackage")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Link to this section导出参数#

参数类型默认值描述
formatstr'coreml'导出模型的目标格式,定义了与各种部署环境的兼容性。
imgszinttuple640模型输入的期望图像尺寸。可以是一个用于正方形图像的整数,或者是一个用于特定尺寸的元组 (height, width)
quantizeintstrNone量化精度(CoreML 仅针对权重):16 (FP16)、8 (INT8)、"w8a16"(INT8 权重和 FP16 激活)或 32/不设置 (FP32)。该选项取代了已弃用的 half/int8 标志。
nmsboolFalse嵌入 CoreML NMS 流水线。对于无需 NMS 的 YOLO26 无需此选项;对于 YOLO11 等早期模型请使用此项。
dynamicboolFalse允许动态输入尺寸,增强处理不同图像尺寸时的灵活性。
batchint1指定导出模型的推理批次大小,或导出模型在 predict 模式下并发处理的最大图像数量。
devicestrNone指定导出所用的设备:GPU (device=0)、CPU (device=cpu) 或 Apple 芯片的 MPS (device=mps)。

有关导出过程的更多详细信息,请访问 Ultralytics 导出文档页面

Link to this section针对 Neural Engine 进行优化#

CoreML 通过 MLModelConfiguration.computeUnits 选择硬件。Ultralytics iOS SDK 在 iOS 16+ 上默认使用 .cpuAndNeuralEngine 而不是 .all:在实时相机应用中,GPU 已经忙于合成预览和覆盖层,因此排除它可避免竞争和帧时间抖动,同时由 ANE 完成繁重的工作。仅在进行兼容性测试时使用 .cpuOnly——上表显示了其成本。

Running a CoreML model from Python on a Mac host (via Ultralytics or coremltools) follows the same rule: Ultralytics loads with ComputeUnit.CPU_AND_NE (macOS 13+, falling back to CPU_ONLY on older macOS), keeping inference on the Neural Engine (~3× faster than CPU). This also avoids a current macOS host limitation where the default ComputeUnit.ALL / CPU_AND_GPU — which add the GPU/MPSGraph compile path — abort the process with an Error: MLIR pass manager failed assertion on coremltools 9.x.

Link to this section部署已导出的 YOLO26 CoreML 模型#

最快的路径是使用官方 Ultralytics YOLO iOS SDK,这是与支持 Ultralytics iOS 应用和 Flutter 插件 相同的 Swift 包。它会自动解析官方模型名称,下载并缓存 .mlpackage,并返回完全解码的结果:

import UltralyticsYOLO

// Loads the official INT8 model (downloaded and cached on first use), then runs inference
let yolo = YOLO("yolo26n", task: .detect) { result in
    if case .success(let model) = result {
        let results = model(uiImage)  // boxes, labels, confidences, timing
    }
}

对于相机应用,直接放入 SDK 的 YOLOView 以实现带有原生覆盖层的实时推理,或者对于与 Android 共享代码库的跨平台应用,请使用 Flutter 插件

使用苹果的技术栈自行集成原始 .mlpackage 也很简单——用 MLModel 加载它,将其包装在 VNCoreMLRequest 中,然后通过 VNImageRequestHandler 馈送图像。这些资源涵盖了详细信息:

你可以选择将模型嵌入应用包(即时可用,非常适合 nano/small 模型)或者在首次运行时下载并缓存(二进制文件更小,易于模型更新)——官方应用使用第二种方法,结合 GitHub 发布资产

Link to this section推荐工作流程#

  1. 训练你的模型,使用 Ultralytics 训练模式,或从官方 YOLO26 权重开始。
  2. 在 macOS 或 x86 Linux 上使用 model.export(format="coreml", quantize=8) 进行导出
  3. 验证准确率,使用 Mac 上的 model.val(),并使用目标设备上的 Xcode Core ML 性能报告进行分析。
  4. 部署,使用 iOS SDK、Flutter 插件或你自己的 Vision 集成,并指定 .cpuAndNeuralEngine

Link to this section总结#

在本指南中,你学习了如何将 Ultralytics YOLO26 模型导出为 CoreML 的 .mlpackage 格式,为 Apple Neural Engine 进行量化,并以毫秒级的延迟进行部署——无论是通过官方 iOS SDK 和 Flutter 插件,还是你自己的 Vision 集成。对于其他部署目标,请浏览 集成指南页面,并使用 基准测试模式 比较不同格式。

Link to this section常见问题解答#

Link to this section如何将 YOLO26 模型导出为 CoreML 格式?#

在 macOS 或 x86 Linux 上,可以通过 Python 运行 model.export(format="coreml"),或使用 CLI 运行 yolo export model=yolo26n.pt format=coreml。添加 quantize=8 以匹配官方应用模型。导出将生成一个可用于 Xcode、iOS SDK 或 Flutter 插件的 yolo26n.mlpackage ML Program。

Link to this section导出 YOLO26 时我需要 nms=True 吗?#

不需要。YOLO26 是端到端无需 NMS 的,因此导出的图已经直接输出最终检测结果,且解码成本远低于一毫秒。nms=True 选项仅存在于 YOLO11 等早期模型中,它会嵌入 CoreML NMS 流水线,这样你的应用就不必实现抑制操作。

Link to this section我应该使用哪种精度——FP16 还是 INT8?#

官方 Ultralytics 应用模型采用 INT8 格式,这能最大限度地减小下载大小并达到上表所示的速度。quantize=16 (FP16) 是一种保守的替代方案,几乎没有准确率损失。在发布前,请务必在 Mac 上使用 model.val() 验证你的最终导出结果。

Link to this section如何确保推理在 Neural Engine 上运行?#

设置 MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(这是 iOS 16+ 上 iOS SDK 的默认值)。在相机应用中避免使用 .all——GPU 忙于合成预览,在此调度推理会导致帧时间抖动。通过 Xcode Core ML 性能报告确认其位置。

Link to this section我可以使用 Ultralytics CLI 运行和验证 CoreML 模型吗?#

可以,在 macOS 上:yolo predict model=yolo26n.mlpackage source=image.jpgyolo val model=yolo26n.mlpackage data=coco8.yaml 的工作方式与任何其他格式相同。CoreML 执行需要苹果硬件,因此这些模式在 Linux 和 Windows 上不可用。

Link to this section在 iOS 或 Flutter 应用中运行 YOLO26 的最快方法是什么?#

使用官方 Ultralytics YOLO iOS SDK (Swift Package) 或 Flutter 插件。两者都按名称加载官方模型并自动下载和缓存,在 Neural Engine 上运行它们,并包含完整的实时相机 UI——上表的测量性能正是通过此技术栈得出的。

评论