YOLO26モデルのONNXエクスポート#
最大約43%の推論高速化。
- Ultralytics YOLO26モデルをONNXにエクスポートすることで、推論速度が最大43%向上し、より高速で効率的なデプロイが可能になります。
しばしば、computer vision モデルを展開する際には、柔軟性と複数プラットフォームへの互換性の両方を備えたモデルフォーマットが必要になります。
Ultralytics YOLO26 モデルを ONNX フォーマットにエクスポートすることで、デプロイが効率化され、さまざまな環境で最適なパフォーマンスが確保されます。このガイドでは、YOLO26 モデルを簡単に ONNX に変換し、実際のアプリケーションにおける拡張性と有効性を高める方法を紹介します。
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNXとONNX Runtime#
Open Neural Network Exchange の略である ONNX は、Facebook と Microsoft が初期に開発したコミュニティプロジェクトです。ONNX の継続的な開発は、IBM、Amazon (AWS を通じて)、Google などのさまざまな組織によってサポートされている共同の取り組みです。このプロジェクトは、machine learning モデルを表現するためのオープンなファイルフォーマットを作成し、異なる AI フレームワークやハードウェア間でモデルを使用できるようにすることを目指しています。
ONNX モデルを使用すると、異なるフレームワーク間をシームレスに移行できます。たとえば、PyTorch でトレーニングされた deep learning モデルを ONNX フォーマットにエクスポートし、その後 TensorFlow に簡単にインポートすることができます。
あるいは、ONNX モデルを ONNX Runtime と一緒に使用することもできます。ONNX Runtime は、PyTorchやTensorFlow、scikit-learn などのフレームワークと互換性のある、機械学習モデル向けの多用途なクロスプラットフォームアクセラレータです。
ONNX Runtimeは、ハードウェア固有の機能を活用してONNXモデルの実行を最適化します。この最適化により、CPU、GPU、特殊なアクセラレーターなど、様々なハードウェアプラットフォーム上でモデルを効率的かつ高性能に実行できるようになります。
単体で使用する場合でも、ONNX Runtime と組み合わせて使用する場合でも、ONNX は機械学習のmodel deploymentと互換性のための柔軟なソリューションを提供します。
ONNXモデルの主な特徴#
ONNXが様々なフォーマットを扱える能力は、以下の主な特徴に起因しています。
-
共通モデル表現: ONNXは、共通の演算子セット(畳み込み、レイヤーなど)と標準データフォーマットを定義します。モデルがONNXフォーマットに変換されると、そのアーキテクチャと重みは共通の表現に翻訳されます。この統一性により、ONNXをサポートするあらゆるフレームワークでモデルを理解できるようになります。
-
バージョニングと後方互換性: ONNXは演算子に対してバージョニングシステムを維持しています。これにより、標準が進化しても以前のバージョンで作成されたモデルが使用可能であり続けます。後方互換性は、モデルがすぐに陳腐化するのを防ぐ重要な機能です。
-
グラフベースのモデル表現: ONNXはモデルを計算グラフとして表現します。このグラフ構造は、機械学習モデルを表現する普遍的な方法であり、ノードが演算や計算を、エッジがそれらの間を流れるテンソルを表します。このフォーマットは、モデルをグラフとして表現する様々なフレームワークに容易に適応可能です。
-
ツールとエコシステム: ONNXの周辺には、モデルの変換、可視化、最適化を支援する豊富なツールエコシステムが存在します。これらのツールにより、開発者はONNXモデルを扱い、異なるフレームワーク間でモデルをシームレスに変換することが容易になります。
ONNXの一般的な用途#
YOLO26モデルをONNXフォーマットにエクスポートする方法に入る前に、ONNXモデルが一般的にどこで使用されているかを見ていきましょう。
CPUデプロイ#
ONNXモデルは、ONNX Runtimeとの互換性があるため、CPU上でデプロイされることがよくあります。このランタイムはCPU実行用に最適化されており、推論速度を大幅に向上させ、リアルタイムのCPUデプロイを可能にします。
サポートされているデプロイオプション#
ONNXモデルは通常CPUで使用されますが、以下のプラットフォームにもデプロイ可能です。
-
GPU アクセラレーション: ONNX は、特に NVIDIA CUDA の GPU アクセラレーションを完全にサポートしています。AMD GPU でのネイティブなトレーニングと推論には PyTorch ROCm を使用してください。ONNX ファイルには依然として AMD 互換のランタイムが必要です。
-
エッジおよびモバイルデバイス: ONNX はエッジおよびモバイルデバイスに拡張され、オンデバイスおよびリアルタイムの推論シナリオに最適です。軽量でエッジハードウェアと互換性があり、Huawei Ascend、Snapdragon デバイス向けの Qualcomm QNN、Rockchip NPU 向けの RKNN などのベンダー NPU フォーマットの基礎となります。
-
Webブラウザ: ONNXはWebブラウザ内で直接実行でき、インタラクティブでダイナミックなWebベースのAIアプリケーションを実現します。
サポートされているタスク#
ONNXの エクスポートは、7つの Ultralytics タスクすべてをサポートしています。セマンティックセグメンテーションと深度推定は、それらのヘッドを搭載している唯一のファミリーである YOLO26 でのみ利用可能です。
YOLO26モデルのONNXへのエクスポート#
YOLO26 モデルを ONNX フォーマットに変換することで、モデルの互換性とデプロイの柔軟性を拡張できます。Ultralytics YOLO26 は、さまざまなプラットフォーム間でのモデルのパフォーマンスを大幅に向上させることができる、シンプルでわかりやすいエクスポートプロセスを提供します。
インストール#
必要なパッケージをインストールするには、以下を実行してください:
# Install the required package for YOLO26
pip install ultralyticsインストールの詳細な手順とベストプラクティスについては、YOLO26 Installation guideをご確認ください。YOLO26に必要なパッケージのインストール中に問題が発生した場合は、Common Issues guideを参照して解決策やヒントを確認してください。
使用方法#
使用方法の説明に入る前に、Ultralyticsが提供するYOLO26モデルのラインナップをぜひご確認ください。これにより、プロジェクトの要件に最も適したモデルを選択できるようになります。
ONNX フォーマットは、Export、Predict、および Validate の各モードをサポートしています。モデルをエクスポートし、エクスポートしたモデルを読み込んで推論を実行するか、精度を検証します。
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml") # creates 'yolo26n_int8.onnx'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Validate accuracy on the COCO8 dataset
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 です。非推奨となった half / int8 フラグに置き換わるものです。 |
data | str | None | INT8キャリブレーションに使用されるデータセットYAML。分類の場合は、データセットディレクトリまたは組み込みのデータセット名を指定します。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 | False | Non-Maximum Suppression (NMS) を追加します。これは正確で効率的な検出後処理に不可欠です。 |
batch | int | 1 | エクスポートモデルのバッチ推論サイズ、またはpredictモードでエクスポートされたモデルが同時に処理する画像の最大数を指定します。 |
device | str | None | エクスポートに使用するデバイスを指定します:GPU(device=0)、CPU(device=cpu)、Appleシリコン用MPS(device=mps)。 |
エクスポートプロセスの詳細については、Ultralytics documentation page on exporting をご覧ください。
エクスポートされたYOLO26 ONNXモデルのデプロイ#
Ultralytics YOLO26モデルをONNXフォーマットへ正常にエクスポートしたら、次のステップはそれらのモデルを様々な環境にデプロイすることです。ONNXモデルのデプロイに関する詳細な手順については、以下のリソースを確認してください。
-
ONNX Runtime Python API Documentation: このガイドでは、ONNX Runtime を使用して ONNX モデルをロードおよび実行するための重要な情報を提供します。
-
Deploying on Edge Devices: エッジデバイスに ONNX モデルをデプロイするさまざまな例については、このドキュメントページをご確認ください。
-
ONNX Tutorials on GitHub: さまざまなシナリオでの ONNX モデルの使用と実装のさまざまな側面を網羅した、包括的なチュートリアルのコレクションです。
-
Triton Inference Server: 高性能でスケーラブルなデプロイのために、NVIDIA の Triton Inference Server で ONNX モデルをデプロイする方法を学びます。
要約#
本ガイドでは、Ultralytics YOLO26モデルをONNXフォーマットにエクスポートし、様々なプラットフォーム間での相互運用性とパフォーマンスを向上させる方法を学びました。また、ONNX RuntimeとONNXのデプロイオプションについても紹介しました。
ONNX エクスポートは、Ultralytics YOLO26 がサポートする多くのexport formatsの 1 つにすぎず、事実上あらゆる環境にモデルを展開できます。特定のニーズに応じて、最大の GPU パフォーマンスを実現する TensorRT や、Apple デバイス向けの CoreML など、他のエクスポートオプションを検討することもできます。
使用方法の詳細については、ONNX official documentation をご覧ください。
また、他の Ultralytics YOLO26 統合について詳しく知りたい場合は、integration guide page をご覧ください。役立つリソースや情報が豊富に揃っています。
よくある質問 (FAQ)#
Ultralyticsを使用してYOLO26モデルをONNXフォーマットにエクスポートするには、以下の手順に従ってください。
使用方法from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export the model to ONNX format model.export(format="onnx") # creates 'yolo26n.onnx' # Load the exported ONNX model onnx_model = YOLO("yolo26n.onnx") # Run inference results = onnx_model("https://ultralytics.com/images/bus.jpg")詳細については、export documentation をご覧ください。
YOLO26モデルのデプロイにONNX Runtimeを使用すると、いくつかの利点があります。
- クロスプラットフォーム互換性: ONNX RuntimeはWindows、macOS、Linuxなどの様々なプラットフォームをサポートしており、異なる環境間でモデルがスムーズに動作することを保証します。
- ハードウェアアクセラレーション: ONNX RuntimeはCPU、GPU、専用アクセラレーター向けのハードウェア固有の最適化を活用でき、高性能な推論を提供します。
- フレームワークの相互運用性: PyTorch や TensorFlow などの一般的なフレームワークでトレーニングされたモデルは、簡単に ONNX フォーマットに変換し、ONNX Runtime を使用して実行できます。
- パフォーマンス最適化: ONNX RuntimeはネイティブのPyTorchモデルと比較して最大3倍のCPU高速化を提供できるため、GPUリソースが限られているデプロイシナリオに最適です。
詳細については、ONNX Runtime documentation をご確認ください。
ONNXにエクスポートされたYOLO26モデルは、以下を含む様々なプラットフォームにデプロイ可能です。
- CPU: 最適化されたCPU推論のためにONNX Runtimeを利用します。
- GPU: 高性能なGPUアクセラレーションのためにNVIDIA CUDAを活用します。
- エッジデバイス: リアルタイムのオンデバイス推論のために、エッジやモバイルデバイスで軽量モデルを実行します。
- Webブラウザ: インタラクティブなWebベースアプリケーションのために、Webブラウザ内でモデルを直接実行します。
- クラウドサービス: スケーラブルな推論のために、ONNXフォーマットをサポートするクラウドプラットフォームにデプロイします。
詳細については、model deployment options に関するガイドをご覧ください。
Ultralytics YOLO26モデルにONNXフォーマットを使用すると、多数のメリットが得られます。
- 相互運用性: ONNXを使用すると、異なる機械学習フレームワーク間でモデルをシームレスに転送できます。
- パフォーマンス最適化: ONNX Runtimeはハードウェア固有の最適化を利用してモデルのパフォーマンスを向上させることができます。
- 柔軟性: ONNXは様々なデプロイ環境をサポートしており、修正を加えることなく異なるプラットフォームで同じモデルを使用できます。
- 標準化: ONNXは業界全体で広くサポートされている標準化されたフォーマットを提供し、長期的な互換性を保証します。
exporting YOLO26 models to ONNX に関する包括的なガイドを参照してください。
YOLO26モデルをONNXにエクスポートする際、依存関係の不一致やサポートされていない演算子などの一般的な問題に遭遇する場合があります。これらの問題をトラブルシューティングするには:
- 必要な依存関係の正しいバージョンがインストールされているか確認してください。
- サポートされているオペレータと機能については、公式の ONNX documentation を確認してください。
- エラーメッセージを確認して手がかりを得て、Ultralytics Common Issues guide を参照してください。
simplify=Trueなどの異なるエクスポート引数を試すか、opsetのバージョンを調整してください。- 動的な入力サイズの問題については、エクスポート中に
dynamic=Trueを設定してください。
問題が解決しない場合は、Ultralyticsサポートまでお問い合わせください。