YOLO26 모델을 위한 CoreML 내보내기#
Apple은 모든 최신 iPhone, iPad 및 Mac에 전용 AI 실리콘인 Neural Engine을 탑재하고 있으며, CoreML은 현재 모델을 배포하기 위해 Ultralytics가 지원하는 경로입니다. Ultralytics YOLO26 모델을 CoreML로 내보내면 학습된 .pt 체크포인트가 네트워크 연결이나 장치 외부로의 데이터 유출 없이 낮은 지연 시간으로 온디바이스에서 7가지 모든 YOLO 작업을 실행하는 네이티브 .mlpackage으로 변환됩니다.
공식 Ultralytics YOLO iOS SDK 및 Flutter 플러그인은 Apple Neural Engine에서 CoreML 내보내기를 즉시 실행합니다. 여기에는 Depth를 포함한 7가지 모든 YOLO26 작업에 대한 실시간 카메라 추론, 단일 이미지 예측, 자동 모델 다운로드가 포함됩니다. Android NPU 배포에 대해서는 Qualcomm QNN 통합을 참조하세요.
분류 모델은 imgsz=224에서 내보내세요. 감지, 분할, 시맨틱, 깊이, 포즈 및 OBB 모델은 imgsz=640에서 내보내세요. 이 224/640 표준은 공식 CoreML, LiteRT 및 QNN 모바일 에셋에서 공통으로 사용됩니다.
Apple은 iOS 27 및 macOS 27 세대를 위해 새로운 Core AI 프레임워크 및 .aimodel 형식을 도입했지만, Ultralytics는 현재 이를 내보내지 않습니다. CoreML은 현재 Ultralytics 릴리스 및 광범위한 Apple 장치 호환성을 위한 지원 형식으로 유지됩니다.
Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀
CoreML이란 무엇입니까?#
Apple이 "Core ML"로 표기하는 CoreML은 Apple의 온디바이스 머신러닝 프레임워크입니다. 이 프레임워크는 최신 ML Program 형식(Ultralytics 내보내기 도구가 생성하는 .mlpackage 번들)으로 모델을 로드하고, 모든 Apple 실리콘 칩의 전용 NPU인 장치의 CPU, GPU 및 **Apple Neural Engine(ANE)**에 걸쳐 모델을 예약합니다. 모든 것이 로컬에서 실행되므로 추론이 오프라인으로 작동하고 네트워크 지연 시간이 추가되지 않으며 사용자 데이터가 장치에 유지됩니다.
CoreML은 모델로 들어가는 과정에서 이미지 크기 조정 및 방향을 처리하는 Apple의 Vision 프레임워크와 직접 통합됩니다. 이것이 바로 Ultralytics iOS SDK가 사실상 전처리 비용 없이 카메라 프레임을 YOLO에 공급하는 방식입니다.
YOLO26을 CoreML로 내보내야 하는 이유는 무엇입니까?#
- Neural Engine 속도: CoreML은 저지연 온디바이스 추론을 위해 Apple의 Neural Engine에서 지원되는 연산을 예약합니다. 아래의 실제 기기 표를 참고하고 대상 하드웨어에서 정확한 내보내기 성능을 벤치마크하세요.
- 설계상 NMS 불필요: YOLO26은 엔드투엔드 방식이므로 내보낸 그래프에 NMS 파이프라인이 필요하지 않으며 디코딩이 1밀리초 미만으로 수행됩니다. YOLO11과 같은 이전 감지 모델은
nms=True을 사용하여 CoreML NMS 파이프라인을 임베드할 수 있습니다. - 비공개 및 오프라인: 모든 연산이 장치 내에서 유지되므로 클라우드 왕복이나 API 키가 필요 없으며 완전한 데이터 프라이버시가 보장됩니다.
- 한 번의 내보내기로 전체 생태계 활용: 동일한
.mlpackage이 iOS, iPadOS, macOS, watchOS, tvOS 및 visionOS에서 실행되며 공식 Ultralytics iOS SDK 및 Flutter 플러그인을 구동합니다.
측정된 성능#
12 GB 메모리와 iOS 26.5.2가 탑재된 iPhone 17 Pro에서의 표준화된 v8.3.0 YOLO26n INT8 CoreML 에셋에 대한 엔드투엔드 단일 이미지 추론입니다. A19 Pro에는 6코어 CPU(성능 코어 2개, 효율 코어 4개), 신경망 가속기가 포함된 6코어 GPU, 16코어 Neural Engine이 탑재되어 있습니다. 각 셀은 단계별 분할을 하단에 표시한 상태로 (어노테이션을 제외한 전처리 + 추론 + 후처리의) 총 시간을 보여줍니다. iOS에서는 Vision이 추론 요청 내에서 입력 크기 조정을 수행하므로 전처리는 0으로 보고되며 그 비용은 추론에 포함됩니다.
| 모델 | 작업 | 크기 (픽셀) | CPU Core ML .cpuOnly(ms) | 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 | 의미론적(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 |
- 정확한
v8.3.0릴리스 에셋은 분류를 위해 224×224 입력을 선언하고 다른 모든 작업에 대해서는 640×640 입력을 선언합니다. - 속도 값은 프로파일 모드(최적화된 네이티브 코드)의 Flutter 플러그인 벤치마크 허브를 통해 측정된 iOS SDK의 단계별 타이밍에 따라
bus.jpg에서 3회의 워밍업 실행 후 15회 실행의 평균인 단일 이미지 버스트 지연 시간입니다. CPU/가속기 순서는 하나의 순차적 스윕에서 작업 간에 교대되었습니다. CPU 행은 Core ML.cpuOnly을 요청하고, CPU + ANE 선호 행은.cpuAndNeuralEngine를 요청하며, 최종 연산 배치는 Core ML에 의해 제어됩니다. 지속적인 실시간 카메라 동작은 캡처 및 크기 조정 파이프라인과 열 안정화가 포함되기 때문에 더 높게 실행됩니다. 이전의 표준화 전 카메라 스윕에서는 동일한 기기에서 YOLO26n 감지의 경우 11.3 ms/프레임, YOLO26n Depth의 경우 16.5 ms/프레임을 측정했습니다. 안정 상태 프로파일링에 대해서는 iOS SDK 성능 문서를 참조하십시오. - LiteRT 통합에서 Android CPU/GPU 결과를 비교하고 Qualcomm QNN 통합에서 Snapdragon NPU 결과를 비교하세요.
지원되는 작업#
CoreML 내보내기는 7가지 Ultralytics 작업을 모두 지원합니다. 시맨틱 세그멘테이션과 깊이 추정은 해당 헤드가 포함된 유일한 패밀리인 YOLO26에서만 사용할 수 있습니다.
YOLO26 모델을 CoreML로 내보내기#
설치#
필수 패키지를 설치하려면 다음을 실행하십시오:
# Install the required package for YOLO26
pip install ultralyticscoremltools 변환기는 첫 번째 내보내기 시 자동으로 설치됩니다. 내보내기는 macOS 또는 x86 Linux에서 실행됩니다. 자세한 지침과 모범 사례는 설치 가이드와 일반적인 문제 가이드를 확인하세요.
사용법#
CoreML 형식은 내보내기, 예측 및 검증 모드를 지원합니다. CoreML을 사용한 추론 및 검증은 macOS에서만 실행됩니다. 모델을 내보낸 다음 내보낸 모델을 로드하여 추론을 실행하거나 정확도를 검증하세요.
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")내보내기 인수#
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
format | str | 'coreml' | 내보낸 모델의 대상 형식이며, 다양한 배포 환경과의 호환성을 정의합니다. |
imgsz | int 또는 tuple | 640 | 모델 입력에 사용할 원하는 이미지 크기입니다. 정방형 이미지의 경우 정수일 수 있으며, 특정 치수의 경우 튜플 (height, width)일 수 있습니다. |
quantize | int 또는 str | None | 양자화 정밀도(CoreML의 경우 가중치 전용): 16(FP16), 8(INT8), "w8a16"(FP16 활성화가 포함된 INT8 가중치) 또는 32/설정되지 않음(FP32). 설정되지 않은 NMS ML Program은 Xcode 미리보기를 위해 FP16을 사용합니다. 재정의하려면 32를 전달하세요. 더 이상 사용되지 않는 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 실리콘용 MPS(device=mps). |
내보내기 프로세스에 대한 자세한 내용은 내보내기에 관한 Ultralytics 문서 페이지를 방문하세요.
Neural Engine 타겟팅#
CoreML은 MLModelConfiguration.computeUnits을 통해 하드웨어를 선택합니다. Ultralytics iOS SDK는 .all 대신 iOS 16+에서 기본적으로 .cpuAndNeuralEngine을 사용합니다. 실시간 카메라 앱에서는 GPU가 이미 미리보기와 오버레이를 합성하느라 바쁘기 때문에 이를 제외하면 ANE이 무거운 작업을 수행하는 동안 경합과 프레임 타임 지터를 방지할 수 있습니다. 호환성 테스트를 위해서만 .cpuOnly을 고정하세요. 위의 표는 그 비용을 보여줍니다.
Mac 호스트(Ultralytics 또는 coremltools을 통해)에서 Python으로 CoreML 모델을 실행하는 것도 동일한 규칙을 따릅니다. Ultralytics는 ComputeUnit.CPU_AND_NE(macOS 13+, 구형 macOS에서는 CPU_ONLY로 대체)로 로드되어 추론을 Neural Engine에 유지합니다(CPU보다 약 3배 빠름). 이는 또한 GPU/MPSGraph 컴파일 경로를 추가하는 기본 ComputeUnit.ALL / CPU_AND_GPU가 coremltools 9.x에서 Error: MLIR pass manager failed 어설션과 함께 프로세스를 중단하는 현재 macOS 호스트 제한을 방지합니다.
내보낸 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 성능 보고서: 정확한 모델 및 장치에 대한 레이어별 장치 배치 및 지연 시간 프로파일링입니다.
앱 번들에 내장(즉시 사용 가능, 나노/소형 모델에 이상적)하거나 첫 실행 시 다운로드하여 캐시(더 작은 바이너리, 쉬운 모델 업데이트)하는 방식으로 모델을 배송합니다. 공식 앱은 두 가지 접근 방식을 결합합니다. 기본 나노 모델은 즉시 사용할 수 있도록 번들로 제공되고, 더 큰 변형은 필요에 따라 다운로드되어 로컬에 캐시됩니다.
권장 워크플로우#
- Ultralytics 학습 모드로 모델을 학습시키거나 공식 YOLO26 가중치에서 시작하세요.
- macOS 또는 x86 Linux에서
model.export(format="coreml", quantize=8, imgsz=640)을 사용하여 내보냅니다(분류의 경우imgsz=224). - Mac에서
model.val()으로 정확도를 검증하고 대상 장치에서 Xcode Core ML 성능 보고서로 프로파일링합니다. .cpuAndNeuralEngine을 대상으로 iOS SDK, Flutter 플러그인 또는 자체 Vision 통합을 사용하여 배포합니다.
요약#
이 가이드에서는 Ultralytics YOLO26 모델을 CoreML의 .mlpackage 형식으로 내보내고, Apple Neural Engine용으로 양자화하며, 공식 iOS SDK 및 Flutter 플러그인 또는 자체 Vision 통합을 통해 한 자릿수 밀리초의 지연 시간으로 배포하는 방법을 배웠습니다. 다른 배포 대상의 경우 통합 가이드 페이지를 탐색하고 벤치마크 모드로 형식을 비교하세요.
FAQ#
YOLO26 모델을 CoreML 형식으로 어떻게 내보내나요?#
macOS 또는 x86 Linux에서 Python으로 model.export(format="coreml", imgsz=640)을 실행하거나 CLI에서 yolo export model=yolo26n.pt format=coreml imgsz=640을 실행하세요. 분류를 위해 imgsz=224를 사용하고 공식 앱 모델과 일치시키려면 quantize=8을 추가하세요. 내보내기를 통해 Xcode, iOS SDK 또는 Flutter 플러그인용으로 준비된 yolo26n.mlpackage ML Program이 생성됩니다.
YOLO26을 내보낼 때 nms=True이 필요한가요?#
아니요. YOLO26은 NMS가 필요 없는 엔드투엔드 형식이므로 내보낸 그래프가 이미 최종 감지를 출력하고 디코딩 비용이 1밀리초보다 훨씬 낮습니다. nms=True 옵션은 앱에서 억제를 구현할 필요가 없도록 CoreML NMS 파이프라인을 임베드하는 YOLO11과 같은 이전 감지 모델을 위해 존재합니다. CoreML NMS 파이프라인은 객체 감지만 지원하므로 세분화 및 포즈와 같은 다른 작업의 경우 nms=True은 경고와 함께 무시됩니다.
FP16과 INT8 중 어떤 정밀도를 사용해야 하나요?#
공식 Ultralytics 앱 모델은 다운로드 크기를 최소화하고 위의 표에 있는 속도로 실행되는 INT8로 제공됩니다. quantize=16(FP16)은 정확도 저하가 거의 없는 보수적인 대안입니다. 배포하기 전에 Mac에서 model.val()로 정확한 내보내기를 검증하세요.
추론이 Neural Engine에서 실행되도록 하려면 어떻게 해야 하나요?#
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(iOS 16 이상의 iOS SDK 기본값)을 설정합니다. 카메라 앱에서 .all을 피하세요. GPU가 미리보기를 합성하느라 바쁘며 거기에 추론을 예약하면 프레임 시간 지터가 발생합니다. Xcode Core ML 성능 보고서로 배치를 확인하세요.
Ultralytics CLI를 사용하여 CoreML 모델을 실행하고 검증할 수 있나요?#
네, macOS에서 가능합니다: yolo predict model=yolo26n.mlpackage source=image.jpg과 yolo val model=yolo26n.mlpackage data=coco8.yaml은 다른 형식과 마찬가지로 작동합니다. CoreML 실행에는 Apple 하드웨어가 필요하므로 이러한 모드는 Linux 및 Windows에서 사용할 수 없습니다.
iOS 또는 Flutter 앱에서 YOLO26을 가장 빠르게 실행하는 방법은 무엇인가요?#
공식 Ultralytics YOLO iOS SDK(Swift Package) 또는 Flutter 플러그인을 사용하세요. 둘 다 자동 다운로드 및 캐싱을 통해 이름으로 공식 모델을 로드하고, Neural Engine에서 실행하며, 완전한 실시간 카메라 UI를 포함합니다. 위에 측정된 성능 표는 정확히 이 스택으로 생성되었습니다.