Link to this sectionYOLO26モデルの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 🚀
Link to this sectionONNXと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と組み合わせて使用する場合でも、機械学習のモデルデプロイと互換性において柔軟なソリューションを提供します。
Link to this sectionONNXモデルの主な機能#
ONNXが多様な形式を扱える理由は、以下の主要な機能に起因します。
-
共通モデル表現: ONNXは、共通の演算子セット(畳み込み、層など)と標準的なデータ形式を定義しています。モデルがONNX形式に変換される際、そのアーキテクチャと重みはこの共通表現に変換されます。この統一性により、ONNXをサポートするあらゆるフレームワークがそのモデルを理解できるようになります。
-
バージョニングと後方互換性: ONNXは演算子に対してバージョニングシステムを維持しています。これにより、標準が進化しても古いバージョンで作成されたモデルが使用可能であり続けます。後方互換性は、モデルがすぐに陳腐化するのを防ぐ重要な機能です。
-
グラフベースのモデル表現: ONNXはモデルを計算グラフとして表現します。このグラフベースの構造は、ノードが演算や計算を表し、エッジがそれらの間を流れるテンソルを表す、機械学習モデルを表現する普遍的な方法です。この形式は、モデルを同じくグラフとして表現する他のさまざまなフレームワークにも容易に適応可能です。
-
ツールとエコシステム: ONNXの周辺には、モデルの変換、可視化、最適化を支援する充実したエコシステムが存在します。これらのツールにより、開発者はONNXモデルを扱い、異なるフレームワーク間でシームレスにモデルを変換することが容易になります。
Link to this sectionONNXの一般的な用途#
YOLO26モデルをONNX形式へエクスポートする方法に入る前に、ONNXモデルが通常どのような場所で使用されているかを見ていきましょう。
Link to this sectionCPUデプロイメント#
ONNXモデルは、ONNX Runtimeとの互換性から、CPU上でデプロイされることがよくあります。このランタイムはCPU実行用に最適化されており、推論速度を大幅に向上させ、リアルタイムのCPUデプロイメントを実現可能にします。
Link to this sectionサポートされているデプロイオプション#
ONNXモデルは主にCPUで使用されますが、以下のプラットフォームにもデプロイ可能です。
-
GPUアクセラレーション: ONNXはGPUアクセラレーション、特にNVIDIA CUDAを完全にサポートしています。これにより、高い計算能力を必要とするタスクにおいて、NVIDIA GPU上での効率的な実行が可能になります。
-
エッジデバイスおよびモバイルデバイス: ONNXはエッジおよびモバイルデバイスにも対応しており、オンデバイス推論やリアルタイム推論のシナリオに最適です。軽量かつエッジハードウェアと互換性があり、Snapdragonデバイス用のQualcomm QNNやRockchip NPU用のRKNNといったベンダーNPU形式の基礎としても機能します。
-
Webブラウザ: ONNXはWebブラウザ内で直接実行可能であり、インタラクティブで動的なWebベースのAIアプリケーションを駆動します。
Link to this sectionYOLO26モデルのONNXへのエクスポート#
YOLO26モデルをONNX形式に変換することで、モデルの互換性とデプロイメントの柔軟性を拡張できます。Ultralytics YOLO26は、モデルのパフォーマンスをプラットフォーム全体で大幅に向上させることができる、直感的なエクスポートプロセスを提供します。
Link to this sectionインストール#
必要なパッケージをインストールするには、以下を実行してください:
# Install the required package for YOLO26
pip install ultralyticsインストールプロセスに関する詳細な手順やベストプラクティスについては、YOLO26インストールガイドをご覧ください。YOLO26用の必要なパッケージをインストール中に問題が発生した場合は、一般的な問題ガイドで解決策やヒントを参照してください。
Link to this section使用方法#
使用手順に進む前に、Ultralyticsが提供するYOLO26モデルのラインナップを必ずご確認ください。これにより、プロジェクトの要件に最適なモデルを選択できます。
ONNX形式は、エクスポート、予測、および検証モードをサポートしています。モデルをエクスポートした後、エクスポートされたモデルを読み込んで推論を実行するか、精度を検証してください。
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", int8=True, data="coco8.yaml") # creates 'yolo26n_int8.onnx'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Link to this sectionエクスポート引数#
YOLO26モデルをONNX形式にエクスポートする際、特定のデプロイメントニーズに合わせて以下の引数を使用してプロセスをカスタマイズできます。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
format | str | 'onnx' | エクスポートされたモデルのターゲット形式。さまざまなデプロイメント環境との互換性を定義します。 |
imgsz | int または tuple | 640 | モデル入力に希望する画像サイズ。正方形の画像の場合は整数、特定の寸法の場合はタプル (height, width) を指定できます。 |
half | bool | False | FP16(半精度)量子化を有効にし、モデルサイズを縮小して、サポートされているハードウェアでの推論を高速化する可能性があります。 |
int8 | bool | False | dataからのキャリブレーション画像を使用して、ONNX RuntimeによるINT8静的量子化を有効にします。_int8.onnxモデルが生成されます。 |
data | str | None | INT8キャリブレーションに使用するデータセットのYAMLファイル。int8=Trueで省略された場合、Ultralyticsはモデルタスクのデフォルトキャリブレーションデータセットを選択します。 |
fraction | float | 1.0 | INT8量子化に使用するキャリブレーション画像の割合。 |
dynamic | bool | False | 動的な入力サイズを許可し、異なる画像寸法を扱う際の柔軟性を高めます。 |
simplify | bool | True | onnxslimを使用してモデルグラフを簡素化し、パフォーマンスと互換性を向上させる可能性があります。 |
opset | int | None | さまざまなONNXパーサーやランタイムとの互換性を確保するために、ONNX opsetバージョンを指定します。設定しない場合は、サポートされている最新のバージョンが使用されます。 |
nms | bool | False | 非最大値抑制(NMS)を追加します。これは正確で効率的な検出後処理に不可欠です。 |
batch | int | 1 | エクスポートするモデルのバッチ推論サイズ、またはエクスポートされたモデルがpredictモードで同時に処理する最大画像数を指定します。 |
device | str | None | エクスポート先デバイスを指定します:GPU (device=0)、CPU (device=cpu)、Appleシリコン用MPS (device=mps)。 |
エクスポートプロセスの詳細については、Ultralyticsエクスポートに関するドキュメントページをご覧ください。
Link to this sectionエクスポートされたYOLO26 ONNXモデルのデプロイ#
Ultralytics YOLO26モデルのONNX形式へのエクスポートが完了したら、次はさまざまな環境でモデルをデプロイする段階です。ONNXモデルのデプロイに関する詳細な手順については、以下のリソースをご覧ください:
-
ONNX Runtime Python APIドキュメント:ONNX Runtimeを使用してONNXモデルを読み込み、実行するための重要な情報が記載されています。
-
エッジデバイスへのデプロイ:エッジデバイス上でONNXモデルをデプロイするためのさまざまな例については、このドキュメントページをご確認ください。
-
GitHubのONNXチュートリアル:さまざまなシナリオでONNXモデルを使用・実装する際の実践的な側面を網羅した包括的なチュートリアル集です。
-
Triton Inference Server:高性能でスケーラブルなデプロイメントのために、NVIDIAのTriton Inference Serverを使用してONNXモデルをデプロイする方法を学習します。
Link to this sectionまとめ#
本ガイドでは、Ultralytics YOLO26モデルをONNX形式にエクスポートし、さまざまなプラットフォーム間での相互運用性とパフォーマンスを向上させる方法を学びました。また、ONNX RuntimeやONNXのデプロイオプションについても紹介しました。
ONNXエクスポートは、Ultralytics YOLO26がサポートする多くのエクスポート形式の一つに過ぎず、事実上あらゆる環境でモデルをデプロイすることが可能です。特定のニーズに応じて、最高レベルのGPUパフォーマンスを実現するためのTensorRTや、Appleデバイス向けのCoreMLなど、他のエクスポートオプションを検討することもおすすめです。
使用方法の詳細については、ONNX公式ドキュメントを参照してください。
また、他のUltralytics YOLO26の統合機能について詳しく知りたい場合は、統合ガイドページをご覧ください。そこには役立つリソースや洞察が多数掲載されています。
Link to this sectionFAQ#
Link to this sectionUltralyticsを使用してYOLO26モデルをONNX形式にエクスポートするにはどうすればよいですか?#
Ultralyticsを使用してYOLO26モデルをONNX形式にエクスポートするには、以下の手順に従ってください:
from ultralytics import YOLO
# Load a 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")詳細については、エクスポートドキュメントをご覧ください。
Link to this sectionYOLO26モデルのデプロイにONNX Runtimeを使用する利点は何ですか?#
YOLO26モデルのデプロイにONNX Runtimeを使用することには、いくつかの利点があります:
- クロスプラットフォーム互換性: ONNX RuntimeはWindows、macOS、Linuxなどのさまざまなプラットフォームをサポートしており、モデルが異なる環境間でスムーズに実行されることを保証します。
- ハードウェアアクセラレーション: ONNX RuntimeはCPU、GPU、専用アクセラレータに対するハードウェア固有の最適化を活用し、高性能な推論を提供します。
- フレームワーク相互運用性: PyTorchやTensorFlowのような一般的なフレームワークでトレーニングされたモデルをONNX形式に容易に変換し、ONNX Runtimeを使用して実行できます。
- パフォーマンスの最適化: ONNX RuntimeはネイティブのPyTorchモデルと比較して最大3倍のCPU高速化を実現できる場合があり、GPUリソースが限られているデプロイメントシナリオに最適です。
詳細については、ONNX Runtimeドキュメントをご確認ください。
Link to this sectionONNXにエクスポートされたYOLO26モデルには、どのようなデプロイオプションがありますか?#
ONNXにエクスポートされたYOLO26モデルは、以下を含むさまざまなプラットフォームにデプロイできます:
- CPU: 最適化されたCPU推論のためにONNX Runtimeを利用。
- GPU: 高性能なGPUアクセラレーションのためにNVIDIA CUDAを活用。
- エッジデバイス: リアルタイムのオンデバイス推論のために、エッジおよびモバイルデバイス上で軽量モデルを実行。
- Webブラウザ: インタラクティブなWebベースアプリケーションのために、Webブラウザ内でモデルを直接実行。
- クラウドサービス: スケーラブルな推論のために、ONNX形式をサポートするクラウドプラットフォーム上にデプロイ。
詳細については、モデルデプロイオプションのガイドをご覧ください。
Link to this sectionなぜUltralytics YOLO26モデルにONNX形式を使用する必要があるのですか?#
Ultralytics YOLO26モデルにONNX形式を使用することには、数多くのメリットがあります:
- 相互運用性: ONNXにより、異なる機械学習フレームワーク間でのモデルの移行がシームレスになります。
- パフォーマンスの最適化: ONNX Runtimeは、ハードウェア固有の最適化を活用することでモデルのパフォーマンスを向上させることができます。
- 柔軟性: ONNXは多様なデプロイ環境をサポートしており、修正を加えることなく異なるプラットフォームで同一のモデルを使用できます。
- 標準化: ONNXは業界全体で広くサポートされている標準形式を提供しており、長期的な互換性を保証します。
YOLO26モデルのONNXへのエクスポートに関する包括的なガイドを参照してください。
Link to this sectionYOLO26モデルをONNXへエクスポートする際の問題はどのようにトラブルシューティングできますか?#
YOLO26モデルをONNXへエクスポートする際、依存関係の不一致やサポートされていない演算子などの一般的な問題が発生する場合があります。これらの問題をトラブルシューティングするには:
- 必要な依存関係の正しいバージョンがインストールされていることを確認してください。
- サポートされている演算子や機能については、公式のONNXドキュメントを確認してください。
- エラーメッセージからヒントを探し、Ultralyticsの一般的な問題ガイドを参照してください。
simplify=Trueのような異なるエクスポート引数を使用したり、opsetバージョンを調整したりしてみてください。- 動的な入力サイズに関する問題については、エクスポート時に
dynamic=Trueを設定してください。
問題が解決しない場合は、Ultralyticsサポートまでお問い合わせください。