YOLO Vision 2025にご期待ください!
2025年9月25日
10:00 — 18:00(英国夏時間)
ハイブリッドイベント
Yolo Vision 2024

ONNX統合を使用してUltralytics YOLOモデルをエクスポートする

Abirami Vina

4分で読めます

2025年5月2日

Ultralytics YOLO11などのUltralytics YOLOモデルを、さまざまなハードウェアでのクロスプラットフォーム展開のためにONNX統合を使用してエクスポートする方法を学びます。

AIソリューションが最初に注目を集め始めたとき、ほとんどのモデルは管理された環境の強力なサーバーにデプロイされていました。しかし、テクノロジーが進歩するにつれて、デプロイメントはデータセンターをはるかに超えて拡大しました。

今日、AIモデルはクラウドサーバーやデスクトップからスマートフォンやエッジデバイスまで、あらゆるもの上で実行されています。この変化は、より高速な処理、オフライン機能、およびデータが生成される場所に近い場所で動作するよりスマートなシステムをサポートします。

特にそれが明確な分野の1つがコンピュータビジョンです。これは、機械が視覚データを解釈できるようにするAIの分野です。顔認識、自動運転、リアルタイムビデオ分析などのアプリケーションを推進するために使用されています。これらのユースケースの増加に伴い、多様なハードウェアとプラットフォームでスムーズに実行できるモデルの必要性も高まっています。

しかし、さまざまな展開ターゲットにわたってコンピュータビジョンモデルを展開することは、必ずしも簡単ではありません。デバイスは、ハードウェア、オペレーティングシステム、およびサポートされているフレームワークの点で異なるため、柔軟性と互換性が不可欠です。

Ultralytics YOLO11のようなコンピュータビジョンモデルをさまざまな形式でエクスポートできるオプションがあるのはそのためです。たとえば、UltralyticsがサポートするONNX(Open Neural Network Exchange)統合は、トレーニングとデプロイメントの間のギャップを埋めるための実用的な方法を提供します。ONNXは、モデルをフレームワークに依存せず、プラットフォーム全体でデプロイメントに対応できるようにするオープン形式です。

Fig 1. ONNXを利用することで、あるフレームワークで学習させたモデルを別のフレームワークで容易に実行できます。

この記事では、UltralyticsがサポートするONNX統合について詳しく見ていき、柔軟なクロスプラットフォーム展開のためにYOLO11モデルをエクスポートする方法を探ります。

ONNXとONNX Runtimeとは?

Open Neural Network Exchange(ONNX)は、機械学習モデルの標準フォーマットを定義するオープンソースプロジェクトです。元々MicrosoftとFacebookによって開発され、開発者はPyTorchのようなあるフレームワークでモデルをトレーニングし、TensorFlowのような別のフレームワークで実行できます。これにより、特にコンピュータビジョンのような分野において、AI開発がより柔軟で、協調的で、アクセスしやすくなります。

ONNXは、共通のオペレーターセットと統一されたファイル形式を提供し、さまざまなツール、フレームワーク、ランタイム、およびコンパイラ間でモデルを簡単に移動できるようにします。通常、あるフレームワークでトレーニングされたモデルは、別のフレームワークと簡単には互換性がありません。しかし、ONNXを使用すると、モデルを一度エクスポートして、CPU(中央処理装置)、GPU(グラフィックス処理装置)、モバイルデバイス、またはエッジハードウェアなど、ほぼどこにでもデプロイできます。

また、ONNX Runtimeは、ONNX形式でモデルを実行するために特別に開発された高性能な推論エンジンです。ONNXモデルを、サーバー、モバイルデバイス、エッジハードウェアなど、幅広いプラットフォームでより高速かつ効率的に実行できるように設計されています。ONNX Runtimeは、PyTorch、TensorFlow、TensorFlow Lite、scikit-learnなどの一般的なフレームワークと互換性があり、さまざまなワークフローに簡単に統合して、必要な場所にモデルをデプロイできます。

Fig 2. ONNXとONNX Runtimeにより、柔軟なクロスプラットフォームモデルのデプロイメントが可能になります。

ONNXの主な特徴 

YOLO11をONNX形式にエクスポートする方法を説明する前に、ONNXモデル形式の主要な機能のいくつかを確認しましょう。 

ツール間の切り替え、異なるデバイスへのデプロイ、システムのアップグレードなど、どのような場合でも、ONNXはすべてをスムーズに実行し続けるのに役立ちます。ONNXモデル形式をユニークにする理由をご紹介します。

  • 単一の標準フォーマット: ONNXは、モデルの構築方法(レイヤーやオペレーションなど、構成要素と考えてください)を記述する共通の方法を使用します。モデルがONNXに変換されると、この標準に従うため、ONNXをサポートするシステムであれば、モデルを理解して実行できます。
  • 下位互換性: ONNXは改善を続けていますが、古いモデルが新しいバージョンでも動作することを保証しています。つまり、ONNXが更新されるたびに、モデルを再トレーニングまたは再構築する必要はありません。
  • グラフベースのモデル設計: ONNXモデルは計算グラフとして構成されており、各ノードは操作(レイヤーや数学関数など)を表し、エッジはデータの流れを示します。このグラフベースの設計により、同様の計算グラフ構造を利用するさまざまなシステムとの統合が容易になります。
  • 開発者向けの使いやすいツール: モデルの変換、検証、最適化に役立つ幅広いツールが付属しています。これらのツールは、異なるフレームワーク間でのモデルの移動プロセスを簡素化し、特にコンピュータビジョンアプリケーションの場合、デプロイを高速化できます。

ONNX統合の概要

Ultralytics YOLOモデル(Ultralytics YOLO11など)をONNX形式でエクスポートするのは簡単で、いくつかの手順で実行できます。 

まず、‘pip’ などのパッケージマネージャーを使用して、Ultralytics Python パッケージをインストールします。これを行うには、コマンドプロンプトまたはターミナルで “pip install ultralytics” コマンドを実行します。

Ultralytics パッケージを使用すると、さまざまなコンピュータビジョンタスクのモデルを簡単にトレーニング、テスト、微調整、エクスポート、およびデプロイできるため、プロセス全体がより高速かつ効率的になります。インストール中に問題が発生した場合は、よくある問題ガイドを参照して、解決策とヒントを確認してください。

Ultralyticsパッケージがインストールされると、以下のコードを使用してYOLO11モデルをロードし、ONNX形式でエクスポートできます。この例では、事前トレーニング済みのYOLO11モデル(yolo11n.pt)をロードし、ONNXファイル(yolo11n.onnx)としてエクスポートして、さまざまなプラットフォームやデバイスでの展開に対応できるようにします。

モデルをONNX形式に変換した後、さまざまなプラットフォームにデプロイできます。 

以下の例では、エクスポートされたYOLO11モデル(yolo11n.onnx)をロードし、それを使って推論を実行する方法を示します。推論とは、学習済みモデルを使用して新しいデータに対する予測を行うことです。ここでは、バスの画像のURLを使用してモデルをテストします。

このコードを実行すると、次の出力画像がruns/detect/predictフォルダーに保存されます。

図3. エクスポートされたYOLO11モデルを使用して、画像上で推論を実行する。

ONNX連携はどのような場合に選択すべきですか?

Ultralytics Pythonパッケージは、TorchScript、CoreML、TensorRT、ONNXなど、いくつかの形式へのモデルのエクスポートをサポートしています。では、なぜONNXを選択するのでしょうか?

ONNXの特筆すべき点は、フレームワークに依存しない形式であることです。他の多くのエクスポート形式が特定のツールや環境に結び付けられているのに対し、ONNXは標準化された形式と共有された演算子のセットを使用します。これにより、クラウドサーバー、モバイルアプリ、エッジデバイスなど、プラットフォームを問わず、移植性が高く、ハードウェアとの親和性が高く、クロスプラットフォームのデプロイに最適です。 

ONNX統合がYOLO11プロジェクトに最適な選択肢となる理由を以下に示します。

  • ポータブルなデプロイメント: ONNXにエクスポートされると、YOLO11モデルはコードの変更や再トレーニングなしに、さまざまなプラットフォームにデプロイできます。
  • 業界全体のサポート: ONNXは主要なAI企業およびフレームワークによってサポートされており、信頼性が高く、広く受け入れられている形式となっています。PDFがデバイス間で機能するのと同じように、長期的な互換性を保証します。
  • 将来を見据えた開発: ONNXを使用すると、モデルへの投資を保護できます。ツールが進化するにつれて、ONNXは、新しい環境や異なる環境でも、モデルの関連性と有用性を維持します。
  • ベンダーロックインなし: 一部のツールは、自社のシステムのみを使用するように制限するため、モデルの機能を制限する可能性があります。ONNXを使用すると、単一のセットアップに縛られることなく、ニーズに最適なプラットフォームを選択できます。

YOLO11とONNXモデル形式の応用

次に、ONNX統合の助けを借りてYOLO11をデプロイできる、いくつかの実際のアプリケーションを見ていきましょう。

YOLO11を使用した倉庫での在庫追跡

混雑した倉庫では、すべての製品やパッケージを常に監視することは困難です。コンピュータビジョンシステムは、作業員が棚にある製品を見つけたり、製品の数や種類などの情報を得たりするのに役立ちます。このようなシステムは、企業が膨大な在庫を自動的に管理し、倉庫作業員の時間を大幅に節約するのに役立ちます。

具体的には、スマート倉庫では、ONNXにエクスポートされたYOLO11モデルを使用して、カメラとエッジデバイスを使用してリアルタイムでアイテムを識別およびカウントできます。エクスポートされたモデルは、棚またはパレットをスキャンして、在庫レベル、不足しているアイテム、または空のスポットを検出するのに役立ちます。ONNXにエクスポートすると、モデルが軽量で効率的になるため、スマートカメラなどの小型エッジデバイスで直接実行でき、高価なサーバーや постоянныйクラウドアクセスは不要になります。

図4. YOLO11を使用して荷物を検出およびカウントする例。

YOLO11による病院廃棄物管理

世界中の病院では、使用済みの手袋や注射器から、手術中に使用される器具(使い捨てまたは汚染されたハサミやメスなどの手術器具)まで、毎日大量の廃棄物が発生しています。実際、調査によると、病院は年間約500万トンの廃棄物を生成しており、これは1床あたり1日29ポンドの廃棄物に相当します。 

このような廃棄物を適切に分別することは、衛生、安全、および規制遵守のために不可欠です。ONNX形式でエクスポートされたYOLO11モデルを使用することで、病院は廃棄物処理をリアルタイムで自動化し、監視できます。

例えば、手術室や廊下などのエリアにあるゴミ箱の近くにカメラを設置し、廃棄物を監視できます。さまざまな種類の医療廃棄物を認識するようにトレーニングされたカスタムYOLO11モデルは、映像を分析して何が捨てられているかを識別できます。使用済みの注射器が一般ゴミに入っているなど、誤ったゴミ箱に廃棄物が入った場合、システムはスタッフにライトや音で直ちに警告するように設定でき、汚染を防ぎ、コンプライアンスを確保できます。

図5:YOLO11を用いた医療器具の検出。

YOLO11を活用した作物モニタリング

作物の収穫時期を適切に知ることは、農産物の品質と農場全体の生産性の両方に大きな影響を与えます。従来、農家は経験と手作業による検査に頼っていましたが、最近の技術の進歩により、状況は変わり始めています。

現在、YOLO11のようなコンピュータビジョンの革新により、ONNX形式でエクスポートされ、農家は自動化と精度を現場に導入できます。ドローンやトラクターまたはポールに取り付けられたカメラを使用することで、農家は作物(トマト、リンゴ、小麦など)の画像をキャプチャできます。次に、YOLO11を使用して、色、サイズ、作物の分布などの主要な指標を検出できます。この情報に基づいて、農家は作物が収穫の準備ができているか、まだ成熟しているか、またはすでにピークを過ぎているかを判断できます。

図6。YOLO11は、空中ドローン映像で作物を検出するために使用できます。 

考慮すべきONNXの制限事項

ONNXは、移植性、クロスプラットフォーム互換性、フレームワークの相互運用性など、多くの利点を提供する一方で、留意すべきいくつかの制限事項があります。

  • モデルサイズ: モデルをONNX形式に変換すると、元の形式と比較してファイルサイズが大きくなることがあります。量子化と枝刈りのような手法は、パフォーマンスに大きな影響を与えることなくモデルサイズを縮小することで、この問題を軽減するのに役立ちます。​
  • ランタイム互換性: ONNX Runtimeはクロスプラットフォーム互換性を持つように設計されていますが、パフォーマンスとサポートはハードウェアおよびオペレーティングシステムによって異なる場合があります。 
  • デバッグの課題: ONNXモデルのデバッグは、PyTorchやTensorFlowのようなネイティブフレームワークよりも複雑になる可能性があります。エラーメッセージの記述が不十分な場合があり、問題の特定が困難になります。ただし、モデルの可視化のためのNetronや、ONNX Runtimeのロギング機能のようなツールは、トラブルシューティングに役立ちます。

主なポイント

Ultralytics YOLO11をONNXにエクスポートすると、トレーニング済みのコンピュータビジョンモデルを簡単に利用して、ラップトップ、モバイルデバイス、さらにはコンパクトなスマートカメラなど、ほぼどこにでもデプロイできます。ONNX統合により、単一のフレームワークやプラットフォームに縛られることなく、アプリケーションに最適な環境でモデルを実行できる柔軟性が得られます。 

これにより、トレーニングから実際の展開への移行がより迅速かつ効率的になります。倉庫での在庫追跡であろうと、病院の廃棄物が正しく処分されていることを確認することであろうと、このセットアップはシステムの円滑な実行を支援し、エラーを減らし、貴重な時間を節約します。

コンピュータビジョンと AI についてもっと知りたいですか? GitHub リポジトリを探索し、コミュニティとつながり、ライセンスオプションを確認して、コンピュータビジョンプロジェクトを始めましょう。製造業における AI自動車産業におけるコンピュータビジョンなどのイノベーションに関心がある場合は、ソリューションページをご覧ください。 

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

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

無料ではじめる
クリップボードにコピーしました