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に変換し、実環境のアプリケーションでスケーラビリティと有効性を高める方法を説明します。



視聴: Ultralytics YOLO26とUltralytics YOLO11のONNX推論テスト | YOLO26で推論を約43%高速化 🚀

ONNXとONNX Runtime#

ONNXはOpen Neural Network Exchangeの略称で、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 Runtimeとの併用でも、ONNXは機械学習モデルのデプロイと互換性を実現する柔軟なソリューションを提供します。

ONNXモデルの主な特徴#

ONNXがさまざまな形式に対応できるのは、次のような主な特徴があるためです。

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

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

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

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

ONNXの一般的な用途#

YOLO26モデルをONNX形式にエクスポートする方法を説明する前に、ONNXモデルが一般的にどのような場面で使われるかを見てみましょう。

CPUへのデプロイ#

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

対応するデプロイオプション#

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

  • GPUアクセラレーション: ONNXは、CUDAを介したNVIDIA GPUのGPUアクセラレーションと、ROCmおよびMIGraphXを介したAMD GPUのGPUアクセラレーションに完全対応しています。

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

  • 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形式はエクスポート、予測、検証の各モードに対応しています。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証してください。

エクスポート
from ultralytics import YOLO

# YOLO26モデルを読み込みます
model = YOLO("yolo26n.pt")

# モデルをONNXフォーマットにエクスポート
model.export(format="onnx")  # 'yolo26n.onnx'を作成します

# キャリブレーションデータを使用してINT8量子化ONNXモデルをエクスポートします
model.export(format="onnx", quantize=8, data="coco8.yaml")  # 'yolo26n_int8.onnx'を作成します
推論
from ultralytics import YOLO

# エクスポートしたONNXモデルを読み込みます
model = YOLO("yolo26n.onnx")

# 推論を実行
results = model("https://ultralytics.com/images/bus.jpg")
検証
from ultralytics import YOLO

# エクスポートしたONNXモデルを読み込みます
model = YOLO("yolo26n.onnx")

# COCO8データセットで精度を検証します
metrics = model.val(data="coco8.yaml")

エクスポート引数#

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

引数種類デフォルト説明
formatstr'onnx'エクスポートしたモデルのターゲットフォーマットです。さまざまなデプロイ環境との互換性を定義します。
imgszintまたはtuple640モデル入力の画像サイズです。正方形画像の場合は整数、特定のサイズの場合はタプル(height, width)を指定できます。
quantizeintまたはstrNone量子化精度: 16(FP16)または8(dataのキャリブレーション画像を使用したONNX RuntimeによるINT8静的量子化。_int8.onnxモデルを生成します)。32または未設定の場合はFP32です。quantize=8でトレーニングしたチェックポイントは、キャリブレーションなしで、保持されている範囲からQ/DQノードとして常にINT8にエクスポートされ、単純な.onnxという名前になります。非推奨のhalf/int8フラグを置き換えます。
datastrNoneINT8キャリブレーションに使用するデータセットYAMLです。分類タスクでは、代わりにデータセットディレクトリまたは組み込みデータセット名を指定します。quantize=8を指定せず、quantize=8でトレーニングしたチェックポイントを使用する場合、Ultralyticsはモデルのタスクに応じたデフォルトのキャリブレーションデータセットを選択します。チェックポイントにはキャリブレーションデータセットは不要です。
fractionfloat、int、またはlist1.0キャリブレーション用サブセットを、比率、画像数、または[train, val, test]の比率/件数として指定します。2項目のリストではtestがすべて含まれ、0では除外されます。
dynamicboolFalse動的な入力サイズを使用できるようにし、さまざまな画像サイズを柔軟に扱えるようにします。
simplifyboolTrueonnxslimを使用してモデルグラフを簡素化し、パフォーマンスと互換性を向上させる可能性があります。
opsetintNoneさまざまなONNXパーサーやランタイムとの互換性を確保するために、ONNX opsetバージョンを指定します。未設定の場合は、サポートされている最新バージョンが使用されます。
nmsbool、省略可Noneraw出力(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モデルをデプロイし、高性能でスケーラブルなデプロイを実現する方法をご覧ください。

MIGraphXによるAMD GPU推論#

Ultralyticsは、ONNX RuntimeのMIGraphX execution providerを介して、エクスポート済みONNXモデルをAMD GPU上で実行します。ROCm(HIP)システムでは、ONNXバックエンドが初回使用時にonnxruntime-ep-migraphxプラグインをインストールし、コードを変更せずにMIGraphXExecutionProviderを自動的に選択します。YOLO26のすべてのタスクに対応しています。前提条件、インストール、使用方法、ベンチマーク、コンパイル済みプログラムのキャッシュについては、AMD GPU推論ガイドをご覧ください。

概要#

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

ONNXエクスポートは、Ultralytics YOLO26がサポートする多くのエクスポート形式の一つであり、ほぼあらゆる環境にモデルをデプロイできます。特定の要件に応じて、GPUのパフォーマンスを最大化するTensorRTや、Appleデバイス向けのCoreMLなど、他のエクスポートオプションもご検討ください。

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

また、Ultralytics YOLO26の他の統合方法について詳しく知りたい場合は、統合ガイドページをご覧ください。役立つリソースや情報を多数ご紹介しています。

よくある質問#

  • Ultralyticsを使ってYOLO26モデルをONNX形式にエクスポートするには、次の手順に従ってください。

    使用方法
    from ultralytics import YOLO
    
    # YOLO26モデルを読み込みます
    model = YOLO("yolo26n.pt")
    
    # モデルをONNXフォーマットにエクスポート
    model.export(format="onnx")  # 'yolo26n.onnx'を作成します
    
    # エクスポートしたONNXモデルを読み込みます
    onnx_model = YOLO("yolo26n.onnx")
    
    # 推論を実行
    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推論を最適化します。
    • NVIDIA GPU: NVIDIA CUDAを活用して、高性能なGPUアクセラレーションを実現します。
    • AMD GPU: Linux上で高性能なGPUアクセラレーションを実現するために、AMD ROCmとMIGraphX実行プロバイダーを使用します。
    • エッジデバイス: エッジデバイスやモバイルデバイスで軽量モデルを実行し、リアルタイムのオンデバイス推論を実現します。
    • 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サポートにお問い合わせください。

コメント