YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

ONNX (オープン・ニューラル・ネットワーク・エクスチェンジ)

Open Neural Network Exchange (ONNX) フォーマットを探りましょう。高速なクロスプラットフォーム展開とハードウェア最適化のために、Ultralytics YOLO26をONNXにエクスポートする方法を学びましょう。

ONNX (Open Neural Network Exchange)は、機械学習モデルを表現するために設計されたオープンソース形式であり、様々なAIフレームワークとツール間の相互運用性を可能にします。これはディープラーニングのユニバーサル翻訳機として機能し、開発者がPyTorch、TensorFlow、Scikit-learnなどの1つのフレームワークでモデルを構築し、推論に最適化された別の環境にシームレスにデプロイできるようにします。共通のオペレーターセットと標準ファイル形式を定義することで、ONNXは、モデルを研究から本番環境に移行するために歴史的に必要とされていた複雑なカスタム変換スクリプトの必要性を排除します。この柔軟性は、トレーニングが強力なクラウドGPUで行われ、デプロイがエッジデバイス、携帯電話、ウェブブラウザなどの多様なハードウェアをターゲットとする現代のAIワークフローにとって不可欠です。

現代AIにおけるONNXの役割

急速に進化する 人工知能の分野では、研究者や エンジニアは、開発ライフサイクルの異なる段階で異なるツールを使用することがよくあります。データサイエンティストは実験やトレーニングにPyTorchの柔軟性を好むかもしれませんが、プロダクションエンジニアはデプロイメントのために TensorRTやOpenVINOの最適化されたパフォーマンスを必要とします。 標準的な交換フォーマットがなければ、これらのエコシステム間でモデルを移動させることは困難でエラーが発生しやすくなります。

ONNXは、計算グラフの共有定義を提供することでこのギャップを埋めます。モデルがONNXにエクスポートされると、ネットワーク構造(層、接続)とパラメータ(重み、バイアス)をフレームワークに依存しない形で捉えるフォーマットにシリアライズされます。これにより、ONNX Runtimeのようなハードウェアアクセラレーションに特化して調整された推論エンジンが、Linux、Windows、macOS、Android、iOSを含む複数のプラットフォームでモデルを効率的に実行できるようになります。

ONNXを使用する主な利点

Open Neural Network Exchange (ONNX) フォーマットを採用することは、AIプロジェクトにいくつかの戦略的な利点をもたらします。

  • Framework Interoperability: 開発者は、単一のエコシステムに縛られることなく、フレームワーク間を切り替えることができます。ユーザーフレンドリーなUltralytics Python APIを使用してモデルをトレーニングし、C++アプリケーションやWebベースのJavaScript環境で使用するためにエクスポートできます。
  • ハードウェア最適化: 多くのハードウェアメーカーは、ONNXとインターフェースする特殊な実行プロバイダーを提供しています。これは単一の .onnx ファイルは、NVIDIA GPU、Intel CPU、またはモバイルNPU(Neural Processing Units)上で、ツールを使用して高速化できます。 OpenVINO またはCoreML。
  • 推論の高速化: ONNX Runtimeは、ノード融合や定数畳み込みなどのグラフ最適化を適用し、推論レイテンシを大幅に削減できます。これは、自動運転車や高速製造ラインなどのリアルタイムアプリケーションにとって不可欠です。
  • デプロイの簡素化: 各トレーニングフレームワークごとに個別のデプロイパイプラインを維持する代わりに、エンジニアリングチームはONNXを配信フォーマットとして標準化し、ModelOpsプロセスを合理化できます。

実際のアプリケーション

ONNXの汎用性により、様々な産業で不可欠な存在となっています。その応用例を2つ具体的に示します。

1. モバイルデバイスにおけるエッジAI

リアルタイム作物健康モニタリング用に設計されたモバイルアプリケーションを考えてみましょう。モデルは、植物画像の大きなデータセットを使用して強力なクラウドサーバーでトレーニングされるかもしれません。しかし、このアプリは農家のスマートフォンでオフラインで実行する必要があります。トレーニング済みモデルをONNXにエクスポートすることで、開発者はONNX Runtime Mobileを使用してモバイルアプリに統合できます。これにより、スマートフォンのプロセッサがローカルでobject detectionを実行し、インターネット接続なしで害虫や病気を即座に特定できます。

2. クロスプラットフォームウェブ推論

eコマースでは、「バーチャル試着」機能が姿勢推定を使用して、ユーザーのウェブカメラフィードに服を重ね合わせる場合があります。このモデルの訓練はpythonで行われるかもしれませんが、デプロイターゲットはウェブブラウザです。ONNXを使用すると、モデルは変換され、ONNX Runtime Webを介してユーザーのブラウザで直接実行できます。これにより、クライアントのデバイス機能(WebGLまたはWebAssembly)を利用してコンピュータビジョンタスクを実行し、動画データがユーザーのコンピュータから離れることがないため、スムーズでプライバシーを保護した体験が保証されます。

関連用語との比較

ONNXを他のモデル形式やツールと区別することは有用です。

  • vs. TensorRT: ONNXが交換フォーマットであるのに対し、TensorRTは特にNVIDIA GPU向けの推論エンジンおよびオプティマイザです。一般的なワークフローでは、まずモデルをONNXにエクスポートし、次にそのONNXファイルをTensorRTにパースして、NVIDIAハードウェアで最大のスループットを達成します。
  • vs. TensorFlow SavedModel: SavedModelはTensorFlowのネイティブなシリアライズ形式です。Googleエコシステム内で堅牢である一方で、ONNXよりも普遍的な互換性が低いという特徴があります。より広範なプラットフォームサポートを得るために、SavedModelをONNXに変換するツールがしばしば存在します。
  • vs. CoreML: CoreMLはAppleのオンデバイス機械学習フレームワークです。これらは異なりますが、モデルはPyTorchからONNXへ、そしてONNXからCoreMLへ(または直接)頻繁に変換され、iPhoneやiPadで効率的に実行されます。

ONNX Ultralytics ONNX エクスポート

Ultralyticsエコシステムは、YOLO26のような最先端モデルをONNX形式に変換するプロセスを簡素化します。エクスポート機能はライブラリに直接組み込まれており、複雑なグラフトラバーサルとオペレーターマッピングを自動的に処理します。

以下の例は、事前学習済みYOLO26モデルをデプロイメント用にONNXフォーマットにエクスポートする方法を示しています。

from ultralytics import YOLO

# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")

# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)

print(f"Model exported successfully to: {path}")

エクスポートされると、これは .onnx ファイルは、~で利用できます。 Ultralyticsプラットフォーム 管理用、またはONNX Runtimeを使用してエッジデバイスに直接デプロイされ、ほぼあらゆる環境で高性能なコンピュータービジョンを利用可能にします。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。