YOLO11モデルのONNXエクスポート
コンピュータビジョンモデルをデプロイする場合、柔軟性があり、複数のプラットフォームと互換性のあるモデル形式が必要になることがよくあります。
Ultralytics YOLO11 モデルを ONNX 形式にエクスポートすると、デプロイメントが合理化され、さまざまな環境で最適なパフォーマンスが保証されます。このガイドでは、YOLO11 モデルを ONNX に簡単に変換し、実際のアプリケーションでのスケーラビリティと有効性を高める方法について説明します。
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 は機械学習のモデルデプロイメントと互換性のための柔軟なソリューションを提供します。
ONNXモデルの主な機能
ONNXがさまざまな形式を処理できるのは、次の主な機能によるものです。
-
共通モデル表現: ONNXは、共通の演算子セット(畳み込み、レイヤーなど)と標準データ形式を定義します。モデルがONNX形式に変換されると、そのアーキテクチャと重みはこの共通表現に変換されます。この均一性により、ONNXをサポートするすべてのフレームワークがモデルを理解できるようになります。
-
Versioning and Backward Compatibility(バージョニングと下位互換性): ONNXはそのオペレーターのバージョニングシステムを維持しています。これにより、標準が進化しても、古いバージョンで作成されたモデルは引き続き使用できます。下位互換性は、モデルがすぐに廃止されないようにするための重要な機能です。
-
グラフベースのモデル表現: ONNXはモデルを計算グラフとして表現します。このグラフベースの構造は、機械学習モデルを表現するための普遍的な方法であり、ノードは演算または計算を表し、エッジはそれらの間を流れるtensorを表します。この形式は、モデルをグラフとして表現するさまざまなフレームワークに容易に適応できます。
-
ツールとエコシステム:ONNX には、モデルの変換、視覚化、最適化を支援する豊富なツールエコシステムがあります。これらのツールを使用すると、開発者は ONNX モデルをより簡単に操作し、異なるフレームワーク間でモデルをシームレスに変換できます。
ONNX の一般的な使用法
YOLO11モデルをONNX形式にエクスポートする方法に入る前に、ONNXモデルが通常どこで使用されるかを見てみましょう。
CPU展開
ONNXモデルは、ONNX Runtimeとの互換性から、CPU上で展開されることがよくあります。このランタイムはCPU実行に最適化されており、推論速度を大幅に向上させ、リアルタイムCPU展開を可能にします。
サポートされているデプロイメントオプション
ONNX モデルは通常 CPU で使用されますが、次のプラットフォームにもデプロイできます。
-
GPUアクセラレーション: ONNXはGPUアクセラレーション、特にNVIDIA CUDAを完全にサポートしています。これにより、高い計算能力を必要とするタスクのためにNVIDIA GPU上で効率的な実行が可能になります。
-
エッジおよびモバイルデバイス: ONNX はエッジおよびモバイルデバイスに拡張され、デバイス上およびリアルタイムの推論シナリオに最適です。軽量でエッジハードウェアと互換性があります。
-
Webブラウザ: ONNXはWebブラウザで直接実行でき、インタラクティブで動的なWebベースのAIアプリケーションを強化します。
YOLO11モデルをONNXへエクスポート
YOLO11モデルをONNX形式に変換することで、モデルの互換性とデプロイの柔軟性を拡張できます。Ultralytics YOLO11は、さまざまなプラットフォームでのモデルのパフォーマンスを大幅に向上させることができる簡単なエクスポートプロセスを提供します。
インストール
必要なパッケージをインストールするには、以下を実行します:
インストール
# Install the required package for YOLO11
pip install ultralytics
インストールプロセスに関する詳細な手順とベストプラクティスについては、YOLO11インストールガイドを確認してください。YOLO11に必要なパッケージをインストールする際に問題が発生した場合は、一般的な問題ガイドで解決策とヒントを参照してください。
使用法
使用方法の説明に入る前に、Ultralyticsが提供するYOLO11モデルの範囲を必ず確認してください。これは、プロジェクトの要件に最適なモデルを選択するのに役立ちます。
使用法
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'
# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'
エクスポート引数
YOLO11モデルを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ドキュメントページをご覧ください。
エクスポートされたYOLO11 ONNXモデルのデプロイ
Ultralytics YOLO11モデルをONNX形式に正常にエクスポートしたら、次のステップは、これらのモデルをさまざまな環境にデプロイすることです。ONNXモデルのデプロイに関する詳細な手順については、次のリソースをご覧ください。
-
ONNX Runtime python APIドキュメント: このガイドでは、ONNX Runtimeを使用してONNXモデルをロードおよび実行するための重要な情報を提供します。
-
エッジデバイスへのデプロイ: エッジへのONNXモデルのデプロイに関するさまざまな例については、こちらのドキュメントページをご覧ください。
-
GitHubのONNXチュートリアル: さまざまなシナリオでONNXモデルの使用と実装のさまざまな側面を網羅した包括的なチュートリアル集です。
-
Triton Inference Server: NVIDIAのTriton Inference Serverを使用してONNXモデルをデプロイし、高性能でスケーラブルなデプロイメントを実現する方法を学びます。
概要
このガイドでは、Ultralytics YOLO11モデルをONNX形式にエクスポートして、さまざまなプラットフォームでの相互運用性とパフォーマンスを向上させる方法を学びました。また、ONNX RuntimeとONNXのデプロイメントオプションについても紹介しました。
ONNXエクスポートは、Ultralytics YOLO11でサポートされている多くのエクスポート形式の1つにすぎず、事実上あらゆる環境にモデルをデプロイできます。特定のニーズに応じて、GPUのパフォーマンスを最大限に高めるためのTensorRTや、Appleデバイス用のCoreMLなど、他のエクスポートオプションも検討することをお勧めします。
使用方法の詳細については、ONNXの公式ドキュメントをご覧ください。
また、Ultralytics YOLO11のその他の統合について詳しく知りたい場合は、統合ガイドページをご覧ください。役立つリソースや洞察が多数掲載されています。
よくある質問
Ultralyticsを使用してYOLO11モデルをONNX形式にエクスポートするにはどうすればよいですか?
Ultralyticsを使用してYOLO11モデルをONNX形式にエクスポートするには、次の手順に従ってください。
使用法
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'
# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'
詳細については、エクスポートに関するドキュメントをご覧ください。
YOLO11モデルのデプロイにONNX Runtimeを使用する利点は何ですか?
YOLO11モデルのデプロイにONNX Runtimeを使用すると、いくつかの利点があります。
- クロスプラットフォーム互換性: ONNX Runtimeは、Windows、macOS、Linuxなどのさまざまなプラットフォームをサポートしており、異なる環境でモデルがスムーズに実行されるようにします。
- ハードウェアアクセラレーション: ONNX Runtimeは、CPU、GPU、および専用アクセラレータ向けにハードウェア固有の最適化を活用し、高性能な推論を提供します。
- フレームワークの相互運用性:PyTorchやTensorFlowのような一般的なフレームワークで学習されたモデルは、ONNX形式に簡単に変換でき、ONNX Runtimeを使用して実行できます。
- パフォーマンスの最適化: ONNX Runtimeは、ネイティブのPyTorchモデルと比較して最大3倍のCPU高速化を実現し、GPUリソースが限られているデプロイメントシナリオに最適です。
詳細については、ONNX Runtimeドキュメントをご確認ください。
ONNXにエクスポートされたYOLO11モデルには、どのようなデプロイオプションがありますか?
ONNXにエクスポートされたYOLO11モデルは、以下を含むさまざまなプラットフォームにデプロイできます。
- CPU:最適化されたCPU推論のためにONNX Runtimeを利用します。
- GPU: NVIDIA CUDAを活用し、高性能なGPUアクセラレーションを実現します。
- エッジデバイス: リアルタイムのオンデバイス推論のために、エッジおよびモバイルデバイスで軽量モデルを実行します。
- Webブラウザ: インタラクティブなWebベースのアプリケーションのために、Webブラウザ内でモデルを直接実行します。
- クラウドサービス: スケーラブルな推論のためにONNX形式をサポートするクラウドプラットフォームへのデプロイ。
詳細については、モデルのデプロイメントオプションに関するガイドをご覧ください。
Ultralytics YOLO11モデルにONNX形式を使用すべきなのはなぜですか?
Ultralytics YOLO11モデルにONNX形式を使用すると、多くの利点があります。
- 相互運用性:ONNXを使用すると、モデルを異なる機械学習フレームワーク間でシームレスに転送できます。
- パフォーマンスの最適化: ONNX Runtimeは、ハードウェア固有の最適化を利用してモデルのパフォーマンスを向上させることができます。
- 柔軟性: ONNXはさまざまな展開環境をサポートしており、変更なしに異なるプラットフォームで同じモデルを使用できます。
- 標準化: ONNXは、業界全体で広くサポートされている標準化された形式を提供し、長期的な互換性を保証します。
YOLO11モデルをONNXにエクスポートする方法に関する包括的なガイドを参照してください。
YOLO11モデルをONNXにエクスポートする際の問題をトラブルシューティングするにはどうすればよいですか?
YOLO11モデルをONNXにエクスポートする際、依存関係の不一致やサポートされていない操作などの一般的な問題が発生することがあります。これらの問題をトラブルシューティングするには:
- 必要な依存関係の正しいバージョンがインストールされていることを確認してください。
- サポートされているオペレーターと機能については、公式のONNXドキュメントを確認してください。
- エラーメッセージを確認して手がかりを探し、Ultralyticsのよくある問題ガイドを参照してください。
- 次のようなさまざまなエクスポート引数を使用してみてください
simplify=True
または調整opset
バージョン。 - 動的な入力サイズの問題については、以下を設定してください。
dynamic=True
エクスポート中。
問題が解決しない場合は、Ultralyticsのサポートに連絡して、さらに支援を求めてください。