ONNX YOLOv8 モデルのエクスポート
コンピュータビジョンモデルを展開する場合、柔軟性があり、複数のプラットフォームと互換性のあるモデルフォーマットが必要になることがよくあります。
モデルを Ultralytics YOLOv8モデルをONNX フォーマットにエクスポートすることで、デプロイメントが合理化され、さまざまな環境で最適なパフォーマンスが保証されます。このガイドでは、YOLOv8 のモデルを簡単にONNX に変換し、実際のアプリケーションでの拡張性と有効性を高める方法を紹介します。
ONNX およびONNX ランタイム
ONNXOpen Neural Network Exchangeの略で、フェイスブックとマイクロソフトが最初に開発したコミュニティ・プロジェクトである。現在進行中のONNX の開発は、IBM、アマゾン(AWSを通じて)、グーグルといった様々な組織がサポートする共同作業である。このプロジェクトは、異なるAIフレームワークやハードウェア間で使用できるように、機械学習モデルを表現するために設計されたオープンなファイルフォーマットを作成することを目的としている。
ONNX モデルは、異なるフレームワーク間でシームレスに移行するために使用することができる。例えば、PyTorch でトレーニングされたディープラーニングモデルは、ONNX 形式にエクスポートし、TensorFlow に簡単にインポートすることができる。
あるいは、ONNX のモデルを、ONNX Runtimeで使用することもできる。ONNX Runtimeは、PyTorch 、TensorFlow 、TFLite、scikit-learnなどのフレームワークと互換性のある、機械学習モデル用の多目的クロスプラットフォーム・アクセラレータである。
ONNX ランタイムは、ハードウェア固有の機能を活用することで、ONNX モデルの実行を最適化します。この最適化により、CPU、GPU、専用アクセラレータなど、さまざまなハードウェアプラットフォーム上でモデルを効率的かつ高性能に実行することができる。
単独で使用する場合でも、ONNX Runtime と併用する場合でも、ONNX は機械学習モデルの展開と互換性のための柔軟なソリューションを提供します。
ONNX モデルの主な特徴
ONNX 、様々なフォーマットを扱うことができるのは、次のような主な特長があるからだ:
-
共通のモデル表現:ONNX は、共通の演算子セット(畳み込み、レイヤーなど)と標準データフォーマットを定義している。モデルがONNX フォーマットに変換されるとき、そのアーキテクチャと重みはこの共通表現に変換されます。この統一性により、ONNX をサポートするどのフレームワークでもモデルを理解できることが保証される。
-
バージョニングと後方互換性:ONNX は、オペレータのためのバージョニング・システムを維持しています。これにより、規格が進化しても、古いバージョンで作成されたモデルが使用可能なままであることが保証されます。後方互換性は、モデルがすぐに時代遅れになるのを防ぐ重要な機能です。
-
グラフベースのモデル表現:ONNX モデルは計算グラフとして表現される。このグラフベースの構造は、機械学習モデルを表現する普遍的な方法であり、ノードは操作や計算を表し、エッジはそれらの間を流れるテンソルを表す。この形式は、同じくモデルをグラフとして表現する様々なフレームワークに容易に適応できる。
-
ツールとエコシステム:ONNX の周辺には、モデルの変換、視覚化、最適化を支援するツールの豊富なエコシステムがある。これらのツールにより、開発者はONNX のモデルで作業しやすくなり、異なるフレームワーク間でモデルをシームレスに変換できる。
一般的な使い方ONNX
YOLOv8 モデルをONNX フォーマットにエクスポートする方法の前に、ONNX モデルが通常使用される場所について見てみましょう。
CPUの配置
ONNX モデルは、ONNX ランタイムとの互換性があるため、CPU上で展開されることが多い。このランタイムはCPUでの実行に最適化されている。これにより推論速度が大幅に改善され、CPUでのリアルタイム展開が可能になる。
サポートされる展開オプション
ONNX 、一般的にはCPU上で使用されることが多いが、以下のようなプラットフォームにも展開できる:
-
GPUアクセラレーション:ONNX は、GPUアクセラレーション、特にNVIDIA CUDAを完全にサポートしています。これにより、高い計算能力を必要とするタスクのNVIDIA GPU上での効率的な実行が可能になります。
-
エッジデバイスとモバイルデバイス:ONNX はエッジデバイスとモバイルデバイスに拡張され、オンデバイスとリアルタイム推論シナリオに最適です。軽量で、エッジハードウェアと互換性があります。
-
ウェブブラウザ:ONNX はウェブブラウザで直接実行でき、インタラクティブでダイナミックなウェブベースのAIアプリケーションを実現します。
YOLOv8 モデルのエクスポートONNX
YOLOv8 モデルをONNX フォーマットに変換することで、モデルの互換性と配備の柔軟性を拡大できます。
インストール
必要なパッケージをインストールするには、以下を実行する:
インストールプロセスに関する詳細な説明とベストプラクティスについては、YOLOv8 インストールガイドをご覧ください。YOLOv8 に必要なパッケージをインストールする際に、何らかの問題が発生した場合は、解決策やヒントについて、よくある問題ガイドを参照してください。
使用方法
使い方の説明に入る前に、 Ultralytics が提供するYOLOv8 モデルのラインナップをご確認ください。これは、あなたのプロジェクトの要件に最も適したモデルを選択するのに役立ちます。
使用方法
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
# Export the model to ONNX format
model.export(format='onnx') # creates 'yolov8n.onnx'
# Load the exported ONNX model
onnx_model = YOLO('yolov8n.onnx')
# Run inference
results = onnx_model('https://ultralytics.com/images/bus.jpg')
エクスポートプロセスの詳細については、Ultralytics ドキュメントのエクスポートに関するページをご覧ください。
エクスポートされたYOLOv8 ONNX モデルの展開
Ultralytics YOLOv8 のモデルをONNX フォーマットにエクスポートすることに成功したら、次のステップはこれらのモデルを様々な環境に配置することです。ONNX モデルのデプロイに関する詳しい説明は、以下のリソースをご覧ください:
-
ONNX ランタイムPython API ドキュメント:このガイドは、ONNX Runtimeを使用してONNX モデルをロードし、実行するための重要な情報を提供します。
-
エッジデバイスへの展開:ONNX モデルのエッジデバイスへの展開に関するさまざまな例については、こちらのドキュメントページをご覧ください。
-
ONNX GitHubのチュートリアル:ONNX モデルのさまざまなシナリオでの使用と実装のさまざまな側面をカバーする包括的なチュートリアルのコレクション。
概要
このガイドでは、Ultralytics YOLOv8 モデルをONNX フォーマットにエクスポートして、さまざまなプラットフォームでの相互運用性とパフォーマンスを向上させる方法を学びました。また、ONNX Runtime およびONNX 配置オプションについても紹介しました。
使い方の詳細については、ONNX 公式ドキュメントをご覧ください。
また、その他のUltralytics YOLOv8 の統合について詳しくお知りになりたい場合は、統合ガイドのページをご覧ください。有用なリソースや洞察がたくさん見つかります。