Ultralytics YOLO27:

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

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

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

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

公式モバイル入力サイズ

分類モデルはimgsz=224でエクスポートします。検出、セグメンテーション、セマンティック、深度、ポーズ、OBBモデルはimgsz=640でエクスポートします。この224/640の標準は、公式CoreML、LiteRT、QNNモバイルアセットで共通です。

Appleの新しいCore AIフォーマット

AppleはiOS 27およびmacOS 27世代向けに、新しいCore AIフレームワークと.aimodelフォーマットを導入しました。Ultralyticsはformat="coreai"でこれをエクスポートします。CoreMLは引き続きUltralyticsのiOSおよびFlutter SDKのデフォルトフォーマットであり、iOS 27デバイスではオプトインでCore AIを読み込めます。また、Appleデバイスとの幅広い互換性を実現するフォーマットです。



視聴: INT8量子化を使用してUltralytics YOLO26をCoreMLにエクスポートする方法 | Appleデバイスへのデプロイ | iOS/MacOS 🍎

CoreMLとは何ですか?#

Apple CoreML deployment pipeline

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

CoreMLはAppleのVisionフレームワークと直接連携し、モデルに入力する際の画像のスケーリングと向きを処理します。これにより、Ultralytics iOS SDKは実質的に前処理コストをかけずに、カメラフレームをYOLOに渡せます。

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

  • Neural Engineの速度:CoreMLは、対応する演算をAppleのNeural Engineに割り当て、低レイテンシのオンデバイス推論を実現します。以下の実機表を確認し、対象ハードウェアで実際のエクスポートをベンチマークしてください。
  • 出力を選択:デフォルトのエクスポートでは、NMS処理をアプリ側に任せます。NMSを組み込むにはnms=True、YOLO26のNMSフリーヘッドを使用するにはnms=Falseを指定します。
  • プライベートかつオフライン:すべての計算はデバイス上で完結するため、クラウドとの通信もAPIキーも不要で、データプライバシーを完全に確保できます。
  • 1回のエクスポートでエコシステム全体に対応:同じ.mlpackageはiOS、iPadOS、macOS、watchOS、tvOS、visionOSで動作し、公式UltralyticsのiOS SDKとFlutterプラグインを支えます。

実測パフォーマンス#

標準化されたv8.3.0 YOLO26n INT8 CoreMLアセットを使用した、単一画像のエンドツーエンド推論です。メモリ12 GB、iOS 26.5.2を搭載したiPhone 17 Proで測定しました。A19 Proは6コアCPU(高性能コア2基と高効率コア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-semセマンティック6409.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リリースアセットでは、分類の入力サイズが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エクスポートは、Ultralyticsの7つすべてのタスクに対応しています。セマンティックセグメンテーションと深度推定は、これらのヘッドを備える唯一のファミリーであるYOLO26でのみ利用できます。

タスクYOLOv8YOLO11YOLO26
検出✅✅✅
セグメンテーション✅✅✅
セマンティック❌❌✅
深度❌❌✅
分類✅✅✅
姿勢推定✅✅✅
OBB✅✅✅

YOLO26モデルをCoreMLにエクスポートする#

インストール#

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

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

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

使用方法#

CoreMLフォーマットは、エクスポート、予測、検証の各モードに対応しています。CoreMLによる推論と検証はmacOSでのみ実行できます。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証してください。

エクスポート
from ultralytics import YOLO

# YOLO26モデルを読み込みます
model = YOLO("yolo26n.pt")

# INT8重み量子化を適用してCoreMLにエクスポートし、公式アプリモデルと一致させます
model.export(format="coreml", quantize=8, imgsz=640)  # 分類ではimgsz=224を使用します
推論
from ultralytics import YOLO

# エクスポート済みのCoreMLモデルを読み込みます(macOS)
model = YOLO("yolo26n.mlpackage")

# 推論を実行
results = model("https://ultralytics.com/images/bus.jpg")
検証
from ultralytics import YOLO

# エクスポート済みのCoreMLモデルを読み込みます(macOS)
model = YOLO("yolo26n.mlpackage")

# COCO8データセットで精度を検証します
metrics = model.val(data="coco8.yaml")

エクスポート引数#

引数種類デフォルト説明
formatstr'coreml'エクスポートしたモデルのターゲットフォーマットです。さまざまなデプロイ環境との互換性を定義します。
imgszintまたはtuple640モデル入力の画像サイズです。正方形画像の場合は整数、特定のサイズの場合はタプル(height, width)を指定できます。
quantizeintまたはstrNone量子化精度(CoreMLでは重みのみ):16(FP16)、8(INT8)、"w8a16"(INT8重みとFP16アクティベーション)、または32/未指定(FP32)です。NMS ML ProgramはFP16を使用します(Xcodeプレビューで使用し、segmentとposeでは必須です)。detectでは32を渡すと上書きできます。非推奨のhalf/int8フラグを置き換えます。
nmsbool、省略可None生出力(None、デフォルト)、NMS組み込み(True)、NMSフリーヘッド(False)のいずれかを選択します。NMS組み込みは、dynamic=Falseを使用するdetect、segment、poseに対応しています。
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は、.allではなく、iOS 16以降でデフォルトの.cpuAndNeuralEngineを使用します。リアルタイムカメラアプリでは、GPUはプレビューとオーバーレイの合成ですでに負荷がかかっているため、GPUを除外すると競合やフレーム時間の揺らぎを避けられ、重い処理はANEが担います。互換性テストでのみ.cpuOnlyを固定してください。上の表でそのコストを確認できます。

MacホストからPythonでCoreMLモデルを実行する場合(Ultralyticsまたはcoremltools経由)も、同じルールに従います。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プラグインを使用します。

Appleのスタックを使って独自に生の.mlpackageを統合するのも簡単です。MLModelで読み込み、VNCoreMLRequestでラップして、VNImageRequestHandler経由で画像を渡します。詳しくは以下の資料をご覧ください。

モデルはアプリバンドルに埋め込む(すぐに利用でき、小型モデルに最適)か、初回起動時にダウンロードしてキャッシュする(バイナリを小さくでき、モデルを簡単に更新可能)方法で配布できます。公式アプリでは両方の方法を組み合わせています。デフォルトのnanoモデルはすぐに使えるよう同梱し、大型モデルは必要に応じてダウンロードしてローカルにキャッシュします。

  1. UltralyticsのTrainモードでモデルをトレーニングするか、公式YOLO26重みから開始します
  2. macOSまたはx86 Linuxでmodel.export(format="coreml", quantize=8, imgsz=640)を使用してエクスポートします(分類ではimgsz=224を使用します)
  3. Mac上でmodel.val()を使用して精度を検証し、対象デバイスでXcode Core MLパフォーマンスレポートを使ってプロファイリングします
  4. iOS SDK、Flutterプラグイン、または独自のVisionインテグレーションを使用して、.cpuAndNeuralEngineをターゲットにデプロイします

概要#

このガイドでは、Ultralytics YOLO26モデルをCoreMLの.mlpackageフォーマットにエクスポートし、Apple Neural Engine向けに量子化して、公式iOS SDKとFlutterプラグイン、または独自のVisionインテグレーションを通じて、数ミリ秒台のレイテンシでデプロイする方法を説明しました。他のデプロイ先については、インテグレーションガイドページを参照し、Benchmarkモードでフォーマットを比較してください。

よくある質問#

  • 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が生成されます。

  • アプリ側でNMSを適用した検出結果が必要な場合は、nms=Trueを使用します。デフォルトのnms=Noneは、アプリ側で処理する生のone-to-many出力をエクスポートします。nms=FalseはYOLO26のNMSフリーヘッドを選択します。組み込みNMSは固定形状のdetect、segment、poseに対応し、その他のタスクではネイティブ出力が維持されます。

  • Ultralyticsの公式アプリモデルはINT8で提供され、ダウンロードサイズを最小限に抑えつつ、上の表に示す速度で動作します。quantize=16(FP16)は、精度の損失が実質的にない保守的な選択肢です。リリース前にMac上でmodel.val()を使用して、実際のエクスポートを検証してください。

  • MLModelConfiguration.computeUnits = .cpuAndNeuralEngineを設定します(iOS 16以降のiOS SDKのデフォルトです)。カメラアプリでは.allを避けてください。GPUはプレビューの合成で負荷がかかっており、そこで推論をスケジュールするとフレーム時間が揺らぎます。Xcode Core MLパフォーマンスレポートで割り当てを確認してください。

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

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

コメント