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






