YOLO26モデルのCoreMLエクスポート#
Appleはすべての最新のiPhone、iPad、Macに専用のAIシリコン(Neural Engine)を搭載しており、CoreMLは現在、モデルをそこにデプロイするためのUltralyticsがサポートするパスです。Ultralytics YOLO26モデルをCoreMLにエクスポートすると、学習済み.ptチェックポイントがネイティブの.mlpackageに変換され、ネットワーク接続なしで、かつデバイスからデータが外部に出ることなく、7つのYOLOタスクすべてをオンデバイスで低レイテンシで実行できます。
公式の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とは何ですか?#
CoreML(Appleによる表記は「Core ML」)は、Appleのオンデバイス機械学習フレームワークです。最新の ML Program フォーマット(Ultralyticsエクスポーターが生成する .mlpackage バンドル)でモデルを読み込み、デバイスのCPU、GPU、およびすべてのAppleシリコンチップに搭載された専用NPUである**Apple Neural Engine(ANE)**に割り当てて実行します。すべてがローカルで実行されるため、推論はオフラインで動作し、ネットワークのレイテンシを追加せず、ユーザーデータをデバイス内に保持します。
CoreMLはAppleのVisionフレームワークと直接統合されており、モデルへの入力時における画像のスケーリングと向きの調整を処理します。これが、Ultralytics iOS SDKが実質的に前処理コストゼロでカメラフレームをYOLOにフィードする仕組みです。
なぜYOLO26をCoreMLにエクスポートするのですか?#
- Neural Engine の速度: CoreML は、デバイス上での低レイテンシ推論のために、Apple の Neural Engine でサポートされている操作をスケジュールします。以下の物理デバイスの表を参照し、ターゲットハードウェアで正確なエクスポートのベンチマークを実行してください。
- NMSフリーのデザイン: YOLO26はエンドツーエンドであるため、エクスポートされたグラフにNMSパイプラインは不要であり、デコードはサブミリ秒で行われます。YOLO11のような古い検出モデルでは、
nms=Trueを使用してCoreML NMSパイプラインを埋め込むことができます。 - プライベートかつオフライン: すべての計算がデバイス上で実行されるため、クラウドへの往復やAPIキーは不要で、完全なデータプライバシーが保たれます。
- 1回のエクスポートでエコシステム全体に対応: 同じ
.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 | セマンティック | 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が宣言されています。 - 速度の値は単一画像のバーストレイテンシであり、
bus.jpg上での3回のウォームアップ実行後の15回実行の平均です。iOS SDKのステージごとのタイミングを、Flutterプラグインのプロファイルモード(最適化されたネイティブコード)でのベンチマークハーネスを通じて測定しています。CPUとアクセラレータの順序は、1回のシーケンシャルなスイープの中でタスクごとに交互に切り替えられました。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フォーマットは、Export、Predict、およびValidateモードをサポートしています。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 documentation page on exporting をご覧ください。
Neural Engineをターゲットにする#
CoreML は MLModelConfiguration.computeUnits を介してハードウェアを選択します。Ultralytics iOS SDK は、iOS 16 以降では .all ではなくデフォルトで .cpuAndNeuralEngine を使用します。リアルタイムのカメラアプリでは、GPU がすでにプレビューとオーバーレイの合成に忙しいため、GPU を除外することで、ANE が重い処理を行っている最中の競合やフレームタイムのジッターを防ぎます。互換性テストのためだけに .cpuOnly をピン留めしてください(上の表にそのコストが示されています)。
Python から Mac ホスト(Ultralytics または coremltools 経由)で CoreML モデルを実行する場合も、同じルールに従います。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プラグインを駆動するのと同じ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プラグインを使用します。
未加工の .mlpackage を自分で統合するのも、Appleのスタックを使用すれば簡単です。MLModel でロードし、VNCoreMLRequest でラップし、VNImageRequestHandler を通じて画像をフィードします。詳細については、以下のリソースを参照してください。
- アプリへのCore MLモデルの統合: CoreMLモデルをバンドルして呼び出すためのAppleのガイド。
- CoreML Tools: このエクスポートを駆動する
coremltoolsツールチェーンの変換、量子化、および最適化のリファレンス。 - Xcode Core ML パフォーマンスレポート: 正確なモデルとデバイスに対するレイヤーごとのデバイス配置とレイテンシのプロファイリング。
アプリバンドルに埋め込む(即座に利用可能、nano/small モデルに最適)か、初回実行時にダウンロードしてキャッシュする(バイナリが小さく、モデルの更新が容易)のいずれかの方法でモデルを出荷します。公式アプリでは両方のアプローチを組み合わせています。デフォルトの nano モデルは即座に使用できるようにバンドルされ、より大きなバリアントはオンデマンドでダウンロードされ、ローカルにキャッシュされます。
推奨されるワークフロー#
- Ultralytics Trainモードでモデルをトレーニングするか、公式の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インテグレーションを介して一桁ミリ秒のレイテンシでデプロイする方法を学びました。その他のデプロイターゲットについては、インテグレーションガイドページを参照し、Benchmarkモードでフォーマットを比較してください。
よくある質問 (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を備えています。上記の測定されたパフォーマンスのテーブルは、まさにこのスタックで生成されました。