Link to this sectionXuất CoreML cho các mô hình YOLO26#
Apple trang bị silicon AI chuyên dụng — Neural Engine — trên mọi thiết bị iPhone, iPad và Mac hiện đại, và CoreML là lộ trình được Ultralytics hỗ trợ để triển khai các model lên các thiết bị này hiện nay. Việc xuất các model Ultralytics YOLO26 sang CoreML sẽ chuyển đổi checkpoint .pt đã huấn luyện thành tệp .mlpackage gốc, cho phép chạy tất cả bảy tác vụ YOLO trên thiết bị với độ trễ thấp, không cần kết nối mạng và đảm bảo dữ liệu không rời khỏi thiết bị.
Ultralytics YOLO iOS SDK và plugin Flutter chính thức hỗ trợ chạy các tệp xuất CoreML trên Apple Neural Engine ngay lập tức — hỗ trợ inference camera thời gian thực, dự đoán từng ảnh đơn lẻ và tự động tải model cho tất cả bảy tác vụ YOLO26, bao gồm Depth. Để triển khai trên NPU Android, vui lòng xem phần tích hợp Qualcomm QNN.
Apple đã giới thiệu framework Core AI và định dạng .aimodel mới cho thế hệ iOS 27 và macOS 27. Tính năng xuất Ultralytics Core AI dự kiến sẽ ra mắt vào quý 4 năm 2026 nhưng hiện chưa khả dụng. CoreML vẫn là định dạng được hỗ trợ cho các bản phát hành hiện tại của Ultralytics và đảm bảo khả năng tương thích rộng rãi trên các thiết bị Apple.
Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀
Link to this sectionCoreML là gì?#
CoreML (được Apple viết là "Core ML") là framework machine learning trên thiết bị của Apple. Nó tải các mô hình theo định dạng ML Program hiện đại — gói .mlpackage do trình xuất của Ultralytics tạo ra — và lên lịch chạy chúng trên CPU, GPU và Apple Neural Engine (ANE) của thiết bị, một NPU chuyên dụng trong mọi chip silicon của Apple. Vì mọi thứ đều chạy cục bộ, việc suy luận hoạt động ngoại tuyến, không gây độ 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, giúp xử lý việc thay đổi tỷ lệ và hướng ảnh trước khi đưa vào mô hình — đây là cách SDK Ultralytics iOS truyền khung hình camera cho YOLO với chi phí tiền xử lý gần như bằng không.
Link to this sectionTại sao nên xuất YOLO26 sang CoreML?#
- Tốc độ Neural Engine: Phát hiện YOLO26n chạy end-to-end trong 3.8 ms trên iPhone 17 Pro cho từng ảnh đơn và 11.3 ms/frame khi sử dụng camera thời gian thực liên tục; YOLO26n Depth mất 5.5 ms cho một ảnh đơn và 16.5 ms/frame trong camera trực tiếp (xem bảng và ghi chú bên dưới).
- Thiết kế không cần NMS: YOLO26 là end-to-end, vì vậy đồ thị (graph) được xuất ra không cần pipeline NMS và quá trình giải mã (decode) diễn ra dưới một mili giây. Các model phát hiện cũ hơn như YOLO11 có thể nhúng pipeline CoreML NMS với
nms=True. - Riêng tư và ngoại tuyến: Mọi tính toán đều ở trên thiết bị — không có yêu cầu gửi dữ liệu lên đám mây, không cần khóa API, đảm bảo đầy đủ quyền riêng tư dữ liệu.
- Một lần xuất, toàn bộ hệ sinh thái: Cùng một tệp
.mlpackagechạy trên iOS, iPadOS, macOS, watchOS, tvOS và visionOS, đồng thời hỗ trợ SDK iOS và plugin Flutter chính thức của Ultralytics.
Link to this sectionHiệu suất đo lường#
Inference end-to-end cho từng ảnh đối với các model YOLO26n INT8 CoreML chính thức trên iPhone 17 Pro (Apple A19, iOS 26.5.2). Mỗi ô hiển thị tổng thời gian (tiền xử lý + inference + hậu xử lý, không bao gồm chú thích) với chi tiết phân bổ từng giai đoạn bên dưới. Trên iOS, Vision thực hiện thay đổi kích thước đầu vào bên trong yêu cầu inference, vì vậy thời gian tiền xử lý được báo cáo là 0 và chi phí của nó đã được tính vào inference.
| Mô hình | Tác vụ | kích thước (pixel) | CPU.cpuOnly(ms) | Neural Engine.cpuAndNeuralEngine(ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 9.1 0.0 / 9.1 / 0.0 | 3.8 0.0 / 3.8 / 0.0 |
| YOLO26n-seg | Segment | 640 | 12.3 0.0 / 12.1 / 0.2 | 4.8 0.0 / 4.5 / 0.3 |
| YOLO26n-sem | Ngữ nghĩa | 10241 | 21.8 0.0 / 21.0 / 0.8 | 12.1 0.0 / 11.3 / 0.8 |
| YOLO26n-depth | Depth | 640 | 24.8 0.0 / 23.9 / 0.9 | 5.5 0.0 / 4.7 / 0.9 |
| YOLO26n-cls | Classify | 224 | 2.2 0.0 / 2.2 / 0.0 | 2.0 0.0 / 2.0 / 0.0 |
| YOLO26n-pose | Pose | 640 | 12.0 0.0 / 11.9 / 0.0 | 3.8 0.0 / 3.8 / 0.0 |
| YOLO26n-obb | OBB | 1024 | 21.7 0.0 / 21.7 / 0.0 | 7.2 0.0 / 7.2 / 0.0 |
- 1 Các bản xuất Semantic CoreML nhúng ArgMax vào đồ thị và trả về bản đồ phân loại độ phân giải đầy đủ nhỏ gọn (
[1, 1024, 1024]) thay vì các float logits, do đó quá trình hậu xử lý chỉ là quét màu dưới một mili giây và các mask hiển thị sắc nét từng pixel. - Các giá trị Tốc độ là độ trễ burst cho từng ảnh đơn — trung bình của 15 lần chạy sau 3 lần chạy khởi động trên
bus.jpg, được đo thông qua tính năng tính thời gian từng giai đoạn của iOS SDK thông qua công cụ benchmark của plugin Flutter ở chế độ profile (mã native được tối ưu hóa). Hoạt động camera thời gian thực liên tục sẽ có kết quả cao hơn vì nó bao gồm quy trình capture, scale và ổn định nhiệt: YOLO26n detect đo được 11.3 ms/frame và YOLO26n Depth đo được 16.5 ms/frame trong ứng dụng camera trực tiếp trên cùng thiết bị — xem tài liệu hiệu năng iOS SDK để biết thêm về profiling trạng thái ổn định. - Bảng so khớp CPU/GPU/NPU Snapdragon có trong tích hợp Qualcomm QNN.
Link to this sectionXuất các mô hình YOLO26 sang CoreML#
Link to this sectionCài đặt#
Để cài đặt gói cần thiết, hãy chạy:
# Install the required package for YOLO26
pip install ultralyticsBộ chuyển đổi coremltools được cài đặt tự động trong lần xuất đầu tiên. Xuất chạy trên macOS hoặc Linux x86; để biết hướng dẫn chi tiết và các phương pháp hay nhất, hãy xem hướng dẫn cài đặt và hướng dẫn các vấn đề phổ biến của chúng tôi.
Link to this sectionCách sử dụng#
Định dạng CoreML hỗ trợ các chế độ Export, Predict và Validate. Suy luận và xác thực với CoreML chỉ chạy trên macOS. Hãy xuất mô hình của bạn, sau đó tải mô hình đã xuất để chạy suy luận hoặc xác thực độ chính xác của nó.
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) # 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Đối số xuất#
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'coreml' | Định dạng đích cho model được xuất, xác định khả năng tương thích với các môi trường triển khai khác nhau. |
imgsz | int hoặc tuple | 640 | Kích thước hình ảnh mong muốn cho đầu vào của model. Có thể là một số nguyên cho hình ả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 lượng tử hóa (chỉ dành cho trọng số trong CoreML): 16 (FP16), 8 (INT8), "w8a16" (trọng số INT8 với các activation FP16), hoặc 32/không thiết lập (FP32). Các chương trình NMS ML không thiết lập sẽ sử dụng FP16 cho bản xem trước trong Xcode; truyền 32 để ghi đè. Thay thế cho các cờ half/int8 đã lỗi thời. |
nms | bool | False | Nhúng pipeline CoreML NMS. Chỉ dành cho các model phát hiện (bị bỏ qua kèm cảnh báo đối với các tác vụ khác); không cần thiết cho YOLO26 không dùng NMS, hãy sử dụng cho các model đời trước như YOLO11. |
dynamic | bool | False | Cho phép kích thước đầu vào động, tăng tính linh hoạt trong việc xử lý các kích thước hình ảnh khác nhau. |
batch | int | 1 | Chỉ định kích thước batch inference của model khi xuất hoặc số lượng ảnh tối đa mà model đã xuất sẽ xử lý đồng thời ở chế độ predict. |
device | str | None | Chỉ định thiết bị để xuất: GPU (device=0), CPU (device=cpu), MPS cho Apple silicon (device=mps). |
Để biết thêm chi tiết về quy trình xuất, hãy truy cập trang tài liệu của Ultralytics về việc xuất.
Link to this sectionHướng tới Neural Engine#
CoreML chọn phần cứng thông qua MLModelConfiguration.computeUnits. Ultralytics iOS SDK mặc định là .cpuAndNeuralEngine trên iOS 16+ thay vì .all: trong một ứng dụng camera thời gian thực, GPU vốn đã bận thực hiện phối cảnh xem trước và các lớp phủ, vì vậy việc loại trừ nó giúp tránh tranh chấp và giật lag thời gian khung hình trong khi ANE đảm nhận công việc nặng nhọc. Chỉ nên ghim .cpuOnly cho kiểm thử tương thích — bảng trên hiển thị chi phí của nó.
Việc chạy một model CoreML từ Python trên Mac host (thông qua Ultralytics hoặc coremltools) tuân theo cùng một quy tắc: Ultralytics tải với ComputeUnit.CPU_AND_NE (macOS 13+, quay về CPU_ONLY trên các phiên bản macOS cũ hơn), giữ cho quá trình suy luận (inference) chạy trên Neural Engine (nhanh gấp ~3 lần so với CPU). Điều này cũng tránh được một giới hạn hiện tại trên host macOS, nơi mà ComputeUnit.ALL / CPU_AND_GPU mặc định — vốn thêm đường dẫn biên dịch GPU/MPSGraph — sẽ làm gián đoạn quá trình với thông báo lỗi Error: MLIR pass manager failed trên coremltools 9.x.
Link to this sectionTriển khai các mô hình CoreML YOLO26 đã xuất#
Cách nhanh nhất là sử dụng SDK Ultralytics YOLO iOS chính thức, cùng một gói Swift cung cấp sức mạnh cho ứng dụng Ultralytics iOS và plugin Flutter. Nó tự động phân giải tên mô hình chính thức, tải xuống và lưu vào bộ nhớ cache .mlpackage, đồng thời trả về kết quả đã giải mã đầy đủ:
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 các ứng dụng camera, hãy sử dụng YOLOView của SDK để suy luận thời gian thực với các lớp phủ gốc, hoặc sử dụng plugin Flutter cho các ứng dụng đa nền tảng dùng chung cơ sở mã với Android.
Việc tự tích hợp .mlpackage thô cũng rất đơn giản với ngăn xếp của Apple — tải nó bằng MLModel, bao bọc nó trong VNCoreMLRequest và đưa hình ảnh qua VNImageRequestHandler. Các tài nguyên này bao gồm các chi tiết:
- Tích hợp một mô hình Core ML vào ứng dụng của bạn: Hướng dẫn của Apple về việc đóng gói và gọi một mô hình CoreML.
- CoreML Tools: Tài liệu tham khảo về chuyển đổi, định lượng và tối ưu hóa cho chuỗi công cụ
coremltoolscung cấp sức mạnh cho bản xuất này. - Báo cáo hiệu suất Core ML Xcode: Lập hồ sơ về vị trí thiết bị theo từng lớp và độ trễ cho chính xác mô hình và thiết bị của bạn.
Phát hành mô hình dưới dạng nhúng trong gói ứng dụng (có sẵn ngay lập tức, lý tưởng cho các mô hình nano/nhỏ) hoặc tải xuống trong lần chạy đầu tiên và lưu vào bộ nhớ cache (nhị phân nhỏ hơn, dễ cập nhật mô hình) — các ứng dụng chính thức sử dụng cách tiếp cận thứ hai với assets phát hành GitHub.
Link to this sectionQuy trình làm việc được đề xuất#
- Huấn luyện mô hình của bạn với Chế độ Train của Ultralytics, hoặc bắt đầu từ trọng số YOLO26 chính thức
- Xuất (Export) bằng
model.export(format="coreml", quantize=8)trên macOS hoặc x86 Linux. - Xác minh độ chính xác với
model.val()trên máy Mac và lập hồ sơ với Báo cáo hiệu suất Core ML Xcode trên thiết bị mục tiêu của bạn - Triển khai với iOS SDK, plugin Flutter hoặc tích hợp Vision của riêng bạn, hướng tới
.cpuAndNeuralEngine
Link to this sectionTóm tắt#
Trong hướng dẫn này, bạn đã học cách xuất các mô hình Ultralytics YOLO26 sang định dạng .mlpackage của CoreML, định lượng chúng cho Apple Neural Engine và triển khai chúng với độ trễ chỉ vài mili giây — thông qua iOS SDK và plugin Flutter chính thức hoặc tích hợp Vision của riêng bạn. Đối với các mục tiêu triển khai khác, hãy duyệt qua trang hướng dẫn tích hợp và so sánh các định dạng với chế độ Benchmark.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionLàm thế nào để tôi xuất các mô hình YOLO26 sang định dạng CoreML?#
Chạy model.export(format="coreml") trong Python hoặc yolo export model=yolo26n.pt format=coreml từ CLI trên macOS hoặc x86 Linux. Thêm quantize=8 để khớp với các model trong ứng dụng chính thức. Quá trình xuất sẽ tạo ra một ML Program yolo26n.mlpackage sẵn sàng cho Xcode, iOS SDK hoặc plugin Flutter.
Link to this sectionTôi có cần nms=True khi xuất YOLO26 không?#
Không. YOLO26 là model không dùng NMS (end-to-end), nên đồ thị được xuất ra đã cung cấp các kết quả phát hiện cuối cùng và chi phí giải mã (decode) chỉ mất dưới một mili giây. Tùy chọn nms=True tồn tại cho các model phát hiện cũ hơn như YOLO11, trong đó nó nhúng một pipeline CoreML NMS để ứng dụng của bạn không cần phải thực hiện triệt tiêu (suppression). Các pipeline CoreML NMS chỉ hỗ trợ phát hiện vật thể, vì vậy nms=True sẽ bị bỏ qua kèm cảnh báo đối với các tác vụ khác như phân đoạn (segmentation) và ước tính tư thế (pose).
Link to this sectionTôi nên sử dụng độ chính xác nào — FP16 hay INT8?#
Các model trong ứng dụng Ultralytics chính thức được xuất bản 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ư bảng trên. quantize=16 (FP16) là một lựa chọn thay thế an toàn với độ chính xác gần như không bị suy giảm. Hãy kiểm tra (validate) bản xuất chính xác của bạn bằng model.val() trên máy Mac trước khi triển khai.
Link to this sectionLàm thế nào để tôi đảm bảo suy luận chạy trên Neural Engine?#
Đặt MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (mặc định của iOS SDK trên iOS 16+). Tránh .all trong các ứng dụng camera — GPU đang bận thực hiện phối cảnh xem trước, và việc lên lịch suy luận ở đó gây ra hiện tượng giật lag thời gian khung hình. Xác nhận vị trí bằng Báo cáo hiệu suất Core ML Xcode.
Link to this sectionTôi có thể chạy và xác thực các mô hình CoreML bằng Ultralytics CLI không?#
Có, trên macOS: yolo predict model=yolo26n.mlpackage source=image.jpg và yolo val model=yolo26n.mlpackage data=coco8.yaml hoạt động giống như bất kỳ định dạng nào khác. Việc thực thi CoreML yêu cầu phần cứng của Apple, vì vậy các chế độ này không khả dụng trên Linux và Windows.
Link to this sectionCách nhanh nhất để chạy YOLO26 trong ứng dụng iOS hoặc Flutter là gì?#
Sử dụng SDK Ultralytics YOLO iOS chính thức (Gói Swift) hoặc plugin Flutter. Cả hai đều tải các mô hình chính thức theo tên với tính năng tự động tải xuống và lưu vào bộ nhớ cache, chạy chúng trên Neural Engine và bao gồm các giao diện người dùng camera thời gian thực hoàn chỉnh — bảng hiệu suất đo lường ở trên được tạo ra chính xác bằng ngăn xếp này.