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フォーマットはExport、Predict、およびValidateモードをサポートしています。モデルをエクスポートした後、エクスポートされたモデルを読み込んで推論を実行したり、その精度を検証したりできます。
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", quantize=8, 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)を指定できます。 |
quantize | int または str | None | 量子化精度: 16 (FP16) または 8 (ONNX Runtimeを使用したINT8静的量子化。dataからのキャリブレーション画像を使用し、_int8.onnxモデルを生成)。32/未設定はFP32になります。非推奨のhalf/int8フラグに代わるものです。 |
data | str | None | INT8キャリブレーションに使用するデータセットのYAML。quantize=8で省略された場合、Ultralyticsはモデルタスクのデフォルトのキャリブレーションデータセットを選択します。 |
fraction | float | 1.0 | INT8量子化に使用するキャリブレーション画像の割合。 |
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のエクスポートに関するドキュメントページを参照してください。
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がサポートする多くのエクスポートフォーマットのうちの1つに過ぎず、事実上あらゆる環境でモデルをデプロイできます。特定のニーズに応じて、最大のGPUパフォーマンスを得るためのTensorRTや、Appleデバイス向けのCoreMLなど、他のエクスポートオプションを検討することも可能です。
使用方法の詳細については、ONNX公式ドキュメントをご覧ください。
また、その他のUltralytics YOLO26インテグレーションについて知りたい場合は、インテグレーションガイドページをご覧ください。そこには役立つリソースや洞察が多数掲載されています。
Link to this sectionよくある質問 (FAQ)#
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 sectionUltralytics 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サポートまでお問い合わせください。