Ultralytics YOLO27:

Xuất CoreML cho Model YOLO26#

Apple tích hợp silicon AI chuyên dụng — Neural Engine — trong mọi iPhone, iPad và Mac hiện đại, và CoreML là phương thức được Ultralytics hỗ trợ để triển khai model lên đó hiện nay. Việc xuất model Ultralytics YOLO26 sang CoreML chuyển một checkpoint .pt đã huấn luyện thành một .mlpackage native, có thể chạy cả bảy tác vụ YOLO trực tiếp trên thiết bị với độ trễ thấp, không cần kết nối mạng và không để dữ liệu rời khỏi thiết bị.

Chạy YOLO trên Apple Neural Engine ngay hôm nay với các ứng dụng di động chính thức

Ultralytics YOLO iOS SDK chính thức và Flutter plugin chạy các bản export CoreML trên Apple Neural Engine ngay khi cài đặt — hỗ trợ inference camera theo thời gian thực, dự đoán ảnh đơn và tự động tải model cho cả bảy tác vụ YOLO26, bao gồm Depth. Để triển khai trên NPU của Android, hãy xem tích hợp Qualcomm QNN.

Kích thước input di động chính thức

Xuất các model classification ở imgsz=224. Xuất các model detect, segment, semantic, depth, pose và OBB ở imgsz=640. Tiêu chuẩn 224/640 này được dùng chung cho các asset di động CoreML, LiteRT và QNN chính thức.

Định dạng Core AI mới của Apple

Apple đã giới thiệu framework Core AI và định dạng .aimodel mới cho thế hệ iOS 27 và macOS 27, và Ultralytics xuất định dạng này bằng format="coreai". CoreML vẫn là định dạng được khuyến nghị cho Ultralytics iOS và Flutter SDK cũng như khả năng tương thích rộng hơn với các thiết bị Apple.



Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎

CoreML là gì?#

Apple CoreML deployment pipeline

CoreML (được Apple gọi theo kiểu viết là "Core ML") là framework machine learning on-device của Apple. Framework này tải model ở định dạng ML Program hiện đại — bundle .mlpackage do Ultralytics exporter tạo ra — và lập lịch chạy chúng trên CPU, GPU và Apple Neural Engine (ANE) của thiết bị, NPU chuyên dụng trong mọi chip silicon của Apple. Vì mọi thứ đều chạy cục bộ, inference hoạt động offline, không phát sinh độ trễ mạng và giữ dữ liệu người dùng trên thiết bị.

CoreML tích hợp trực tiếp với Vision framework của Apple, framework này xử lý việc scale và định hướng ảnh trước khi đưa vào model — đây là cách Ultralytics iOS SDK truyền các frame camera đến YOLO với chi phí preprocessing gần như bằng không.

Tại sao nên xuất YOLO26 sang CoreML?#

  • Tốc độ Neural Engine: CoreML lập lịch các operation được hỗ trợ trên Neural Engine của Apple để inference on-device có độ trễ thấp. Xem bảng trên thiết bị thực bên dưới và benchmark bản export chính xác của bạn trên phần cứng mục tiêu.
  • Chọn đầu ra: Các bản xuất mặc định để NMS cho ứng dụng của bạn xử lý. Sử dụng nms=True để nhúng NMS hoặc nms=False cho đầu không có NMS của YOLO26.
  • Riêng tư và offline: Mọi phép tính đều được thực hiện trên thiết bị — không có lượt trao đổi với cloud, không cần API key và bảo đảm quyền riêng tư dữ liệu đầy đủ.
  • Một lần export, toàn bộ hệ sinh thái: Cùng một .mlpackage chạy trên iOS, iPadOS, macOS, watchOS, tvOS và visionOS, đồng thời cung cấp nền tảng cho iOS SDKFlutter plugin chính thức của Ultralytics.

Hiệu năng đo được#

Inference end-to-end trên ảnh đơn đối với các asset CoreML YOLO26n INT8 v8.3.0 được chuẩn hóa trên iPhone 17 Pro với bộ nhớ 12 GB và iOS 26.5.2. A19 Pro của thiết bị có CPU 6 lõi (2 lõi Performance và 4 lõi Efficiency), GPU 6 lõi với Neural Accelerators và Neural Engine 16 lõi. Mỗi ô hiển thị tổng thời gian (preprocessing + inference + postprocessing, không bao gồm annotation) cùng với phân tách từng giai đoạn bên dưới. Trên iOS, Vision thực hiện scale input bên trong request inference, do đó preprocessing được báo cáo là 0 và chi phí của bước này được tính vào inference.

ModelTaskkích thước
(pixel)
CPU
Core ML .cpuOnly
(ms)
CPU + ANE ưu tiên
Core ML .cpuAndNeuralEngine
(ms)
YOLO26nDetect6409.2
0.0 / 9.2 / 0.0
3.2
0.0 / 3.2 / 0.0
YOLO26n-segSegment64012.6
0.0 / 12.0 / 0.5
4.8
0.0 / 4.2 / 0.6
YOLO26n-semSemantic6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depthDepth64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-clsClassify2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-posePose64011.9
0.0 / 11.9 / 0.0
3.9
0.0 / 3.9 / 0.0
YOLO26n-obbOBB64010.6
0.0 / 10.6 / 0.0
3.4
0.0 / 3.4 / 0.0
  • Các asset release v8.3.0 chính xác khai báo input 224×224 cho classification và 640×640 cho mọi tác vụ khác.
  • Các giá trị Speedđộ trễ burst trên ảnh đơn — trung bình của 15 lần chạy sau 3 lần warmup trên bus.jpg, được đo qua timing từng giai đoạn của iOS SDK bằng benchmark harness của Flutter plugin ở profile mode (native code đã tối ưu). Thứ tự CPU/accelerator được luân phiên giữa các tác vụ trong một lượt chạy tuần tự. Các dòng CPU yêu cầu Core ML .cpuOnly; các dòng CPU + ANE ưu tiên yêu cầu .cpuAndNeuralEngine, trong đó vị trí operation cuối cùng do Core ML kiểm soát. Hoạt động camera theo thời gian thực kéo dài có tốc độ cao hơn vì bao gồm pipeline capture và scaling cùng quá trình ổn định nhiệt. Một lượt đo camera lịch sử trước khi chuẩn hóa đạt 11.3 ms/frame cho detect YOLO26n và 16.5 ms/frame cho Depth YOLO26n trên cùng thiết bị — xem tài liệu hiệu năng iOS SDK để profiling trạng thái ổn định.
  • So sánh kết quả CPU/GPU trên Android trong tích hợp LiteRT và kết quả NPU Snapdragon trong tích hợp Qualcomm QNN.

Các Task được hỗ trợ#

Export CoreML hỗ trợ cả bảy tác vụ Ultralytics. Semantic segmentation và depth estimation chỉ khả dụng với YOLO26, là family duy nhất cung cấp các head này.

TaskYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Xuất Model YOLO26 sang CoreML#

Cài đặt#

Để cài đặt package bắt buộc, hãy chạy:

Cài đặt
# Install the required package for YOLO26
pip install ultralytics

Converter coremltools được tự động cài đặt trong lần export đầu tiên. Export chạy trên macOS hoặc Linux x86; để xem hướng dẫn chi tiết và best practice, hãy tham khảo hướng dẫn cài đặthướng dẫn Common Issues.

Cách sử dụng#

Định dạng CoreML hỗ trợ các mode Export, PredictValidate. Inference và validation với CoreML chỉ chạy trên macOS. Hãy export model, sau đó load model đã export để chạy inference hoặc validate độ chính xác.

Export
from ultralytics import YOLO

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

# Export to CoreML with INT8 weight quantization, matching the official app models
model.export(format="coreml", quantize=8, imgsz=640)  # use imgsz=224 for classification
Predict
from ultralytics import YOLO

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

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Validate
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")

Đối số Export#

Đối sốKiểuMặc địnhMô tả
formatstr'coreml'Định dạng đích của model đã export, xác định khả năng tương thích với nhiều môi trường triển khai.
imgszint hoặc tuple640Kích thước ảnh mong muốn cho input của model. Có thể là một số nguyên đối với ảnh vuông hoặc một tuple (height, width) cho các kích thước cụ thể.
quantizeint hoặc strNoneĐộ chính xác quantization (chỉ trọng số đối với CoreML): 16 (FP16), 8 (INT8), "w8a16" (trọng số INT8 với activation FP16) hoặc 32/bỏ trống (FP32). ML Program NMS sử dụng FP16 (cho bản preview Xcode và bắt buộc đối với segment và pose); truyền 32 để ghi đè khi detect. Thay thế các flag half/int8 đã deprecated.
nmsbool, tùy chọnNoneChọn đầu ra thô (None, mặc định), NMS được nhúng (True), hoặc đầu ra không có NMS (False). NMS được nhúng hỗ trợ phát hiện, phân đoạn và ước lượng tư thế với dynamic=False.
dynamicboolFalseCho phép kích thước đầu vào động. Không được hỗ trợ cho các model phân loại hoặc RT-DETR, và không thể kết hợp với nms=True.
batchint1Xác định kích thước suy luận batch của model xuất hoặc số lượng tối đa các ảnh mà model được xuất sẽ xử lý đồng thời ở chế độ predict. Các giá trị lớn hơn 1 yêu cầu dynamic=True.
devicestrNoneChỉ định thiết bị dùng để export: GPU (device=0), CPU (device=cpu), MPS cho Apple silicon (device=mps).

Để biết thêm chi tiết về quy trình export, hãy truy cập trang tài liệu Ultralytics về export.

Nhắm mục tiêu Neural Engine#

CoreML chọn phần cứng thông qua MLModelConfiguration.computeUnits. Ultralytics iOS SDK mặc định sử dụng .cpuAndNeuralEngine trên iOS 16+ thay vì .all: trong ứng dụng camera theo thời gian thực, GPU đã bận compositing preview và overlay, nên loại GPU khỏi lựa chọn giúp tránh tranh chấp tài nguyên và jitter thời gian frame trong khi ANE xử lý phần nặng. Chỉ cố định .cpuOnly để kiểm thử khả năng tương thích — bảng trên cho thấy chi phí của lựa chọn này.

Chạy model CoreML từ Python trên Mac host (thông qua Ultralytics hoặc coremltools) tuân theo quy tắc tương tự: Ultralytics load bằng ComputeUnit.CPU_AND_NE (macOS 13+, fallback về CPU_ONLY trên macOS cũ hơn), giữ inference trên Neural Engine (nhanh hơn CPU khoảng ~3 lần). Cách này cũng tránh một hạn chế hiện tại của macOS host, trong đó ComputeUnit.ALL / CPU_AND_GPU mặc định — bổ sung GPU/MPSGraph compile path — khiến process bị hủy với assertion Error: MLIR pass manager failed trên coremltools 9.x.

Triển khai Model YOLO26 CoreML đã Export#

Cách nhanh nhất là sử dụng Ultralytics YOLO iOS SDK chính thức, cùng Swift package cung cấp nền tảng cho ứng dụng iOS Ultralytics và Flutter plugin. SDK tự động phân giải tên model chính thức, tải xuống và cache .mlpackage, đồng thời trả về kết quả đã decode hoàn chỉnh:

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
    }
}

Đối với ứng dụng camera, hãy thêm YOLOView của SDK để inference theo thời gian thực với overlay native, hoặc sử dụng Flutter plugin cho ứng dụng đa nền tảng dùng chung một codebase với Android.

Tự tích hợp raw .mlpackage cũng rất đơn giản với stack của Apple — load bằng MLModel, bọc trong một VNCoreMLRequest và truyền ảnh qua VNImageRequestHandler. Các tài nguyên sau trình bày chi tiết:

Đóng gói model trực tiếp trong app bundle (có ngay lập tức, lý tưởng cho model nano/small) hoặc tải xuống trong lần chạy đầu tiên và cache (binary nhỏ hơn, dễ cập nhật model). Các ứng dụng chính thức kết hợp cả hai phương pháp: model nano mặc định được đóng gói để sử dụng ngay, còn các biến thể lớn hơn được tải theo yêu cầu và cache cục bộ.

Workflow Khuyến nghị#

  1. Train model bằng Train mode của Ultralytics hoặc bắt đầu từ weight YOLO26 chính thức
  2. Export bằng model.export(format="coreml", quantize=8, imgsz=640) trên macOS hoặc Linux x86 (imgsz=224 cho classification)
  3. Verify độ chính xác bằng model.val() trên Mac và profiling bằng Xcode Core ML Performance Report trên thiết bị mục tiêu
  4. Deploy bằng iOS SDK, Flutter plugin hoặc Vision integration của riêng bạn, nhắm đến .cpuAndNeuralEngine

Tóm tắt#

Trong hướng dẫn này, bạn đã học cách export model Ultralytics YOLO26 sang định dạng .mlpackage của CoreML, quantize chúng cho Apple Neural Engine và triển khai với độ trễ chỉ vài mili giây — thông qua iOS SDK và Flutter plugin chính thức hoặc Vision integration của riêng bạn. Đối với các mục tiêu triển khai khác, hãy xem trang hướng dẫn integration và so sánh các định dạng bằng Benchmark mode.

FAQ#

  • Chạy model.export(format="coreml", imgsz=640) trong Python hoặc yolo export model=yolo26n.pt format=coreml imgsz=640 từ CLI trên macOS hoặc Linux x86. Sử dụng imgsz=224 cho classification và thêm quantize=8 để khớp với các model chính thức trong ứng dụng. Quá trình export tạo ra một yolo26n.mlpackage ML Program sẵn sàng cho Xcode, iOS SDK hoặc Flutter plugin.

  • Sử dụng nms=True nếu ứng dụng của bạn cần các phát hiện có kèm NMS. Giá trị mặc định nms=None xuất các đầu ra một-nhiều thô để ứng dụng của bạn xử lý; nms=False chọn đầu ra không có NMS của YOLO26. NMS được nhúng hỗ trợ phát hiện, phân đoạn và ước lượng tư thế với các kích thước tĩnh; các tác vụ khác giữ nguyên đầu ra gốc.

  • Các model ứng dụng Ultralytics chính thức được phát hành dưới dạng INT8, giúp giảm thiểu kích thước tải xuống và chạy ở tốc độ như trong bảng trên. quantize=16 (FP16) là lựa chọn thận trọng với hầu như không làm giảm độ chính xác. Hãy validate bản export chính xác của bạn bằng model.val() trên Mac trước khi phát hành.

  • Đặt MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (mặc định của iOS SDK trên iOS 16+). Tránh sử dụng .all trong ứng dụng camera — GPU đang bận compositing preview, và lập lịch inference trên đó gây jitter thời gian frame. Xác nhận vị trí thực thi bằng Xcode Core ML Performance Report.

  • Có, trên macOS: yolo predict model=yolo26n.mlpackage source=image.jpgyolo val model=yolo26n.mlpackage data=coco8.yaml hoạt động như với mọi định dạng khác. Việc thực thi CoreML yêu cầu phần cứng Apple, vì vậy các mode này không khả dụng trên Linux và Windows.

  • Sử dụng Ultralytics YOLO iOS SDK chính thức (Swift Package) hoặc Flutter plugin. Cả hai đều load model chính thức theo tên với tính năng tự động tải xuống và caching, chạy model trên Neural Engine và bao gồm UI camera theo thời gian thực hoàn chỉnh — bảng hiệu năng đo được ở trên được tạo chính xác bằng stack này.

Bình luận