Link to this sectionYOLO26 모델을 위한 CoreML 내보내기#
Apple은 모든 최신 iPhone, iPad, Mac에 전용 AI 실리콘인 Neural Engine을 탑재하고 있으며, CoreML은 이를 프로그래밍할 수 있는 유일한 방법입니다. Ultralytics YOLO26 모델을 CoreML로 내보내면 학습된 .pt 체크포인트가 네이티브 .mlpackage로 변환되어, 네트워크 연결 없이, 그리고 데이터가 기기 외부로 유출되지 않은 상태에서 6가지 YOLO 작업을 기기 내에서 밀리초 단위로 실행할 수 있습니다.
공식 Ultralytics YOLO iOS SDK 및 Flutter 플러그인은 Apple Neural Engine에서 CoreML 내보내기를 즉시 실행할 수 있도록 지원하며, 실시간 카메라 추론, 단일 이미지 예측, 모든 6가지 YOLO26 작업을 위한 자동 모델 다운로드 기능을 제공합니다. Android NPU 배포는 Qualcomm QNN 통합을 참조하십시오.
Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀
Link to this sectionCoreML이란 무엇입니까?#
CoreML(Apple 공식 표기 "Core ML")은 Apple의 온디바이스 머신 러닝 프레임워크입니다. 이 프레임워크는 최신 ML Program 형식인 .mlpackage 번들(Ultralytics 내보내기 도구가 생성함)로 모델을 로드하고, 기기의 CPU, GPU, 그리고 모든 Apple 실리콘 칩에 탑재된 전용 NPU인 **Apple Neural Engine (ANE)**에 작업을 스케줄링합니다. 모든 것이 로컬에서 실행되므로 추론은 오프라인에서도 작동하며, 네트워크 지연 시간을 발생시키지 않고 사용자의 데이터를 기기 내부에 안전하게 보관합니다.
CoreML은 모델로 들어오는 이미지의 크기 조정과 방향 설정을 처리하는 Apple의 Vision 프레임워크와 직접 통합됩니다. 이것이 바로 Ultralytics iOS SDK가 전처리 비용을 사실상 0으로 유지하면서 카메라 프레임을 YOLO에 전달하는 방식입니다.
Link to this sectionYOLO26을 CoreML로 내보내야 하는 이유는 무엇입니까?#
- Neural Engine 속도: YOLO26n 탐지는 iPhone 17 Pro에서 단일 이미지 기준 3.8ms 만에 엔드투엔드(end-to-end)로 실행되며, 지속적인 실시간 카메라 사용 시 프레임당 약 16ms가 소요됩니다(아래 표 및 참고 사항 참조). 이는 앱의 나머지 기능을 위한 여유 공간을 확보하면서도 충분히 실시간 성능을 발휘합니다.
- NMS-free by design: YOLO26은 end-to-end 모델이므로, 내보낸 그래프에는 NMS 파이프라인이 필요 없으며 디코딩 시간은 1밀리초 미만입니다. YOLO11과 같은 이전 모델은
nms=True를 통해 CoreML NMS 파이프라인을 포함할 수 있습니다. - 비공개 및 오프라인: 모든 계산이 기기 내에서 이루어지므로 클라우드와의 통신, API 키, 그리고 완전한 데이터 프라이버시가 보장됩니다.
- 한 번의 내보내기로 전체 생태계 지원: 동일한
.mlpackage파일이 iOS, iPadOS, macOS, watchOS, tvOS, visionOS에서 실행되며, 공식 Ultralytics iOS SDK 및 Flutter 플러그인을 구동합니다.
Link to this section측정된 성능#
iPhone 17 Pro(Apple A19, iOS 26.5)에서 공식 YOLO26n INT8 CoreML 모델에 대한 엔드투엔드 단일 이미지 추론 성능입니다. 각 셀은 주석을 제외한 총 시간(전처리 + 추론 + 후처리)을 보여주며, 그 아래에는 단계별 세부 시간 구성이 표시됩니다. iOS에서 Vision은 추론 요청 내부에서 입력 크기 조정을 수행하므로 전처리는 0으로 보고되며 해당 비용은 추론에 포함됩니다.
| 모델 | 작업 | 크기 (픽셀) | 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 | 의미론적(Semantic) | 10241 | 21.8 0.0 / 21.0 / 0.8 | 12.1 0.0 / 11.3 / 0.8 |
| 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 Semantic CoreML 내보내기는 ArgMax를 그래프에 포함하고 float 로짓 대신 컴팩트한 전체 해상도 클래스 맵(
[1, 1024, 1024])을 반환하므로, 후처리는 1밀리초 미만의 색상 스윕(color sweep)으로 이루어지며 마스크는 픽셀 단위로 선명하게 렌더링됩니다. - 속도 값은
bus.jpg를 대상으로 3회 예열 실행 후 15회 실행한 평균인 단일 이미지 버스트 지연 시간입니다. 이는 iOS SDK의 단계별 타이밍을 통해 Flutter 플러그인의 벤치마크 하네스(프로필 모드, 최적화된 네이티브 코드)에서 측정되었습니다. 지속적인 실시간 카메라 작동 시 속도는 더 높게 나타납니다(모든 프레임에 대한 전체 센서 레터박싱 및 열 안정화 포함). 동일한 장치의 라이브 카메라 앱에서 YOLO26n 감지 속도는 약 16 ms/프레임으로 측정됩니다. 정상 상태 프로파일링에 대한 자세한 내용은 iOS SDK 성능 문서를 참조하십시오. - 해당 Snapdragon CPU/GPU/NPU 표는 Qualcomm QNN 통합에서 확인할 수 있습니다.
Link to this sectionYOLO26 모델을 CoreML로 내보내기#
Link to this section설치#
필수 패키지를 설치하려면 다음을 실행하십시오:
# Install the required package for YOLO26
pip install ultralyticscoremltools 변환기는 첫 내보내기 시 자동으로 설치됩니다. 내보내기는 macOS 또는 x86 Linux에서 실행됩니다. 자세한 지침과 모범 사례는 설치 가이드 및 일반 문제 가이드를 확인하십시오.
Link to this section사용법#
CoreML 형식은 내보내기, 예측, 검증 모드를 지원합니다. CoreML을 사용한 추론 및 검증은 macOS에서만 실행됩니다. 모델을 내보낸 다음, 내보낸 모델을 로드하여 추론을 실행하거나 정확도를 검증하십시오.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export to CoreML (FP16 by default); quantize=8 matches 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내보내기 인수#
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
format | str | 'coreml' | 내보낸 모델의 대상 형식이며, 다양한 배포 환경과의 호환성을 정의합니다. |
imgsz | int 또는 tuple | 640 | 모델 입력에 필요한 이미지 크기입니다. 정사각형 이미지의 경우 정수를 사용할 수 있으며, 특정 치수의 경우 (height, width) 튜플을 사용할 수 있습니다. |
quantize | int 또는 str | None | 양자화 정밀도(CoreML의 경우 가중치 전용): 16(FP16), 8(INT8), "w8a16"(FP16 활성화 함수를 사용하는 INT8 가중치) 또는 32/설정 안 함(FP32)을 사용합니다. 이는 더 이상 사용되지 않는 half/int8 플래그를 대체합니다. |
nms | bool | False | CoreML NMS 파이프라인을 포함합니다. NMS-free인 YOLO26에는 필요하지 않으며, YOLO11과 같은 이전 모델에 사용하십시오. |
dynamic | bool | False | 동적 입력 크기를 허용하여 다양한 이미지 크기를 처리하는 데 유연성을 높입니다. |
batch | int | 1 | 내보낸 모델의 배치 추론 크기 또는 내보낸 모델이 predict 모드에서 동시에 처리할 최대 이미지 수를 지정합니다. |
device | str | None | 내보내기를 위한 장치를 지정합니다: GPU(device=0), CPU(device=cpu), Apple silicon용 MPS(device=mps). |
내보내기 프로세스에 대한 자세한 내용은 내보내기에 대한 Ultralytics 문서 페이지를 참조하십시오.
Link to this sectionNeural Engine 타겟팅#
CoreML chooses hardware via MLModelConfiguration.computeUnits. The Ultralytics iOS SDK defaults to .cpuAndNeuralEngine on iOS 16+ rather than .all: in a real-time camera app the GPU is already busy compositing the preview and overlays, so excluding it avoids contention and frame-time jitter while the ANE does the heavy lifting. Pin .cpuOnly only for compatibility testing — the table above shows what it costs.
Running a CoreML model from Python on a Mac host (via Ultralytics or coremltools) follows the same rule: Ultralytics loads with ComputeUnit.CPU_AND_NE (macOS 13+, falling back to CPU_ONLY on older macOS), keeping inference on the Neural Engine (~3× faster than CPU). This also avoids a current macOS host limitation where the default ComputeUnit.ALL / CPU_AND_GPU — which add the GPU/MPSGraph compile path — abort the process with an Error: MLIR pass manager failed assertion on coremltools 9.x.
Link to this section내보낸 YOLO26 CoreML 모델 배포#
가장 빠른 경로는 공식 Ultralytics YOLO iOS SDK를 사용하는 것입니다. 이는 Ultralytics iOS 앱과 Flutter 플러그인을 구동하는 것과 동일한 Swift 패키지입니다. 공식 모델 이름을 자동으로 확인하고, .mlpackage를 다운로드 및 캐싱하며, 완전히 디코딩된 결과를 반환합니다.
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
}
}카메라 앱의 경우 SDK의 YOLOView를 사용하면 네이티브 오버레이가 포함된 실시간 추론을 간단히 구현할 수 있으며, Android와 코드베이스를 공유하는 크로스 플랫폼 앱의 경우 Flutter 플러그인을 사용하십시오.
직접 원시 .mlpackage를 통합하는 것 또한 Apple 스택을 사용하면 간단합니다. MLModel로 로드하고 VNCoreMLRequest로 래핑한 뒤, VNImageRequestHandler를 통해 이미지를 전달하십시오. 다음 리소스에서 자세한 내용을 확인할 수 있습니다:
- 앱에 Core ML 모델 통합하기: CoreML 모델을 번들링하고 호출하는 방법에 대한 Apple의 가이드입니다.
- CoreML Tools: 이번 내보내기를 구동하는
coremltools툴체인에 대한 변환, 양자화 및 최적화 참조입니다. - Xcode Core ML 성능 보고서: 정확한 모델과 기기에 대한 레이어별 기기 배치 및 지연 시간 프로파일링 정보입니다.
모델을 앱 번들에 포함(즉시 사용 가능, 나노/소형 모델에 적합)하거나 첫 실행 시 다운로드하여 캐싱(바이너리 크기 감소, 모델 업데이트 용이)하는 방식으로 배포하십시오. 공식 앱들은 GitHub 릴리스 자산을 사용하는 두 번째 방식을 채택하고 있습니다.
Link to this section권장 워크플로우#
- Ultralytics 학습 모드를 사용하여 모델을 학습하거나 공식 YOLO26 가중치로 시작하십시오.
- macOS 또는 x86 Linux에서
model.export(format="coreml", quantize=8)를 사용하여 내보내기(Export) 하십시오. - Mac에서
model.val()을 사용하여 정확도를 검증하고, 타겟 기기에서 Xcode Core ML 성능 보고서로 프로파일링하십시오. - iOS SDK, Flutter 플러그인 또는 귀하의 Vision 통합을 사용하여
.cpuAndNeuralEngine을 타겟팅하여 배포하십시오.
Link to this section요약#
이 가이드에서는 Ultralytics YOLO26 모델을 CoreML의 .mlpackage 형식으로 내보내고, Apple Neural Engine을 위해 양자화하며, 공식 iOS SDK와 Flutter 플러그인 또는 직접 구현한 Vision 통합을 통해 밀리초 단위의 지연 시간으로 배포하는 방법을 배웠습니다. 다른 배포 대상은 통합 가이드 페이지를 살펴보고 벤치마크 모드를 통해 형식을 비교하십시오.
Link to this sectionFAQ#
Link to this sectionYOLO26 모델을 CoreML 형식으로 어떻게 내보내나요?#
macOS 또는 x86 Linux의 Python에서 model.export(format="coreml")를 실행하거나 CLI에서 yolo export model=yolo26n.pt format=coreml을 실행하십시오. 공식 앱 모델과 일치시키려면 quantize=8을 추가하십시오. 내보내기를 통해 Xcode, iOS SDK 또는 Flutter 플러그인에 사용할 수 있는 yolo26n.mlpackage ML 프로그램이 생성됩니다.
Link to this sectionYOLO26을 내보낼 때 nms=True가 필요한가요?#
아닙니다. YOLO26은 NMS-free 엔드투엔드 모델이므로 내보낸 그래프는 이미 최종 탐지 결과를 출력하며 디코딩 비용은 1밀리초 미만입니다. nms=True 옵션은 YOLO11과 같이 앱에서 억제(suppression)를 직접 구현할 필요가 없도록 CoreML NMS 파이프라인을 포함해야 하는 이전 모델들을 위해 존재합니다.
Link to this sectionFP16과 INT8 중 어떤 정밀도를 사용해야 하나요?#
공식 Ultralytics 앱 모델은 INT8로 제공되므로 다운로드 크기를 최소화하고 위 표의 속도로 실행됩니다. quantize=16(FP16)은 정확도 손실이 거의 없는 보수적인 대안입니다. 출시 전에 Mac에서 model.val()을 사용하여 정확한 내보내기 결과를 검증하십시오.
Link to this section추론이 Neural Engine에서 실행되도록 하려면 어떻게 해야 하나요?#
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine으로 설정하십시오(iOS 16 이상에서 iOS SDK 기본값). 카메라 앱에서는 .all 사용을 피하십시오. GPU는 프리뷰 합성을 처리하느라 바쁘며, 추론을 해당 곳에 스케줄링하면 프레임 시간 지터가 발생합니다. Xcode Core ML 성능 보고서를 통해 하드웨어 배치 상태를 확인하십시오.
Link to this sectionUltralytics CLI를 사용하여 CoreML 모델을 실행하고 검증할 수 있나요?#
네, macOS에서 가능합니다: yolo predict model=yolo26n.mlpackage source=image.jpg와 yolo val model=yolo26n.mlpackage data=coco8.yaml은 다른 형식과 동일하게 작동합니다. CoreML 실행은 Apple 하드웨어가 필요하므로 이 모드들은 Linux와 Windows에서는 사용할 수 없습니다.
Link to this sectioniOS 또는 Flutter 앱에서 YOLO26을 가장 빠르게 실행하는 방법은 무엇인가요?#
공식 Ultralytics YOLO iOS SDK(Swift 패키지) 또는 Flutter 플러그인을 사용하십시오. 두 방식 모두 공식 모델을 이름으로 로드하여 자동으로 다운로드 및 캐싱하고, Neural Engine에서 실행하며, 전체 실시간 카메라 UI를 포함합니다. 위에서 측정된 성능 표는 정확히 이 스택을 사용하여 생성되었습니다.