ONNX YOLO11 モデルのエクスポート
多くの場合、コンピュータビジョンモデルを展開する際には、柔軟性があり、複数のプラットフォームと互換性のあるモデルフォーマットが必要になります。
モデルを Ultralytics YOLO11モデルをONNX フォーマットにエクスポートすることで、デプロイメントが合理化され、さまざまな環境で最適なパフォーマンスが保証されます。このガイドでは、YOLO11 のモデルを簡単にONNX に変換し、実際のアプリケーションでの拡張性と有効性を高める方法を紹介します。
ONNX およびONNX ランタイム
ONNXOpenNeural NetworkExchangeの略で、FacebookとMicrosoft が最初に開発したコミュニティ・プロジェクトである。現在進行中のONNX の開発は、IBM、アマゾン(AWSを通じて)、Google のような様々な組織によってサポートされている共同作業である。このプロジェクトは、異なるAIフレームワークやハードウェア間で使用できるように、機械学習モデルを表現するために設計されたオープンなファイルフォーマットを作成することを目的としている。
ONNX モデルは、異なるフレームワーク間でシームレスに移行するために使用することができる。例えば、PyTorch でトレーニングされたディープラーニングモデルは、ONNX 形式にエクスポートし、TensorFlow に簡単にインポートすることができる。
あるいは、ONNX のモデルをONNX Runtime で使用することもできる。ONNX Runtimeは、機械学習モデルのための多目的のクロスプラットフォーム・アクセラレータで、PyTorch のようなフレームワークと互換性がある、 TensorFlowTFLite、scikit-learnなどのフレームワークと互換性がある。
ONNX ランタイムは、ハードウェア固有の機能を活用することで、ONNX モデルの実行を最適化します。この最適化により、CPU、GPU、専用アクセラレータなど、さまざまなハードウェアプラットフォーム上でモデルを効率的かつ高性能に実行することができる。
単独で使用する場合でも、ONNX Runtime と併用する場合でも、ONNX は機械学習モデルの展開と互換性のための柔軟なソリューションを提供します。
ONNX モデルの主な特徴
ONNX 、様々なフォーマットを扱うことができるのは、次のような主な特徴があるからである:
-
共通のモデル表現:ONNX は、共通の演算子セット(畳み込み、レイヤーなど)と標準データフォーマットを定義している。モデルがONNX フォーマットに変換されるとき、そのアーキテクチャと重みは、この共通表現に変換されます。この統一性により、ONNX をサポートするどのフレームワークでもモデルを理解できることが保証される。
-
バージョニングと後方互換性:ONNX は、オペレータのためのバージョニング・システムを維持しています。これにより、規格が進化しても、古いバージョンで作成されたモデルが使用可能なままであることが保証されます。後方互換性は、モデルがすぐに時代遅れになるのを防ぐ重要な機能です。
-
グラフベースのモデル表現:ONNX モデルは計算グラフとして表現される。このグラフベースの構造は、機械学習モデルを表現する普遍的な方法であり、ノードは操作や計算を表し、エッジはそれらの間を流れるテンソルを表す。この形式は、同じくモデルをグラフとして表現する様々なフレームワークに容易に適応できる。
-
ツールとエコシステム:ONNX の周辺には、モデルの変換、視覚化、最適化を支援するツールの豊富なエコシステムがある。これらのツールにより、開発者はONNX モデルでの作業が容易になり、異なるフレームワーク間でモデルをシームレスに変換できる。
一般的な使い方ONNX
YOLO11 モデルをONNX フォーマットにエクスポートする方法の前に、ONNX モデルが通常使用される場所について見てみましょう。
CPU 配備
ONNX モデルは、ONNX ランタイムとの互換性があるため、CPU上で展開されることが多い。このランタイムはCPU 実行用に最適化されている。これにより推論速度が大幅に改善され、CPU のリアルタイム展開が可能になる。
サポートされる展開オプション
ONNX 、一般的にはCPU上で使用されることが多いが、以下のようなプラットフォームにも展開できる:
-
GPU アクセラレーション:ONNX GPU アクセラレーション、特にNVIDIA CUDA を完全にサポートしている。これにより、高い計算能力を必要とするタスクについて、NVIDIA GPU上での効率的な実行が可能になる。
-
エッジデバイスとモバイルデバイス:ONNX はエッジデバイスとモバイルデバイスに拡張され、オンデバイスとリアルタイム推論シナリオに最適です。軽量で、エッジハードウェアと互換性があります。
-
ウェブブラウザ:ONNX はウェブブラウザで直接実行でき、インタラクティブでダイナミックなウェブベースのAIアプリケーションを強力にサポートします。
YOLO11 モデルのエクスポートONNX
YOLO11 モデルをONNX フォーマットに変換することで、モデルの互換性と展開の柔軟性を拡大することができます。 Ultralytics YOLO11は、異なるプラットフォーム間でモデルのパフォーマンスを大幅に向上させることができる、簡単なエクスポートプロセスを提供します。
インストール
必要なパッケージをインストールするには、以下を実行する:
インストールプロセスに関する詳しい説明とベストプラクティスについては、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")
エクスポートの引数
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 のオペセットのバージョンを指定します。設定されていない場合は、サポートされている最新のバージョンを使用します。 |
nms |
bool |
False |
正確で効率的な検出の後処理に不可欠なNMS(Non-Maximum Suppression)を追加。 |
batch |
int |
1 |
エクスポートモデルのバッチ推論サイズ、またはエクスポートされたモデルが同時に処理する画像の最大数を指定します。 predict モードだ。 |
エクスポートプロセスの詳細については、Ultralytics ドキュメントのエクスポートに関するページをご覧ください。
エクスポートされたYOLO11 ONNX モデルの展開
Ultralytics YOLO11 のモデルをONNX フォーマットにエクスポートすることに成功したら、次のステップはこれらのモデルを様々な環境に配置することです。ONNX モデルのデプロイに関する詳しい説明は、以下のリソースをご覧ください:
-
ONNX ランタイムPython API ドキュメント:このガイドは、ONNX Runtimeを使用してONNX モデルをロードし、実行するための重要な情報を提供します。
-
エッジデバイスへの展開:ONNX モデルのエッジデバイスへの展開に関するさまざまな例については、こちらのドキュメントページをご覧ください。
-
ONNX GitHubのチュートリアル:ONNX モデルのさまざまなシナリオでの使用と実装のさまざまな側面をカバーする包括的なチュートリアルのコレクション。
-
Triton 推論サーバ:ONNX モデルをNVIDIA Triton Inference Serverでハイパフォーマンスかつスケーラブルに展開する方法をご紹介します。
概要
このガイドでは、Ultralytics YOLO11 モデルをONNX フォーマットにエクスポートして、さまざまなプラットフォームでの相互運用性とパフォーマンスを向上させる方法を学びました。また、ONNX Runtime およびONNX 配置オプションについても紹介しました。
ONNX エクスポートは、Ultralytics YOLO11サポートする数多くのエクスポートフォーマットの1つに過ぎません。特定のニーズによっては、次のようなエクスポートオプションも検討するとよいでしょう。 TensorRTや 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")
詳しくは、輸出に関する文書をご覧ください。
YOLO11 モデルのデプロイにONNX Runtime を使用する利点は何ですか?
YOLO11 モデルの展開にONNX Runtime を使用すると、いくつかの利点がある:
- クロスプラットフォームの互換性:ONNX ランタイムはWindows、macOS、Linuxなど様々なプラットフォームをサポートしており、異なる環境でもモデルがスムーズに動作することを保証します。
- ハードウェアアクセラレーション:ONNX ランタイムは、CPU、GPU、専用アクセラレータのハードウェア固有の最適化を活用し、高性能な推論を提供することができる。
- フレームワークの相互運用性:のような一般的なフレームワークで学習されたモデルは PyTorchやTensorFlow のような一般的なフレームワークで学習されたモデルは、ONNX 形式に簡単に変換でき、ONNX Runtime を使って実行できる。
- パフォーマンスの最適化:ONNX Runtimeは、ネイティブのPyTorch モデルと比較して、最大3倍のCPU スピードアップが可能であり、GPU リソースが制限されている配備シナリオに最適です。
詳しくは、ONNX ランタイムのドキュメントをご覧ください。
ONNX にエクスポートされたYOLO11 モデルには、どのような展開オプションがありますか?
YOLO11 ONNX にエクスポートされたモデルは、以下のようなさまざまなプラットフォームに展開できる:
- CPU:CPU 推論を最適化するためのONNX ランタイムの活用。
- GPU:LeveragingNVIDIA CUDA for high-performanceGPU acceleration.
- エッジデバイス:エッジデバイスやモバイルデバイス上で軽量モデルを実行し、リアルタイムでデバイス上での推論を行う。
- ウェブブラウザ:インタラクティブなウェブベースのアプリケーションのために、ウェブブラウザ内で直接モデルを実行する。
- クラウドサービス:スケーラブルな推論のためにONNX フォーマットをサポートするクラウドプラットフォームに展開する。
詳しくは、モデル展開オプションに関するガイドをご覧ください。
Ultralytics YOLO11 モデルにONNX フォーマットを使用するのはなぜですか?
Ultralytics YOLO11 モデルにONNX フォーマットを使用すると、多くの利点がある:
- 相互運用性:ONNX は、異なる機械学習フレームワーク間でモデルをシームレスに転送することを可能にする。
- パフォーマンスの最適化:ONNX ランタイムは、ハードウェア固有の最適化を利用することで、モデルのパフォーマンスを向上させることができる。
- 柔軟性:ONNX は様々な展開環境をサポートしており、異なるプラットフォーム上でも同じモデルを変更することなく使用することができます。
- 標準化:ONNX 、業界全体で広くサポートされている標準化されたフォーマットを提供し、長期的な互換性を保証します。
YOLO11 モデルのONNX へのエクスポートに関する包括的なガイドを参照してください。
YOLO11 のモデルをONNX にエクスポートする際の問題のトラブルシューティングはどうすればよいですか?
YOLO11 モデルをONNX にエクスポートする際、依存関係の不一致やサポートされていない操作などの一般的な問題が発生することがあります。これらの問題を解決するには
- 必要な依存関係が正しいバージョンでインストールされていることを確認する。
- サポートされているオペレーターや機能については、ONNX の公式ドキュメントをご確認ください。
- ヒントとなるエラーメッセージを確認し、Ultralytics 「よくある問題」ガイドを参照してください。
- のような別のエクスポート引数を使用してみてください。
simplify=True
またはopset
バージョンである。 - 動的な入力サイズの問題については
dynamic=True
輸出中に。
問題が解決しない場合は、Ultralytics サポートにお問い合わせください。