Ultralytics YOLO27:

YOLO26モデルのCoreMLへのエクスポート#

Appleは現行のすべてのiPhone、iPad、Macに専用AIシリコンであるNeural Engineを搭載しており、現在、CoreMLはモデルをそこにデプロイするためのUltralytics公式サポートパスです。Ultralytics YOLO26モデルをCoreMLにエクスポートすると、学習済みの.ptチェックポイントがネイティブな.mlpackageに変換されます。これにより、7つすべてのYOLOタスクを低レイテンシでデバイス上で実行でき、ネットワーク接続やデータのデバイス外送信も不要です。

公式モバイルアプリで今すぐApple Neural Engine上でYOLOを実行

公式のUltralytics YOLO iOS SDKFlutter pluginは、標準でCoreMLエクスポートをApple Neural Engine上で実行します。リアルタイムカメラ推論、単一画像の予測、Depthを含む7つすべてのYOLO26タスクに対応したモデルの自動ダウンロードが可能です。Android NPUへのデプロイについては、Qualcomm QNN integrationをご覧ください。

公式モバイル入力サイズ

classificationモデルはimgsz=224にエクスポートします。detect、segment、semantic、depth、pose、OBBモデルは imgsz=640にエクスポートします。この224/640標準は、公式のCoreML、LiteRT、QNNモバイルアセットで共通です。

Appleの新しいCore AI形式

AppleはiOS 27およびmacOS 27世代向けに、新しいCore AI frameworkと.aimodel formatを導入しており、Ultralyticsはformat="coreai"でこれにエクスポートします。CoreMLは、Ultralytics iOSおよびFlutter SDKと、より広範なAppleデバイス互換性向けの推奨形式です。



Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎

CoreMLとは何ですか?#

Apple CoreML deployment pipeline

CoreML(Appleによる表記は「Core ML」)は、Appleのオンデバイスmachine learningフレームワークです。最新のML Program形式、つまりUltralyticsエクスポーターが生成する.mlpackageバンドルのモデルを読み込み、デバイスのCPU、GPU、Apple Neural Engine (ANE)(すべてのAppleシリコンチップに搭載された専用NPU)に処理を振り分けます。すべてがローカルで実行されるため、推論はオフラインで動作し、ネットワークレイテンシが発生せず、ユーザーデータをデバイス内に保持できます。

CoreMLはAppleのVision frameworkと直接統合されています。Vision frameworkはモデルへの入力時に画像のスケーリングと向きを処理します。これにより、Ultralytics iOS SDKは実質的に前処理コストなしでカメラフレームをYOLOに入力できます。

YOLO26をCoreMLにエクスポートする理由#

  • Neural Engineの速度: CoreMLは、対応する演算をAppleのNeural Engineで実行するようスケジュールし、低レイテンシのオンデバイス推論を実現します。下記の実機テーブルを確認し、対象ハードウェアで実際に使用するエクスポートをベンチマークしてください。
  • 出力の選択: デフォルトのエクスポートでは、NMSの処理はアプリケーション側に委ねられます。NMSを埋め込むには nms=True を使用し、YOLO26 の NMS フリー ヘッドには nms=False を使用してください。
  • プライベートかつオフライン: すべての計算がデバイス内に留まるため、クラウドとの往復、APIキーが不要で、完全なdata privacyを実現します。
  • 1回のエクスポートでエコシステム全体に対応: 同じ.mlpackageをiOS、iPadOS、macOS、watchOS、tvOS、visionOSで実行でき、公式のUltralytics iOS SDKFlutter pluginを支えます。

実測パフォーマンス#

標準化されたv8.3.0 YOLO26n INT8 CoreMLアセットのエンドツーエンド単一画像推論を、メモリ12 GB、iOS 26.5.2のiPhone 17 Proで測定しました。A19 Proは、6コアCPU(Performanceコア2個、Efficiencyコア4個)、Neural Accelerators搭載の6コアGPU、16コアNeural Engineを備えています。各セルは合計時間(前処理 + 推論 + 後処理、アノテーションを除く)を示し、その下にステージ別の内訳を示します。iOSでは、Visionが推論リクエスト内で入力スケーリングを実行するため、前処理は0として報告され、そのコストは推論に含まれます。

モデルタスクサイズ
(ピクセル)
CPU
Core ML .cpuOnly
(ms)
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-semSemantic6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depth深度64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-cls分類2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-poseポーズ64011.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
  • 正確なv8.3.0リリースアセットでは、classificationの入力は224×224、その他すべてのタスクの入力は640×640と定義されています。
  • Speedの値は単一画像のバーストレイテンシです。bus.jpgでウォームアップ3回後に15回実行した平均値であり、プロファイルモード(最適化されたネイティブコード)で、iOS SDKのステージ別タイミングを通じて、Flutter pluginのベンチマークハーネスで測定しています。CPU/アクセラレーターの順序は、1回の逐次スイープ内でタスクごとに交互に変更しました。CPU行ではCore ML .cpuOnlyを要求し、CPU + ANE優先行では.cpuAndNeuralEngineを要求します。最終的な演算配置はCore MLが制御します。持続的なリアルタイムカメラ動作では、キャプチャとスケーリングのパイプライン、および熱的な安定化が含まれるため、値は高くなります。標準化前の過去のカメラスイープでは、同じデバイス上でYOLO26n detectが11.3 ms/frame、YOLO26n Depthが16.5 ms/frameでした。定常状態のプロファイリングについては、iOS SDK performance docをご覧ください。
  • AndroidのCPU/GPU結果はLiteRT integrationで、Snapdragon NPUの結果はQualcomm QNN integrationで比較してください。

サポートされるタスク#

CoreMLエクスポートは、Ultralyticsの7つすべてのタスクに対応しています。Semantic segmentationとdepth estimationはYOLO26でのみ利用できます。これらのヘッドを提供する唯一のファミリーがYOLO26です。

タスクYOLOv8YOLO11YOLO26
検出
セグメンテーション
セマンティック
深度
分類
ポーズ
OBB

YOLO26モデルのCoreMLへのエクスポート#

インストール#

必要なパッケージをインストールするには、次を実行します。

インストール
# Install the required package for YOLO26
pip install ultralytics

coremltoolsコンバーターは、初回のエクスポート時に自動でインストールされます。エクスポートはmacOSまたはx86 Linuxで実行できます。詳しい手順とベストプラクティスについては、installation guideCommon Issues guideをご確認ください。

使用方法#

CoreML形式は、ExportPredictValidateモードに対応しています。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 classification
推論
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")

エクスポート引数#

引数デフォルト説明
formatstr'coreml'エクスポートされたモデルの対象形式で、さまざまなデプロイ環境との互換性を定義します。
imgszintまたはtuple640モデル入力に使用する画像サイズです。正方形画像の場合は整数、特定の寸法の場合はタプル(height, width)を指定できます。
quantizeintまたはstrNone量子化精度(CoreMLでは重みのみ): 16(FP16)、8(INT8)、"w8a16"(FP16アクティベーションのINT8重み)、または32/未設定(FP32)。NMS ML ProgramsはFP16を使用します(Xcodeプレビューおよびsegment、poseで必須)。detectでは32を渡して上書きできます。非推奨のhalf/int8フラグに置き換わるものです。
nmsbool、オプションNone生出力(None、デフォルト)、埋め込みNMS(True)、またはNMSフリーヘッド(False)を選択します。埋め込みNMSは、dynamic=False を使用した検出、セグメンテーション、ポーズ推定をサポートします。
dynamicboolFalse動的な入力サイズを許可します。分類モデルまたは RT-DETR モデルではサポートされておらず、nms=True と組み合わせることはできません。
batchint1エクスポートモデルのバッチ推論サイズ、またはエクスポートされたモデルが predict モードで同時に処理する画像の最大数を指定します。1 を超える値には dynamic=True が必要です。
devicestrNoneエクスポートに使用するデバイスを指定します。GPU(device=0)、CPU(device=cpu)、Appleシリコン向けMPS(device=mps)を指定できます。

エクスポートプロセスの詳細については、エクスポートに関するUltralyticsドキュメントページをご覧ください。

Neural Engineを対象にする#

CoreMLはMLModelConfiguration.computeUnitsを介してハードウェアを選択します。Ultralytics iOS SDKは、iOS 16以降では.allではなく、デフォルトで.cpuAndNeuralEngineを使用します。リアルタイムカメラアプリでは、GPUはプレビューとオーバーレイの合成ですでに使用中のため、GPUを除外すると競合やフレーム時間の揺らぎを避けながら、ANEが主要な処理を担えます。互換性テストの場合に限り.cpuOnlyを固定してください。コストについては上記のテーブルをご覧ください。

MacホストからPythonでCoreMLモデルを実行する場合(Ultralytics経由またはcoremltools経由)も同じルールに従います。UltralyticsはComputeUnit.CPU_AND_NE(macOS 13以降、古いmacOSではCPU_ONLYにフォールバック)で読み込み、推論をNeural Engine上で実行します(CPUより約3倍高速です)。これにより、デフォルトのComputeUnit.ALL / CPU_AND_GPU(GPU/MPSGraphのコンパイルパスを追加)がcoremltools 9.x上でError: MLIR pass manager failedアサーションによりプロセスを中止する現在のmacOSホスト制限も回避できます。

エクスポート済みYOLO26 CoreMLモデルのデプロイ#

最も高速な方法は、公式のUltralytics YOLO iOS SDKです。これはUltralytics iOSアプリとFlutter pluginを支える同じ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と1つのコードベースを共有するクロスプラットフォームアプリにはFlutter pluginを使用してください。

Appleのスタックを使用すれば、raw .mlpackageを自分で統合することも簡単です。MLModelで読み込み、VNCoreMLRequestでラップし、VNImageRequestHandlerを通じて画像を入力します。詳細については、次のリソースをご覧ください。

  • Core ML Modelをアプリに統合する: CoreMLモデルのバンドルと呼び出しに関するAppleのガイドです。
  • CoreML Tools: このエクスポートを支えるcoremltoolsツールチェーンの変換、量子化、最適化リファレンスです。
  • Xcode Core ML Performance Reports: 使用するモデルとデバイスにおける、レイヤーごとのデバイス配置とレイテンシのプロファイリングです。

モデルはアプリバンドルに組み込んで(すぐに利用可能で、nano/smallモデルに最適)出荷するか、初回実行時にダウンロードしてキャッシュできます(バイナリを小さくでき、モデルの更新も容易です)。公式アプリは両方の方法を組み合わせています。デフォルトのnanoモデルはすぐに使用できるようバンドルし、大きなバリアントはオンデマンドでダウンロードしてローカルにキャッシュします。

推奨ワークフロー#

  1. UltralyticsのTrain modeでモデルをTrainするか、公式YOLO26 weightsから開始します。
  2. macOSまたはx86 Linuxでmodel.export(format="coreml", quantize=8, imgsz=640)を使用してExportします(classificationにはimgsz=224)。
  3. Macでmodel.val()を使用して精度をVerifyし、対象デバイス上のXcode Core ML Performance Reportでプロファイリングします。
  4. iOS SDK、Flutter plugin、または独自のVision統合を使用してDeployし、.cpuAndNeuralEngineを対象にします。

まとめ#

このガイドでは、Ultralytics YOLO26モデルをCoreMLの.mlpackage形式にエクスポートし、Apple Neural Engine向けに量子化して、公式iOS SDKとFlutter plugin、または独自のVision統合を通じて、1桁ミリ秒のレイテンシでデプロイする方法を学びました。その他のデプロイ先については、integration guide pageを参照し、Benchmark modeで形式を比較してください。

FAQ#

  • macOSまたはx86 Linuxで、Pythonではmodel.export(format="coreml", imgsz=640)を、CLIではyolo export model=yolo26n.pt format=coreml imgsz=640 を実行します。classificationにはimgsz=224を使用し、公式アプリモデルに合わせるにはquantize=8を追加します。エクスポートにより、Xcode、iOS SDK、Flutter pluginで使用できるyolo26n.mlpackage ML Programが生成されます。

  • アプリケーションでNMSが含まれる検出結果が必要な場合は、nms=True を使用してください。デフォルトの nms=None は、アプリケーション側で処理するための生の1対多の出力にエクスポートします。nms=False は YOLO26 の NMS フリー ヘッドを選択します。埋め込みNMSは静的シェイプでの検出、セグメンテーション、ポーズ推定をサポートし、その他のタスクでは従来の出力が維持されます。

  • 公式UltralyticsアプリモデルはINT8で提供されており、ダウンロードサイズを最小化し、上記テーブルの速度で実行できます。quantize=16(FP16)は、精度を実質的に損なわない保守的な代替手段です。出荷前に、Mac上でmodel.val()を使用して実際に使用するエクスポートを検証してください。

  • MLModelConfiguration.computeUnits = .cpuAndNeuralEngineを設定します(iOS 16以降のiOS SDKのデフォルト)。カメラアプリでは.allを避けてください。GPUはプレビューの合成で使用中であり、そこで推論をスケジュールするとフレーム時間が揺らぐためです。Xcode Core ML Performance Reportで配置を確認してください。

  • はい、macOSで実行できます。yolo predict model=yolo26n.mlpackage source=image.jpgyolo val model=yolo26n.mlpackage data=coco8.yamlは、他の形式と同様に動作します。CoreMLの実行にはAppleハードウェアが必要なため、これらのモードはLinuxとWindowsでは利用できません。

  • 公式のUltralytics YOLO iOS SDK(Swift Package)またはFlutter pluginを使用してください。どちらも公式モデルを名前で読み込み、自動ダウンロードとキャッシュを行い、Neural Engine上で実行します。また、完全なリアルタイムカメラUIも含まれています。上記の実測パフォーマンステーブルは、まさにこのスタックで生成されています。

コメント