ONNX (Open Neural Network Exchange)
Open Neural Network Exchange(ONNX)フォーマットを探求します。高速でクロスプラットフォームなデプロイメントとハードウェア最適化のために、Ultralytics YOLO26をONNXにエクスポートする方法を学びましょう。
ONNX (Open Neural Network Exchange) は、機械学習モデルを表現するために設計されたオープンソースのフォーマットであり、さまざまなAIフレームワークやツール間の相互運用性を可能にします。ディープラーニングの汎用的な翻訳者として機能し、開発者がPyTorch、TensorFlow、Scikit-learnなどの1つのフレームワークでモデルを構築し、推論用に最適化された別の環境にシームレスにデプロイできるようにします。共通の演算子のセットと標準ファイルフォーマットを定義することにより、ONNXは、モデルを研究から本番環境へ移行する際に従来必要とされていた、複雑でカスタムな変換スクリプトの必要性を排除します。この柔軟性は、強力なクラウドGPUでトレーニングが行われる一方で、デプロイ先がエッジデバイス、携帯電話、Webブラウザなどの多様なハードウェアを対象とする最新のAIワークフローにおいて不可欠です。
現代のAIにおけるONNXの役割#
人工知能の急速に進化する状況において、研究者やエンジニアは開発ライフサイクルのさまざまな段階で異なるツールを使用することがよくあります。データサイエンティストは実験とトレーニングのためにPyTorchの柔軟性を好むかもしれませんが、本番エンジニアはデプロイのためにTensorRTまたはOpenVINOの最適化されたパフォーマンスを必要とします。標準的な交換フォーマットがなければ、これらのエコシステム間でモデルを移行することは困難であり、エラーが発生しやすくなります。
ONNXは、計算グラフの共有定義を提供することでこのギャップを埋めます。モデルがONNXにエクスポートされると、ネットワーク構造(レイヤー、接続)とパラメータ(重み、バイアス)をフレームワークに依存しない方法でキャプチャするフォーマットにシリアライズされます。これにより、ONNX Runtimeなどのハードウェアアクセラレーション向けに特別にチューニングされた推論エンジンが、Linux、Windows、macOS、Android、iOSを含む複数のプラットフォーム全体でモデルを効率的に実行できるようになります。
ONNXを使用する主な利点#
Open Neural Network Exchange フォーマットの採用は、AIプロジェクトにいくつかの戦略的な利点をもたらします。
- フレームワークの相互運用性: 開発者は、単一のエコシステムに縛られることなく、フレームワークを切り替えることができます。ユーザーフレンドリーなUltralytics Python APIを使用してモデルをトレーニングし、C++アプリケーションやWebベースのJavaScript環境で使用するためにエクスポートできます。
- ハードウェアの最適化: 多くのハードウェアメーカーは、ONNXと連携する特殊な実行プロバイダーを提供しています。つまり、単一の
.onnxファイルを、OpenVINOやCoreMLなどのツールを使用して、NVIDIA GPU、Intel CPU、またはモバイルNPU(Neural Processing Unit)で加速させることができます。 - より高速な推論: ONNX Runtimeは、ノードの統合や定数畳み込みなどのグラフ最適化を適用し、推論レイテンシを大幅に削減できます。これは、自動運転車や高速製造ラインなどのリアルタイムアプリケーションにとって不可欠です。
- デプロイの簡素化: すべてのトレーニングフレームワークに対して個別のデプロイパイプラインを維持する代わりに、エンジニアリングチームは配信フォーマットとしてONNXを標準化し、ModelOpsのプロセスを合理化できます。
実社会での応用#
ONNXの汎用性の高さから、多様な業界で定番となっています。その適用例を2つ紹介します。
モバイルデバイス上のエッジAI#
リアルタイムの作物健康モニタリング用に設計されたモバイルアプリケーションを考えてみてください。モデルは、植物画像の膨大なデータセットを使用して、強力なクラウドサーバー上でトレーニングされる場合があります。しかし、アプリは農家のスマートフォン上でオフラインで実行される必要があります。トレーニング済みのモデルをONNXにエクスポートすることで、開発者はONNX Runtime Mobileを使用してそれをモバイルアプリに統合できます。これにより、スマートフォンのプロセッサがローカルで物体検出を実行し、インターネット接続を必要とせずに害虫や病気を即座に特定できるようになります。
クロスプラットフォームのWeb推論#
Eコマースにおいて、「バーチャル試着」機能は姿勢推定を使用してユーザーのWebカメラフィードに衣類を重ね合わせる場合があります。このモデルのトレーニングはPythonで行われる可能性がありますが、デプロイターゲットはWebブラウザです。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のフレームワークです。別個のものではありますが、iPhoneやiPadで効率的に実行するために、モデルはPyTorchからONNXへ、そしてONNXからCoreMLへ(または直接)頻繁に変換されます。
Ultralytics を使用したONNXへのエクスポート#
Ultralyticsエコシステムにより、YOLO26などの最先端モデルをONNXフォーマットに変換するプロセスが簡素化されます。エクスポート機能はライブラリに直接組み込まれており、複雑なグラフ走査と演算子のマッピングを自動的に処理します。
次の例では、事前トレーニング済みのUltralytics 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を使用してエッジデバイスに直接デプロイすることもでき、実質的にあらゆる環境で高性能なコンピュータビジョンを利用できるようにします。






