Ultralytics YOLO27:

YOLO26モデルのONNXエクスポート#

CPU ONNX推論が約43%高速化:YOLO26nとYOLO11nの比較
  • YOLO26nは、CPU ONNX推論においてYOLO11nより最大43%高速です(Intel Xeon CPU @ 2.00 GHz)。完全な比較については、YOLO26モデルページをご覧ください。

多くの場合、コンピュータービジョンモデルをデプロイする際には、柔軟性と複数のプラットフォームへの互換性を兼ね備えたモデル形式が必要です。

Ultralytics YOLO26モデルをONNX形式にエクスポートすると、デプロイが効率化され、さまざまな環境で最適なパフォーマンスを実現できます。このガイドでは、YOLO26モデルをONNXに簡単に変換し、実環境のアプリケーションにおけるスケーラビリティと有効性を高める方法を説明します。



Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀

ONNXとONNX Runtime#

ONNXは、オープン ニューラルネットワーク交換を意味し、FacebookとMicrosoftが当初開発したコミュニティプロジェクトです。ONNXは、IBM、Amazon(AWSを通じて)、Googleなど、さまざまな組織の支援を受けて共同で継続開発されています。このプロジェクトは、異なるAIフレームワークやハードウェアで利用できるよう、機械学習モデルを表現するためのオープンファイル形式の作成を目指しています。

ONNXモデルを使用すると、異なるフレームワーク間をシームレスに移行できます。たとえば、PyTorchでトレーニングしたディープラーニングモデルをONNX形式にエクスポートし、その後TensorFlowに簡単にインポートできます。

ONNX model portability across deep learning frameworks

あるいは、ONNXモデルをONNX Runtimeで使用することもできます。ONNX Runtimeは、PyTorch、TensorFlow、scikit-learnなどのフレームワークと互換性のある、機械学習モデル向けの汎用的なクロスプラットフォームアクセラレーターです。

ONNX Runtimeは、ハードウェア固有の機能を活用してONNXモデルの実行を最適化します。この最適化により、CPU、GPU、専用アクセラレーターなど、さまざまなハードウェアプラットフォーム上でモデルを効率的かつ高性能に実行できます。

ONNX Runtime cross-platform inference acceleration

ONNXは、単独で使用する場合でもONNX Runtimeと組み合わせて使用する場合でも、柔軟な機械学習のモデルデプロイと互換性を実現します。

ONNXモデルの主な特徴#

ONNXがさまざまな形式を処理できるのは、次の主な特徴によるものです。

  • 共通モデル表現:ONNXは、演算子(畳み込みやレイヤーなど)の共通セットと標準データ形式を定義します。モデルをONNX形式に変換すると、そのアーキテクチャと重みがこの共通表現に変換されます。この統一性により、ONNXをサポートするあらゆるフレームワークでモデルを解釈できます。

  • バージョン管理と後方互換性:ONNXは演算子のバージョン管理システムを維持しています。これにより、標準が進化しても、古いバージョンで作成されたモデルを引き続き使用できます。後方互換性は、モデルがすぐに陳腐化するのを防ぐ重要な機能です。

  • グラフベースのモデル表現:ONNXはモデルを計算グラフとして表現します。このグラフベースの構造は、機械学習モデルを表現する汎用的な方法です。ノードは操作や計算を、エッジはノード間を流れるテンソルを表します。この形式は、モデルをグラフとして表現するさまざまなフレームワークに簡単に適応できます。

  • ツールとエコシステム:ONNXには、モデルの変換、可視化、最適化を支援する豊富なツールエコシステムがあります。これらのツールにより、開発者はONNXモデルを扱いやすくなり、異なるフレームワーク間でモデルをシームレスに変換できます。

ONNXの一般的な用途#

YOLO26モデルをONNX形式にエクスポートする方法に入る前に、ONNXモデルが通常どこで使用されるかを見てみましょう。

CPUデプロイ#

ONNXモデルは、ONNX Runtimeとの互換性により、CPUにデプロイされることがよくあります。このランタイムはCPU実行向けに最適化されています。推論速度を大幅に向上させ、リアルタイムのCPUデプロイを実現可能にします。

サポートされるデプロイオプション#

ONNXモデルはCPUで一般的に使用されますが、次のプラットフォームにもデプロイできます。

  • GPUアクセラレーション:ONNXは、特にNVIDIA CUDAによるGPUアクセラレーションを完全にサポートしています。AMD GPUでネイティブのトレーニングと推論を行う場合は、PyTorch ROCmを使用してください。ONNXファイルには、AMD互換のランタイムが引き続き必要です。

  • エッジデバイスとモバイルデバイス:ONNXはエッジデバイスやモバイルデバイスにも対応しており、デバイス上推論やリアルタイム推論のシナリオに適しています。軽量でエッジハードウェアと互換性があり、Huawei Ascend、Snapdragonデバイス向けのQualcomm QNN、Rockchip NPU向けのRKNNなど、ベンダーNPU形式の基盤として機能します。

  • Webブラウザー:ONNXはWebブラウザーで直接実行でき、インタラクティブで動的なWebベースのAIアプリケーションを実現します。

サポートされるタスク#

ONNXエクスポートは、Ultralyticsの7つすべてのタスクをサポートしています。セマンティックセグメンテーションと深度推定はYOLO26でのみ利用できます。これらのヘッドを搭載しているファミリーはYOLO26だけです。

タスクYOLOv8YOLO11YOLO26
検出
セグメンテーション
セマンティック
深度
分類
ポーズ
OBB

YOLO26モデルのONNXへのエクスポート#

YOLO26モデルをONNX形式に変換すると、モデルの互換性とデプロイの柔軟性を拡張できます。Ultralytics YOLO26はシンプルなエクスポートプロセスを提供し、さまざまなプラットフォームでのモデルのパフォーマンスを大幅に向上させます。

インストール#

必要なパッケージをインストールするには、次を実行します。

インストール
# Install the required package for YOLO26
pip install ultralytics

インストール手順とベストプラクティスの詳細については、YOLO26インストールガイドをご確認ください。YOLO26に必要なパッケージのインストール中に問題が発生した場合は、解決策とヒントについて一般的な問題のガイドをご参照ください。

使用方法#

使用方法の説明を確認する前に、Ultralyticsが提供するYOLO26モデルのラインナップをご確認ください。プロジェクトの要件に最適なモデルを選択するのに役立ちます。

ONNX形式は、ExportPredictValidateモードをサポートしています。モデルをエクスポートした後、エクスポート済みのモデルを読み込んで推論を実行するか、精度を検証してください。

エクスポート
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")

エクスポート引数#

YOLO26モデルをONNX形式にエクスポートする際は、さまざまな引数を使用してプロセスをカスタマイズし、特定のデプロイ要件に合わせて最適化できます。

引数デフォルト説明
formatstr'onnx'エクスポートされたモデルの対象形式で、さまざまなデプロイ環境との互換性を定義します。
imgszintまたはtuple640モデル入力に使用する画像サイズです。正方形画像の場合は整数、特定の寸法の場合はタプル(height, width)を指定できます。
quantizeintまたはstrNone量子化精度:16(FP16)、または 8data からのキャリブレーション画像を使用する ONNX Runtime を用いた INT8 静的量子化で、_int8.onnx モデルを生成します)、32 / 未設定は FP32 です。quantize=8 でトレーニングされたチェックポイントは、キャリブレーションなしで、保持している範囲から Q/DQ ノードとして常に INT8 にエクスポートされ、通常の .onnx 名になります。非推奨となった half / int8 フラグに置き換わります。
datastrNoneINT8 キャリブレーションに使用されるデータセット YAML。分類の場合は、代わりにデータセット ディレクトリまたは組み込みのデータセット名を受け付けます。quantize=8 で省略された場合、Ultralytics はモデルタスクのデフォルトのキャリブレーション データセットを選択します。quantize=8 でトレーニングされたチェックポイントには何も必要ありません。
fractionfloatint、またはlist1.0キャリブレーションサブセットを、比率、画像枚数、または [train, val, test] の比率/枚数として指定します。2項目のリストでは、test はすべて使用され、0 はスキップされます。
dynamicboolFalse動的な入力サイズを許可し、さまざまな画像寸法を柔軟に扱えるようにします。
simplifyboolTrueonnxslimを使用してモデルグラフを簡略化し、パフォーマンスと互換性を向上させる可能性があります。
opsetintNone異なるONNXパーサーおよびランタイムとの互換性を確保するため、ONNX opsetバージョンを指定します。設定しない場合は、サポートされている最新バージョンが使用されます。
nmsbool、オプションNone生出力(None、デフォルト)、組み込み NMS(True)、または NMS フリーヘッド(False)を選択します。
batchint1エクスポートするモデルのバッチ推論サイズ、またはpredictモードでエクスポート済みモデルが同時に処理する画像の最大数を指定します。
devicestrNoneエクスポートに使用するデバイスを指定します。GPU(device=0)、CPU(device=cpu)、Appleシリコン向けMPS(device=mps)を指定できます。

エクスポートプロセスの詳細については、エクスポートに関するUltralyticsドキュメントページをご覧ください。

エクスポート済み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モデルをデプロイし、高性能でスケーラブルなデプロイを実現する方法を説明します。

まとめ#

このガイドでは、Ultralytics YOLO26モデルをONNX形式にエクスポートして、さまざまなプラットフォームで相互運用性とパフォーマンスを高める方法を学びました。また、ONNX RuntimeとONNXのデプロイオプションについても紹介しました。

ONNXエクスポートは、Ultralytics YOLO26がサポートする多数のエクスポート形式の1つにすぎず、ほぼあらゆる環境にモデルをデプロイできます。具体的な要件に応じて、最大限のGPUパフォーマンスを実現するTensorRTや、Appleデバイス向けのCoreMLなど、他のエクスポートオプションも検討するとよいでしょう。

詳しい使用方法については、ONNX公式ドキュメントをご覧ください。

また、その他のUltralytics YOLO26インテグレーションについて詳しく知りたい場合は、インテグレーションガイドページをご覧ください。役立つリソースや知見が多数掲載されています。

FAQ#

  • 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")

    詳しくは、エクスポートドキュメントをご覧ください。

  • YOLO26モデルのデプロイにONNX Runtimeを使用すると、いくつかの利点があります。

    • クロスプラットフォーム互換性:ONNX RuntimeはWindows、macOS、Linuxなど、さまざまなプラットフォームをサポートしており、異なる環境でモデルをスムーズに実行できます。
    • ハードウェアアクセラレーション:ONNX RuntimeはCPU、GPU、専用アクセラレーター向けのハードウェア固有の最適化を活用でき、高性能な推論を実現します。
    • フレームワークの相互運用性PyTorchやTensorFlowなどの一般的なフレームワークでトレーニングしたモデルをONNX形式に簡単に変換し、ONNX Runtimeで実行できます。
    • パフォーマンス最適化:ONNX Runtimeは、ネイティブのPyTorchモデルと比較してCPU速度を最大3倍向上させることができ、GPUリソースが限られるデプロイシナリオに適しています。

    詳しくは、ONNX Runtimeドキュメントをご覧ください。

  • ONNXにエクスポートしたYOLO26モデルは、次のようなさまざまなプラットフォームにデプロイできます。

    • CPU:ONNX Runtimeを使用して最適化されたCPU推論を実行します。
    • GPU:NVIDIA CUDAを活用して高性能なGPUアクセラレーションを実現します。
    • エッジデバイス:エッジデバイスやモバイルデバイスで軽量モデルを実行し、リアルタイムのデバイス上推論を行います。
    • Webブラウザー:Webブラウザー内でモデルを直接実行し、インタラクティブなWebベースアプリケーションを実現します。
    • クラウドサービス:ONNX形式をサポートするクラウドプラットフォームにデプロイし、スケーラブルな推論を実現します。

    詳しくは、モデルのデプロイオプションに関するガイドをご覧ください。

  • Ultralytics YOLO26モデルにONNX形式を使用すると、多くのメリットがあります。

    • 相互運用性:ONNXを使用すると、異なる機械学習フレームワーク間でモデルをシームレスに移行できます。
    • パフォーマンス最適化:ONNX Runtimeは、ハードウェア固有の最適化を活用してモデルのパフォーマンスを向上させます。
    • 柔軟性:ONNXはさまざまなデプロイ環境をサポートしているため、変更せずに同じモデルを異なるプラットフォームで使用できます。
    • 標準化:ONNXは業界全体で広くサポートされる標準形式を提供し、長期的な互換性を確保します。

    YOLO26モデルをONNXにエクスポートするための包括的なガイドをご覧ください。

  • YOLO26モデルをONNXにエクスポートする際、依存関係の不一致やサポートされていない操作など、一般的な問題が発生する場合があります。これらの問題を解決するには、次の手順を実行してください。

    1. 必要な依存関係の正しいバージョンがインストールされていることを確認します。
    2. サポートされている演算子と機能については、公式のONNXドキュメントを確認してください。
    3. エラーメッセージから手がかりを探し、Ultralyticsの一般的な問題に関するガイドを参照してください。
    4. simplify=Trueなどの異なるエクスポート引数を試すか、opsetのバージョンを調整してください。
    5. 動的な入力サイズに関する問題がある場合は、エクスポート時にdynamic=Trueを設定してください。

    問題が解決しない場合は、Ultralyticsサポートにお問い合わせください。

コメント