Xuất CoreML cho các mô hình YOLO26#
Apple tích hợp phần cứng AI chuyên dụng — Neural Engine — trong mọi thiết bị 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. Xuất model Ultralytics YOLO26 sang CoreML sẽ chuyển đổi một checkpoint .pt đã huấn luyện thành định dạng native .mlpackage, chạy toàn bộ 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 có dữ liệu nào rời khỏi thiết bị.
Ultralytics YOLO iOS SDK và plugin Flutter chính thức hỗ trợ chạy các file xuất CoreML trên Apple Neural Engine một cách nguyên bản — suy luận camera thời gian thực, dự đoán trên một ảnh đơn, và tự động tải model cho cả bảy tác vụ YOLO26, bao gồm cả Depth. Để triển khai trên NPU Android, hãy tham khảo tích hợp Qualcomm QNN.
Xuất các model classification tại imgsz=224. Xuất các model detect, segment, semantic, depth, pose và OBB tại
imgsz=640. Tiêu chuẩn 224/640 này được chia sẻ bởi các tài nguyên di động CoreML, LiteRT và QNN chính thức.
Apple đã giới thiệu Core AI framework và định dạng .aimodel cho thế hệ iOS 27 và macOS 27, nhưng Ultralytics hiện chưa hỗ trợ xuất sang định dạng này. 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ị của Apple.
Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀
CoreML là gì?#
CoreML (được Apple viết cách điệu là "Core ML") là framework machine learning chạy trên thiết bị của Apple. Framework này tải model theo định dạng ML Program hiện đại — gói .mlpackage do công cụ xuất của Ultralytics tạo ra — và phân phối chúng trên CPU, GPU và Apple Neural Engine (ANE) của thiết bị, con chip NPU chuyên dụng trong mọi chip Apple silicon. Vì mọi thứ chạy cục bộ, quá trình suy luận hoạt động ngoại tuyến, không làm tăng độ trễ mạng và giữ lại toàn bộ 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, đảm nhận việc chia tỷ lệ và định hướng hình ảnh trước khi đưa vào model — đây là cách Ultralytics iOS SDK truyền khung hình camera vào YOLO với chi phí tiền xử lý 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 thao tác được hỗ trợ trên Apple's Neural Engine để suy luận trên thiết bị có độ trễ thấp. Xem bảng thiết bị vật lý bên dưới và thực hiện benchmark bản xuất chính xác của bạn trên phần cứng mục tiêu.
- Không cần NMS theo thiết kế: YOLO26 có kiến trúc end-to-end, do đó đồ thị được xuất không cần pipeline NMS và quá trình giải mã chỉ mất 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: Toàn bộ quá trình tính toán diễn ra trên thiết bị — không cần gọi đến đám mây, không cần khóa API, đảm bảo tuyệt đối về bảo mật dữ liệu.
- Một lần xuất, toàn bộ hệ sinh thái: Cùng một
.mlpackagecó thể chạy trên iOS, iPadOS, macOS, watchOS, tvOS và visionOS, đồng thời cung cấp năng lượng cho iOS SDK và plugin Flutter chính thức của Ultralytics.
Hiệu suất đo lường#
Suy luận một ảnh đơn end-to-end cho các tài sản CoreML YOLO26n INT8 chuẩn hóa v8.3.0 trên iPhone 17 Pro với RAM 12 GB và iOS 26.5.2. Chip A19 Pro của máy có CPU 6 nhân (2 nhân Performance và 4 nhân Efficiency), GPU 6 nhân tích hợp Neural Accelerators và Neural Engine 16 nhân. Mỗi ô hiển thị tổng thời gian (tiền xử lý + suy luận + hậu xử lý, không tính chú thích) kèm theo thời gian phân chia từng giai đoạn bên dưới. Trên iOS, Vision thực hiện việc chia tỷ lệ đầu vào ngay trong yêu cầu suy luận, do đó thời gian tiền xử lý được ghi nhận là 0 và chi phí của nó được gộp vào suy luận.
| Mô hình | Tác vụ | kích thước (pixel) | CPU Core ML .cpuOnly(ms) | Ưu tiên CPU + ANE 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 | Ngữ nghĩa | 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 tài sản phát hành
v8.3.0chính xác khai báo đầu vào 224×224 cho classification và 640×640 cho mọi tác vụ còn lại. - Giá trị Speed là độ trễ cụm ảnh đơn (single-image burst latencies) — giá trị 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 lường thông qua thời gian từng giai đoạn của iOS SDK qua bộ kiểm thử chuẩn của plugin Flutter ở chế độ profile (mã native được tối ưu hóa). Thứ tự CPU/bộ tăng tốc thay đổi giữa các tác vụ trong một đợt quét tuần tự. Các hàng CPU yêu cầu Core ML.cpuOnly; các hàng ưu tiên CPU + ANE yêu cầu.cpuAndNeuralEngine, với việc định vị thao tác cuối cùng được điều khiển bởi Core ML. Hoạt động camera thời gian thực liên tục sẽ có thời gian cao hơn vì nó bao gồm pipeline chụp và chia tỷ lệ cộng với việc ổn định nhiệt độ. Một đợt quét camera tiền chuẩn hóa lịch sử đo được 11.3 ms/khung hình cho YOLO26n detect và 16.5 ms/khung hình cho YOLO26n Depth trên cùng một thiết bị — hãy xem tài liệu hiệu năng iOS SDK để biết cách đo đạc trạng thái ổn định. - So sánh kết quả CPU/GPU trên Android trong phần tích hợp LiteRT và kết quả Snapdragon NPU trong phần tích hợp Qualcomm QNN.
Các tác vụ được hỗ trợ#
Xuất CoreML hỗ trợ tất cả bảy tác vụ Ultralytics. Phân đoạn ngữ nghĩa (semantic segmentation) và ước tính độ sâu (depth estimation) chỉ khả dụng với YOLO26, dòng duy nhất tích hợp các đầu ra (head) đó.
Xuất các mô hình YOLO26 sang CoreML#
Cà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. Quá trình xuất chạy trên macOS hoặc x86 Linux; để có hướng dẫn chi tiết và các phương pháp tối ưu, hãy tham khảo hướng dẫn cài đặt và hướng dẫn các sự cố thường gặp.
Cách sử dụng#
Định dạng CoreML hỗ trợ các chế độ Export, Predict và Validate. Suy luận và kiểm tra độ chính xác với CoreML chỉ chạy trên macOS. Hãy xuất model của bạn, sau đó tải model đã xuất để chạy suy luận hoặc kiểm tra độ 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, 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ố 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 ảnh mong muốn cho đầu vào của mô hình. Có thể là một số nguyên cho ả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ỉ trọng số cho CoreML): 16 (FP16), 8 (INT8), "w8a16" (trọng số INT8 với activation FP16), hoặc 32/không đặt (FP32). Các chương trình ML Program NMS chưa đặt sử dụng FP16 cho bản xem trước trên 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 suy luận hàng loạt của mô hình xuất hoặc số lượng ảnh tối đa mà mô hình 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ề quá trình xuất, hãy truy cập trang tài liệu của Ultralytics về việc xuất model.
Hướng tới 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 một ứng dụng camera thời gian thực, GPU đã bận tổng hợp bản xem trước và lớp phủ, vì vậy việc loại trừ nó giúp tránh tranh chấp tài nguyên và hiện tượng giật khung hình trong khi ANE đảm nhận công việc nặng nhọc. Chỉ ghim .cpuOnly để kiểm tra tính tương thích — bảng ở trên cho thấy chi phí của việc 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 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 chạy trên Neural Engine (nhanh hơn ~3 lần so với CPU). Điều này cũng giúp tránh giới hạn hiện tại của host macOS khi các thiết lập mặc định ComputeUnit.ALL / CPU_AND_GPU — vốn bổ sung đường dẫn biên dịch GPU/MPSGraph — làm hủy tiến trình với một thông báo lỗi xác nhận Error: MLIR pass manager failed trên coremltools 9.x.
Triển khai các mô hình CoreML YOLO26 đã xuất#
Con đường nhanh nhất là sử dụng Ultralytics YOLO iOS SDK chính thức, cùng một gói Swift cung cấp sức mạnh cho ứng dụng Ultralytics trên iOS và plugin Flutter. SDK này tự động phân giải tên model 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ả đã được giải mã 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 các ứng dụng camera, hãy tích hợp YOLOView của SDK để suy luận thời gian thực với các lớp phủ native, hoặc sử dụng plugin Flutter cho các ứng dụng đa nền tảng dùng chung một cơ sở mã với Android.
Tự tích hợp một .mlpackage thô cũng rất đơn giản với ngăn xếp của Apple — tải nó bằng MLModel, gói nó trong VNCoreMLRequest và đưa hình ảnh qua VNImageRequestHandler. Các tài nguyên sau đây sẽ giải thích chi tiết:
- Tích hợp Core ML Model 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, lượng tử hóa và tối ưu hóa cho chuỗi công cụ
coremltoolshỗ trợ quá trình xuất này. - Báo cáo Hiệu năng Xcode Core ML: Định vị thiết bị theo từng lớp và cấu hình độ trễ cho chính model và thiết bị của bạn.
Triển khai mô hình tích hợp bên trong gói ứng dụng (sẵn sàng tức thì, lý tưởng cho các mô hình nano/small) hoặc tải xuống khi chạy lần đầu và lưu vào bộ nhớ đệm (gói nhỏ hơn, dễ cập nhật mô hình). Các ứng dụng chính thức kết hợp cả hai phương pháp: các mô hình nano mặc định được đóng gói sẵn để sử dụng ngay lập tức, trong khi các biến thể lớn hơn sẽ được tải xuống theo yêu cầu và lưu đệm cục bộ.
Quy trình làm việc được đề xuất#
- Train model của bạn bằng Train mode của Ultralytics, hoặc bắt đầu từ trọng số YOLO26 chính thức
- Export với
model.export(format="coreml", quantize=8, imgsz=640)trên macOS hoặc x86 Linux (imgsz=224cho classification) - Verify độ chính xác với
model.val()trên Mac, và cấu hình hiệu năng bằng Báo cáo Hiệu năng Xcode Core ML trên thiết bị mục tiêu của bạn - Deploy bằng iOS SDK, plugin Flutter hoặc tích hợp Vision của riêng bạn, nhắm mục tiêu vào
.cpuAndNeuralEngine
Tóm tắt#
Trong hướng dẫn này, bạn đã học cách xuất model Ultralytics YOLO26 sang định dạng .mlpackage của CoreML, lượng tử hóa chúng cho Apple Neural Engine và triển khai với độ trễ tính bằng mili-giây đơn — 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 Benchmark mode.
Câu hỏi thường gặp#
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 x86 Linux. Sử dụngimgsz=224cho classification và thêmquantize=8để khớp với các model của ứng dụng chính thức. Quá trình xuất tạo ra một chương trình ML Programyolo26n.mlpackagesẵn sàng cho Xcode, iOS SDK hoặc plugin Flutter.Không. YOLO26 không cần NMS theo kiến trúc end-to-end, do đó đồ thị xuất ra đã phát hiện kết quả cuối cùng và chi phí giải mã chưa tới một mili-giây. Tùy chọn
nms=Truetồn tại cho các model phát hiện sớm hơn như YOLO11, nơi nó nhúng một pipeline CoreML NMS để ứng dụng của bạn không phải tự triển khai tính năng loại bỏ hộp trùng lặp. Các pipeline CoreML NMS chỉ hỗ trợ phát hiện đối tượng, vì vậynms=Truesẽ bị bỏ qua kèm theo cảnh báo đối với các tác vụ khác như segmentation và pose.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 độ trong bảng ở trên.
quantize=16(FP16) là một giải pháp thay thế an toàn gần như không làm mất độ chính xác. Hãy kiểm tra bản xuất 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 các ứng dụng camera — GPU đang bận tổng hợp bản xem trước, và việc lập lịch suy luận ở đó gây ra hiện tượng giật khung hình. Xác nhận vị trí thiết bị bằng Báo cáo Hiệu năng Xcode Core ML.Có, trên macOS:
yolo predict model=yolo26n.mlpackage source=image.jpgvàyolo val model=yolo26n.mlpackage data=coco8.yamlhoạ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.Sử dụng Ultralytics YOLO iOS SDK chính thức (Swift Package) hoặc plugin Flutter. Cả hai đều tải các model chính thức theo tên với tính năng tự động tải xuống và lưu cache, chạy chúng trên Neural Engine, đồng thời bao gồm giao diện camera thời gian thực hoàn chỉnh — bảng hiệu năng đã đo ở trên được tạo ra chính xác bằng ngăn xếp này.