YOLO26モデルのONNXエクスポート
推論速度が約43%向上します。
- Ultralytics YOLO26モデルをONNXにエクスポートすることで、推論速度を最大43%向上させることができ、より高速で効率的なデプロイメントが可能になります。
コンピュータビジョンモデルをデプロイする際、柔軟性とマルチプラットフォーム対応の両方を備えたモデルフォーマットが必要になることがよくあります。
Ultralytics YOLO26モデルをONNXフォーマットにエクスポートすると、デプロイメントが効率化され、さまざまな環境で最適なパフォーマンスが保証されます。本ガイドでは、YOLO26モデルを簡単にONNXへ変換し、実世界のアプリケーションにおけるスケーラビリティと有効性を高める方法を解説します。
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
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、TFLite、scikit-learnなどのフレームワークと互換性のある、汎用的なクロスプラットフォームの機械学習モデル向けアクセラレータです。
ONNX Runtimeは、ハードウェア固有の機能を活用することでONNXモデルの実行を最適化します。この最適化により、CPU、GPU、特殊なアクセラレータを含むさまざまなハードウェアプラットフォーム上で、モデルを効率的かつ高性能に実行できるようになります。
ONNXは、単独で使用する場合でもONNX Runtimeと組み合わせて使用する場合でも、機械学習のモデルデプロイメントと互換性に対して柔軟なソリューションを提供します。
ONNXモデルの主な機能
ONNXが多様なフォーマットを扱えるのは、以下の主な機能があるためです。
-
共通のモデル表現: ONNXは、共通の演算子セット(畳み込み、レイヤーなど)と標準データフォーマットを定義しています。モデルがONNXフォーマットに変換されると、そのアーキテクチャと重みは、この共通の表現に翻訳されます。この統一性により、ONNXをサポートするあらゆるフレームワークがモデルを理解できるようになります。
-
バージョニングと後方互換性: ONNXは演算子に対してバージョニングシステムを維持しています。これにより、標準が進化しても、古いバージョンで作成されたモデルを使い続けることができます。後方互換性は、モデルがすぐに陳腐化するのを防ぐために不可欠な機能です。
-
グラフベースのモデル表現: ONNXは、モデルを計算グラフとして表現します。このグラフ構造は機械学習モデルを表現する普遍的な方法であり、ノードが演算や計算を、エッジがそれらの間を流れるテンソルを表します。このフォーマットは、同様にモデルをグラフとして表現する様々なフレームワークに容易に適応できます。
-
ツールとエコシステム: ONNXの周辺には、モデルの変換、視覚化、最適化を支援する豊富なエコシステムがあります。これらのツールにより、開発者はONNXモデルを扱い、異なるフレームワーク間でシームレスにモデルを変換しやすくなっています。
ONNXの一般的な用途
YOLO26モデルをONNXフォーマットにエクスポートする方法に入る前に、ONNXモデルが通常どのような場所で使用されているかを見ていきましょう。
CPUデプロイメント
ONNXモデルは、ONNX Runtimeとの互換性があるため、CPU上でデプロイされることがよくあります。このランタイムはCPU実行用に最適化されており、推論速度を大幅に向上させ、リアルタイムのCPUデプロイメントを実現可能にします。
サポートされているデプロイメントオプション
ONNXモデルはCPUでよく使われますが、以下のプラットフォームにデプロイすることも可能です。
-
GPUアクセラレーション: ONNXはGPUアクセラレーション、特にNVIDIA CUDAを完全にサポートしています。これにより、高い計算能力を必要とするタスクにおいて、NVIDIA GPU上での効率的な実行が可能になります。
-
エッジデバイスおよびモバイルデバイス: ONNXはエッジデバイスやモバイルデバイスにも拡張されており、オンデバイスでのリアルタイム推論シナリオに最適です。軽量で、エッジハードウェアと互換性があります。
-
Webブラウザ: ONNXはWebブラウザ内で直接実行でき、対話型で動的なWebベースのAIアプリケーションを強化します。
YOLO26モデルのONNXへのエクスポート
YOLO26モデルをONNXフォーマットに変換することで、モデルの互換性とデプロイメントの柔軟性を高めることができます。Ultralytics YOLO26は、モデルのプラットフォーム間パフォーマンスを大幅に向上させることができる、直感的なエクスポートプロセスを提供しています。
インストール
必要なパッケージをインストールするには、次を実行します。
# Install the required package for YOLO26
pip install ultralyticsインストールプロセスに関する詳細な手順とベストプラクティスについては、YOLO26インストールガイドを確認してください。YOLO26に必要なパッケージをインストールする際に問題が発生した場合は、一般的な問題ガイドで解決策やヒントを参照してください。
使用方法
使用方法の説明に入る前に、Ultralyticsが提供する様々なYOLO26モデルを必ずご確認ください。これにより、プロジェクトの要件に最も適したモデルを選択することができます。
from ultralytics import YOLO
# Load the 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")エクスポート引数
YOLO26モデルをONNXフォーマットにエクスポートする際、特定のデプロイメントニーズに合わせてプロセスをカスタマイズするための様々な引数を使用できます。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
format | str | 'onnx' | エクスポートされたモデルのターゲットフォーマット。さまざまなデプロイ環境との互換性を定義します。 |
imgsz | int または tuple | 640 | モデル入力に希望する画像サイズ。正方形の画像の場合は整数、特定の寸法のタプル (height, width) で指定できます。 |
half | bool | False | FP16(半精度)量子化を有効にし、モデルサイズを削減し、サポートされているハードウェア上での推論を高速化する可能性があります。 |
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ドキュメントページをご覧ください。
エクスポートしたYOLO26 ONNXモデルのデプロイ
Ultralytics YOLO26モデルをONNXフォーマットに正常にエクスポートしたら、次はそれらのモデルを様々な環境にデプロイするステップです。ONNXモデルのデプロイに関する詳細な手順については、以下のリソースを参照してください。
-
ONNX Runtime Python APIドキュメント: ONNX Runtimeを使用してONNXモデルを読み込み、実行するための重要な情報を提供します。
-
エッジデバイスへのデプロイ: エッジでONNXモデルをデプロイする様々な例については、このドキュメントページをご確認ください。
-
GitHubのONNXチュートリアル: さまざまなシナリオでONNXモデルを使用・実装する包括的なチュートリアル集です。
-
Triton Inference Server: NVIDIAのTriton Inference Serverを使用して、高性能でスケーラブルなデプロイを実現する方法を学びましょう。
まとめ
このガイドでは、Ultralytics YOLO26モデルをONNXフォーマットにエクスポートし、様々なプラットフォーム間での相互運用性とパフォーマンスを向上させる方法を学びました。また、ONNX RuntimeとONNXデプロイメントの選択肢についても紹介しました。
ONNXエクスポートは、Ultralytics YOLO26がサポートする多くのエクスポートフォーマットの一つに過ぎず、事実上あらゆる環境にモデルをデプロイすることができます。特定のニーズに応じて、最大限のGPUパフォーマンスを得るためのTensorRTや、Appleデバイス向けのCoreMLなど、他のエクスポートオプションを検討することも可能です。
使用方法の詳細については、ONNX公式ドキュメントをご覧ください。
また、他のUltralytics YOLO26インテグレーションについて詳しく知りたい場合は、インテグレーションガイドページをご覧ください。そこには有益なリソースや洞察が多数記載されています。
FAQ
Ultralyticsを使用してYOLO26モデルをONNXフォーマットにエクスポートするにはどうすればよいですか?
Ultralyticsを使用してYOLO26モデルをONNXフォーマットにエクスポートするには、以下の手順に従ってください。
from ultralytics import YOLO
# Load the 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")詳細については、エクスポートドキュメントを参照してください。
YOLO26モデルのデプロイにONNX Runtimeを使用する利点は何ですか?
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モデルには、どのようなデプロイメントオプションがありますか?
ONNXにエクスポートされたYOLO26モデルは、以下を含む様々なプラットフォームにデプロイできます。
- CPU: 最適化されたCPU推論のためにONNX Runtimeを利用します。
- GPU: 高性能なGPUアクセラレーションのためにNVIDIA CUDAを活用します。
- エッジデバイス: リアルタイムのオンデバイス推論のために、軽量なモデルをエッジおよびモバイルデバイスで実行します。
- Webブラウザ: 対話型Webベースアプリケーションのために、Webブラウザ内でモデルを直接実行します。
- クラウドサービス: スケーラブルな推論のために、ONNXフォーマットをサポートするクラウドプラットフォームにデプロイします。
詳細については、モデルデプロイメントオプションのガイドをご覧ください。
Ultralytics YOLO26モデルにONNXフォーマットを使用すべきなのはなぜですか?
Ultralytics YOLO26モデルにONNXフォーマットを使用すると、多くの利点があります。
- 相互運用性: ONNXを使用すると、異なる機械学習フレームワーク間でモデルをシームレスに転送できます。
- パフォーマンス最適化: ONNX Runtimeはハードウェア固有の最適化を利用してモデルのパフォーマンスを向上させることができます。
- 柔軟性: ONNXは様々なデプロイ環境をサポートしているため、修正を加えることなく異なるプラットフォームで同じモデルを使用できます。
- 標準化: ONNXは業界全体で広くサポートされている標準化フォーマットを提供し、長期的な互換性を保証します。
YOLO26モデルのONNXへのエクスポートに関する包括的なガイドを参照してください。
YOLO26モデルをONNXにエクスポートする際の問題をトラブルシューティングするにはどうすればよいですか?
YOLO26モデルをONNXにエクスポートする際、依存関係の不一致やサポートされていない演算子などの一般的な問題が発生することがあります。これらの問題をトラブルシューティングするには、次のようにします。
- 必要な依存関係の正しいバージョンがインストールされていることを確認してください。
- サポートされている演算子や機能については、公式のONNXドキュメントを確認してください。
- エラーメッセージからヒントを探し、Ultralytics共通問題ガイドを参照してください。
simplify=Trueのような別のエクスポート引数を試したり、opsetバージョンを調整したりしてください。- 動的な入力サイズに関する問題については、エクスポート時に
dynamic=Trueを設定してください。
問題が解決しない場合は、Ultralyticsサポートまでお問い合わせください。