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ị.
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.
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.
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ì?#
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ặcnms=Falsecho đầ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
.mlpackagechạy trên iOS, iPadOS, macOS, watchOS, tvOS và visionOS, đồng thời cung cấp nền tảng cho iOS SDK và Flutter 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.
| Model | Task | kích thước (pixel) | CPU Core ML .cpuOnly(ms) | CPU + ANE ưu tiên Core ML .cpuAndNeuralEngine(ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 9.2 0.0 / 9.2 / 0.0 | 3.2 0.0 / 3.2 / 0.0 |
| YOLO26n-seg | Segment | 640 | 12.6 0.0 / 12.0 / 0.5 | 4.8 0.0 / 4.2 / 0.6 |
| YOLO26n-sem | Semantic | 640 | 9.7 0.0 / 9.2 / 0.5 | 4.6 0.0 / 4.2 / 0.5 |
| YOLO26n-depth | Depth | 640 | 25.0 0.0 / 24.1 / 0.9 | 5.3 0.0 / 4.5 / 0.9 |
| YOLO26n-cls | Classify | 224 | 2.2 0.0 / 2.2 / 0.0 | 1.9 0.0 / 1.9 / 0.0 |
| YOLO26n-pose | Pose | 640 | 11.9 0.0 / 11.9 / 0.0 | 3.9 0.0 / 3.9 / 0.0 |
| YOLO26n-obb | OBB | 640 | 10.6 0.0 / 10.6 / 0.0 | 3.4 0.0 / 3.4 / 0.0 |
- Các asset release
v8.3.0chí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 là độ 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.
Xuất Model YOLO26 sang CoreML#
Cài đặt#
Để cài đặt package bắt buộc, hãy chạy:
# Install the required package for YOLO26
pip install ultralyticsConverter 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 đặt và hướng dẫn Common Issues.
Cách sử dụng#
Định dạng CoreML hỗ trợ các mode Export, Predict và Validate. 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.
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 classificationfrom 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")Đối số Export#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
format | str | '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. |
imgsz | int hoặc tuple | 640 | Kí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ể. |
quantize | int hoặc str | None | Độ 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. |
nms | bool, tùy chọn | None | Chọ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. |
dynamic | bool | False | Cho 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. |
batch | int | 1 | Xá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. |
device | str | None | Chỉ đị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:
- Tích hợp Model Core ML vào Ứng dụng của bạn: Hướng dẫn của Apple về cách đóng gói và gọi model CoreML.
- CoreML Tools: Tài liệu tham khảo về chuyển đổi, quantization và tối ưu hóa cho toolchain
coremltoolscung cấp nền tảng cho quá trình export này. - Báo cáo Hiệu năng Core ML của Xcode: Profiling vị trí triển khai từng layer và độ trễ cho chính xác model và thiết bị của bạn.
Đó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ị#
- Train model bằng Train mode của Ultralytics hoặc bắt đầu từ weight YOLO26 chính thức
- Export bằng
model.export(format="coreml", quantize=8, imgsz=640)trên macOS hoặc Linux x86 (imgsz=224cho classification) - 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 - 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ặcyolo export model=yolo26n.pt format=coreml imgsz=640từ CLI trên macOS hoặc Linux x86. Sử dụngimgsz=224cho classification và thêmquantize=8để khớp với các model chính thức trong ứng dụng. Quá trình export tạo ra mộtyolo26n.mlpackageML Program sẵn sàng cho Xcode, iOS SDK hoặc Flutter plugin.Sử dụng
nms=Truenếu ứng dụng của bạn cần các phát hiện có kèm NMS. Giá trị mặc địnhnms=Nonexuất các đầu ra một-nhiều thô để ứng dụng của bạn xử lý;nms=Falsechọ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ằngmodel.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.alltrong ứ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.jpgvàyolo val model=yolo26n.mlpackage data=coco8.yamlhoạ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.