YOLO Vision 2026:

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ị.

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 SDKplugin 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.

Kích thước đầu vào di động chính thức

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.

Định dạng Core AI tương lai của Apple

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ì?#

Apple CoreML deployment pipeline

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 .mlpackage có thể chạy trên iOS, iPadOS, macOS, watchOS, tvOS và visionOS, đồng thời cung cấp năng lượng cho iOS SDKplugin 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ìnhTác vụkích thước
(pixel)
CPU
Core ML .cpuOnly
(ms)
Ưu tiên CPU + ANE
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-semNgữ nghĩa6409.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 tài sản phát hành v8.3.0 chí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độ 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) đó.

Tác vụYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

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:

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

Bộ 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 đặthướ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, PredictValidate. 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ó.

Xuất (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
Dự đoán (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")
Xác thực
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ạiMặc địnhMô tả
formatstr'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.
imgszint hoặc tuple640Kí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ể.
quantizeint hoặc strNoneĐộ 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.
nmsboolFalseNhú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.
dynamicboolFalseCho 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.
batchint1Chỉ đị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.
devicestrNoneChỉ đị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:

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#

  1. 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
  2. Export với model.export(format="coreml", quantize=8, imgsz=640) trên macOS hoặc x86 Linux (imgsz=224 cho classification)
  3. 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
  4. 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ặc yolo export model=yolo26n.pt format=coreml imgsz=640 từ CLI trên macOS hoặc x86 Linux. Sử dụng imgsz=224 cho classification và thêm quantize=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 Program yolo26n.mlpackage sẵ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=True tồ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ậy nms=True sẽ 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ằ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 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.jpgyolo 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.

  • 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.

Bình luận