YOLO26モデルのONNXエクスポート#
CPU ONNX推論が約43%高速化: YOLO26nとYOLO11nの比較
- YOLO26nはCPUでのONNX推論において、YOLO11nより最大43%高速に動作します(Intel Xeon CPU @ 2.00 GHz)。詳しい比較については、YOLO26モデルページをご覧ください。
コンピュータービジョンモデルをデプロイする際には、多くの場合、柔軟性があり、複数のプラットフォームと互換性のあるモデル形式が必要になります。
Ultralytics YOLO26モデルをONNX形式にエクスポートすると、デプロイが簡素化され、さまざまな環境で最適なパフォーマンスを発揮できます。このガイドでは、YOLO26モデルを簡単にONNXに変換し、実環境のアプリケーションでスケーラビリティと有効性を高める方法を説明します。
視聴: Ultralytics YOLO26とUltralytics YOLO11のONNX推論テスト | YOLO26で推論を約43%高速化 🚀
ONNXとONNX Runtime#
ONNXはOpen Neural Network Exchangeの略称で、FacebookとMicrosoftが当初開発したコミュニティプロジェクトです。ONNXの開発は現在も続いており、IBM、Amazon(AWS経由)、Googleなどのさまざまな組織が協力しています。このプロジェクトは、異なるAIフレームワークやハードウェア間で利用できるよう、機械学習モデルを表現するオープンなファイル形式の作成を目指しています。
ONNXモデルを使うと、異なるフレームワーク間でシームレスに移行できます。たとえば、PyTorchでトレーニングしたディープラーニングモデルをONNX形式にエクスポートし、TensorFlowに簡単にインポートできます。
また、ONNXモデルはONNX Runtimeでも使用できます。ONNX Runtimeは、PyTorch、TensorFlow、scikit-learnなどのフレームワークと互換性のある、汎用的なクロスプラットフォーム機械学習モデルアクセラレーターです。
ONNX Runtimeは、ハードウェア固有の機能を活用してONNXモデルの実行を最適化します。この最適化により、CPU、GPU、専用アクセラレーターなど、さまざまなハードウェアプラットフォーム上でモデルを効率的かつ高性能に実行できます。
単独でもONNX Runtimeとの併用でも、ONNXは機械学習モデルのデプロイと互換性を実現する柔軟なソリューションを提供します。
ONNXモデルの主な特徴#
ONNXがさまざまな形式に対応できるのは、次のような主な特徴があるためです。
-
共通のモデル表現: ONNXは、演算子(畳み込みやレイヤーなど)の共通セットと標準データ形式を定義します。モデルをONNX形式に変換すると、そのアーキテクチャと重みがこの共通表現に変換されます。この統一性により、ONNXに対応するあらゆるフレームワークでモデルを扱えます。
-
バージョン管理と後方互換性: ONNXは演算子のバージョン管理システムを維持しています。これにより、標準が進化しても、古いバージョンで作成されたモデルを引き続き使用できます。後方互換性は、モデルがすぐに陳腐化するのを防ぐ重要な機能です。
-
グラフベースのモデル表現: ONNXはモデルを計算グラフとして表現します。このグラフ構造は機械学習モデルを表す汎用的な方法であり、ノードは演算や計算を、エッジはノード間を流れるテンソルを表します。同様にモデルをグラフとして表現するさまざまなフレームワークに、この形式を容易に適用できます。
-
ツールとエコシステム: ONNXには、モデルの変換、可視化、最適化を支援するツールの豊富なエコシステムがあります。これらのツールにより、開発者はONNXモデルを扱いやすくなり、異なるフレームワーク間でモデルをシームレスに変換できます。
ONNXの一般的な用途#
YOLO26モデルをONNX形式にエクスポートする方法を説明する前に、ONNXモデルが一般的にどのような場面で使われるかを見てみましょう。
CPUへのデプロイ#
ONNXモデルは、ONNX Runtimeとの互換性があるため、CPUにデプロイされることがよくあります。このランタイムはCPUでの実行に最適化されています。推論速度を大幅に向上させ、CPUでのリアルタイムデプロイを実現できます。
対応するデプロイオプション#
ONNXモデルは一般的にCPUで使用されますが、次のプラットフォームにもデプロイできます。
-
GPUアクセラレーション: ONNXは、CUDAを介したNVIDIA GPUのGPUアクセラレーションと、ROCmおよびMIGraphXを介したAMD GPUのGPUアクセラレーションに完全対応しています。
-
エッジデバイスとモバイルデバイス: ONNXはエッジデバイスやモバイルデバイスにも対応しており、オンデバイス推論やリアルタイム推論に最適です。軽量でエッジハードウェアと互換性があり、ベンダー固有のNPU形式であるHuawei Ascend、Snapdragonデバイス向けのQualcomm QNN、Rockchip NPU向けのRKNNの基盤としても利用されています。
-
Webブラウザー: ONNXはWebブラウザー上で直接実行でき、インタラクティブで動的なWebベースのAIアプリケーションを実現します。
対応タスク#
ONNXエクスポートはUltralyticsの7つすべてのタスクに対応しています。セマンティックセグメンテーションと深度推定はYOLO26でのみ利用可能です。これらのヘッドを搭載しているのはYOLO26ファミリーだけです。
YOLO26モデルをONNXにエクスポートする#
YOLO26モデルをONNX形式に変換すると、モデルの互換性とデプロイの柔軟性を高められます。Ultralytics YOLO26では簡単にエクスポートでき、さまざまなプラットフォームでモデルのパフォーマンスを大幅に向上できます。
インストール#
必要なパッケージをインストールするには、次を実行します。
# Install the required package for YOLO26
pip install ultralyticsインストール手順の詳細やベストプラクティスについては、YOLO26のインストールガイドをご覧ください。YOLO26に必要なパッケージのインストール中に問題が発生した場合は、解決策やヒントについてよくある問題のガイドをご確認ください。
使用方法#
使い方の説明に進む前に、Ultralyticsが提供するYOLO26モデルをご確認ください。プロジェクトの要件に最適なモデルを選ぶのに役立ちます。
ONNX形式はエクスポート、予測、検証の各モードに対応しています。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証してください。
from ultralytics import YOLO
# YOLO26モデルを読み込みます
model = YOLO("yolo26n.pt")
# モデルをONNXフォーマットにエクスポート
model.export(format="onnx") # 'yolo26n.onnx'を作成します
# キャリブレーションデータを使用してINT8量子化ONNXモデルをエクスポートします
model.export(format="onnx", quantize=8, data="coco8.yaml") # 'yolo26n_int8.onnx'を作成しますfrom ultralytics import YOLO
# エクスポートしたONNXモデルを読み込みます
model = YOLO("yolo26n.onnx")
# 推論を実行
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# エクスポートしたONNXモデルを読み込みます
model = YOLO("yolo26n.onnx")
# COCO8データセットで精度を検証します
metrics = model.val(data="coco8.yaml")エクスポート引数#
YOLO26モデルをONNX形式にエクスポートする際、さまざまな引数を使用して処理をカスタマイズし、特定のデプロイ要件に合わせて最適化できます。
| 引数 | 種類 | デフォルト | 説明 |
|---|---|---|---|
format | str | 'onnx' | エクスポートしたモデルのターゲットフォーマットです。さまざまなデプロイ環境との互換性を定義します。 |
imgsz | intまたはtuple | 640 | モデル入力の画像サイズです。正方形画像の場合は整数、特定のサイズの場合はタプル(height, width)を指定できます。 |
quantize | intまたはstr | None | 量子化精度: 16(FP16)または8(dataのキャリブレーション画像を使用したONNX RuntimeによるINT8静的量子化。_int8.onnxモデルを生成します)。32または未設定の場合はFP32です。quantize=8でトレーニングしたチェックポイントは、キャリブレーションなしで、保持されている範囲からQ/DQノードとして常にINT8にエクスポートされ、単純な.onnxという名前になります。非推奨のhalf/int8フラグを置き換えます。 |
data | str | None | INT8キャリブレーションに使用するデータセットYAMLです。分類タスクでは、代わりにデータセットディレクトリまたは組み込みデータセット名を指定します。quantize=8を指定せず、quantize=8でトレーニングしたチェックポイントを使用する場合、Ultralyticsはモデルのタスクに応じたデフォルトのキャリブレーションデータセットを選択します。チェックポイントにはキャリブレーションデータセットは不要です。 |
fraction | float、int、またはlist | 1.0 | キャリブレーション用サブセットを、比率、画像数、または[train, val, test]の比率/件数として指定します。2項目のリストではtestがすべて含まれ、0では除外されます。 |
dynamic | bool | False | 動的な入力サイズを使用できるようにし、さまざまな画像サイズを柔軟に扱えるようにします。 |
simplify | bool | True | onnxslimを使用してモデルグラフを簡素化し、パフォーマンスと互換性を向上させる可能性があります。 |
opset | int | None | さまざまなONNXパーサーやランタイムとの互換性を確保するために、ONNX opsetバージョンを指定します。未設定の場合は、サポートされている最新バージョンが使用されます。 |
nms | bool、省略可 | None | raw出力(None、デフォルト)、組み込みNMS(True)、NMSなしのヘッド(False)から選択します。 |
batch | int | 1 | エクスポートモデルのバッチ推論サイズ、またはpredictモードでエクスポートモデルが同時に処理する画像の最大数を指定します。 |
device | str | None | エクスポートに使用するデバイスを指定します。GPU(device=0)、CPU(device=cpu)、Appleシリコン向けMPS(device=mps)から選択します。 |
エクスポートプロセスの詳細については、Ultralyticsのエクスポートに関するドキュメントページをご覧ください。
エクスポート済みYOLO26 ONNXモデルのデプロイ#
Ultralytics YOLO26モデルをONNX形式に正常にエクスポートしたら、次はさまざまな環境にデプロイします。ONNXモデルのデプロイ手順については、次のリソースをご覧ください。
-
ONNX Runtime Python APIドキュメント: ONNX Runtimeを使ってONNXモデルを読み込み、実行するために必要な情報を説明します。
-
エッジデバイスへのデプロイ: ONNXモデルをエッジデバイスにデプロイするさまざまな例を、こちらのドキュメントページでご確認ください。
-
GitHubのONNXチュートリアル: さまざまなシナリオでONNXモデルを使用、実装する方法を幅広く解説する包括的なチュートリアル集です。
-
Triton Inference Server: NVIDIAのTriton Inference Serverを使ってONNXモデルをデプロイし、高性能でスケーラブルなデプロイを実現する方法をご覧ください。
MIGraphXによるAMD GPU推論#
Ultralyticsは、ONNX RuntimeのMIGraphX execution providerを介して、エクスポート済みONNXモデルをAMD GPU上で実行します。ROCm(HIP)システムでは、ONNXバックエンドが初回使用時にonnxruntime-ep-migraphxプラグインをインストールし、コードを変更せずにMIGraphXExecutionProviderを自動的に選択します。YOLO26のすべてのタスクに対応しています。前提条件、インストール、使用方法、ベンチマーク、コンパイル済みプログラムのキャッシュについては、AMD GPU推論ガイドをご覧ください。
概要#
このガイドでは、Ultralytics YOLO26モデルをONNX形式にエクスポートし、さまざまなプラットフォームで相互運用性とパフォーマンスを高める方法を学びました。また、ONNX RuntimeとONNXのデプロイオプションについても紹介しました。
ONNXエクスポートは、Ultralytics YOLO26がサポートする多くのエクスポート形式の一つであり、ほぼあらゆる環境にモデルをデプロイできます。特定の要件に応じて、GPUのパフォーマンスを最大化するTensorRTや、Appleデバイス向けのCoreMLなど、他のエクスポートオプションもご検討ください。
使用方法の詳細については、ONNX公式ドキュメントをご覧ください。
また、Ultralytics YOLO26の他の統合方法について詳しく知りたい場合は、統合ガイドページをご覧ください。役立つリソースや情報を多数ご紹介しています。
よくある質問#
Ultralyticsを使ってYOLO26モデルをONNX形式にエクスポートするには、次の手順に従ってください。
使用方法from ultralytics import YOLO # YOLO26モデルを読み込みます model = YOLO("yolo26n.pt") # モデルをONNXフォーマットにエクスポート model.export(format="onnx") # 'yolo26n.onnx'を作成します # エクスポートしたONNXモデルを読み込みます onnx_model = YOLO("yolo26n.onnx") # 推論を実行 results = onnx_model("https://ultralytics.com/images/bus.jpg")詳しくは、エクスポートのドキュメントをご覧ください。
YOLO26モデルのデプロイにONNX Runtimeを使用すると、次のようなメリットがあります。
- クロスプラットフォーム互換性: ONNX RuntimeはWindows、macOS、Linuxなどさまざまなプラットフォームに対応しており、異なる環境でもモデルをスムーズに実行できます。
- ハードウェアアクセラレーション: ONNX RuntimeはCPU、GPU、専用アクセラレーター向けのハードウェア固有の最適化を活用し、高性能な推論を実現します。
- フレームワーク間の相互運用性: PyTorchやTensorFlowなどの一般的なフレームワークでトレーニングしたモデルを、簡単にONNX形式に変換してONNX Runtimeで実行できます。
- パフォーマンスの最適化: ONNX RuntimeはネイティブのPyTorchモデルと比べてCPUで最大3倍の高速化を実現できるため、GPUリソースが限られるデプロイ環境に最適です。
詳しくは、ONNX Runtimeのドキュメントをご覧ください。
ONNXにエクスポートしたYOLO26モデルは、以下を含むさまざまなプラットフォームにデプロイできます。
- CPU: ONNX Runtimeを使用して、CPU推論を最適化します。
- NVIDIA GPU: NVIDIA CUDAを活用して、高性能なGPUアクセラレーションを実現します。
- AMD GPU: Linux上で高性能なGPUアクセラレーションを実現するために、AMD ROCmとMIGraphX実行プロバイダーを使用します。
- エッジデバイス: エッジデバイスやモバイルデバイスで軽量モデルを実行し、リアルタイムのオンデバイス推論を実現します。
- Webブラウザー: Webブラウザー内でモデルを直接実行し、インタラクティブなWebアプリケーションを実現します。
- クラウドサービス: ONNX形式をサポートするクラウドプラットフォームにデプロイし、スケーラブルな推論を実現します。
詳しくは、モデルのデプロイオプションに関するガイドをご覧ください。
Ultralytics YOLO26モデルにONNX形式を使用すると、さまざまなメリットが得られます。
- 相互運用性: ONNXを使用すると、異なる機械学習フレームワーク間でモデルをシームレスに移行できます。
- パフォーマンスの最適化: ONNX Runtimeは、ハードウェア固有の最適化を活用してモデルのパフォーマンスを向上させます。
- 柔軟性: ONNXはさまざまなデプロイ環境をサポートしているため、モデルを変更せずに異なるプラットフォームで使用できます。
- 標準化: ONNXは業界で広くサポートされている標準形式を提供し、長期的な互換性を確保します。
YOLO26モデルをONNXにエクスポートするための包括的なガイドをご覧ください。
YOLO26モデルをONNXにエクスポートする際、依存関係の不一致や未対応の演算など、よくある問題が発生することがあります。これらの問題をトラブルシューティングするには、以下を行ってください。
- 必要な依存関係が正しいバージョンでインストールされていることを確認してください。
- サポートされている演算子や機能については、公式のONNXドキュメントを確認してください。
- エラーメッセージから手がかりを探し、Ultralyticsのよくある問題に関するガイドを参照してください。
simplify=Trueなど、異なるエクスポート引数を試すか、opsetのバージョンを調整してください。- 動的な入力サイズに関する問題が発生する場合は、エクスポート時に
dynamic=Trueを設定してください。
問題が解決しない場合は、Ultralyticsサポートにお問い合わせください。