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 フォーマットに変換することで、モデルの互換性と展開の柔軟性を拡大できます。
インストール
必要なパッケージをインストールするには
インストールプロセスに関する詳しい説明とベストプラクティスについては、YOLO11インストールガイドをご覧ください。YOLO11に必要なパッケージのインストール中に、何らかの問題が発生した場合は、解決策とヒントについて、よくある問題ガイドを参照してください。
使用方法
使い方の説明に入る前に、 Ultralytics 。これは、あなたのプロジェクト要件に最も適したモデルを選択するのに役立ちます。
使用方法
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")
エクスポートプロセスの詳細については、Ultralytics ドキュメントのエクスポートに関するページをご覧ください。
エクスポートされたYOLO11ONNX モデルの展開
Ultralytics YOLO11モデルをONNX フォーマットにエクスポートしたら、次のステップは、これらのモデルを様々な環境に配置することです。ONNX モデルのデプロイに関する詳しい説明は、以下のリソースをご覧ください:
ONNX ランタイムPython API ドキュメント:このガイドは、ONNX Runtimeを使用してONNX モデルをロードし、実行するための重要な情報を提供します。
エッジデバイスへの展開:ONNX モデルのエッジデバイスへの展開に関するさまざまな例については、こちらのドキュメントページをご覧ください。
ONNX GitHubのチュートリアル:ONNX モデルのさまざまなシナリオでの使用と実装のさまざまな側面をカバーする包括的なチュートリアルのコレクション。
概要
このガイドでは、Ultralytics YOLO11モデルをONNX フォーマットにエクスポートして、さまざまなプラットフォームでの相互運用性とパフォーマンスを向上させる方法を学びました。また、ONNX RuntimeとONNX deploymentオプションについても紹介しました。
使い方の詳細については、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 ランタイムのドキュメントをご覧ください。
ONNX にエクスポートされたYOLO11モデルには、どのようなデプロイオプションがありますか?
ONNX にエクスポートされたYOLO11モデルは、以下のような様々なプラットフォームに展開できる:
- CPU:CPU 推論を最適化するためのONNX ランタイムの活用。
- GPU:LeveragingNVIDIA CUDA for high-performanceGPU acceleration.
- エッジデバイス:エッジデバイスやモバイルデバイス上で軽量モデルを実行し、リアルタイムでデバイス上での推論を行う。
- ウェブブラウザ:インタラクティブなウェブベースのアプリケーションのために、ウェブブラウザ内で直接モデルを実行する。
詳しくは、モデル展開オプションに関するガイドをご覧ください。
なぜUltralytics YOLO11モデルにONNX フォーマットを使用する必要があるのですか?
Ultralytics YOLO11モデルにONNX フォーマットを使用すると、多くの利点がある:
- 相互運用性:ONNX は、異なる機械学習フレームワーク間でモデルをシームレスに転送することを可能にする。
- パフォーマンスの最適化:ONNX ランタイムは、ハードウェア固有の最適化を利用することで、モデルのパフォーマンスを向上させることができる。
- 柔軟性:ONNX は様々な展開環境をサポートしており、異なるプラットフォーム上でも同じモデルを変更することなく使用することができます。
YOLO11モデルをONNX にエクスポートするための包括的なガイドを参照してください。
YOLO11のモデルをONNX にエクスポートする際のトラブルシューティングはどうすればいいのでしょうか?
YOLO11 モデルをONNX にエクスポートする際、依存関係の不一致やサポートされていない操作など、一般的な問題が発生する可能性があります。これらの問題を解決するには
- 必要な依存関係が正しいバージョンでインストールされていることを確認する。
- サポートされているオペレーターや機能については、ONNX の公式ドキュメントをご確認ください。
- ヒントとなるエラーメッセージを確認し、Ultralytics 「よくある問題」ガイドを参照してください。
問題が解決しない場合は、Ultralytics サポートにお問い合わせください。