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

アビラミ・ヴィナ

4 min read

2025年5月2日

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

AIソリューションが注目され始めた当初、ほとんどのモデルは管理された環境で強力なサーバー上に展開されていた。しかし、テクノロジーが進歩するにつれて、導入はデータセンターをはるかに超えて拡大した。

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

特に顕著なのがコンピューター・ビジョンで、機械が視覚データを解釈できるようにするAIの一分野である。コンピュータ・ビジョンは、顔認識、自律走行、リアルタイムのビデオ分析などのアプリケーションに使用されている。このような使用例が増えるにつれ、多様なハードウェアやプラットフォームでスムーズに動作するモデルの必要性も高まっている。

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

そのため、Ultralytics YOLO11のようなコンピュータビジョンモデルを様々なフォーマットにエクスポートできるオプションが鍵となります。例えば、UltralyticsがサポートするONNX(Open Neural Network Exchange)統合は、トレーニングと展開のギャップを埋める実用的な方法を提供します。ONNXは、モデルをフレームワークにとらわれず、プラットフォーム間で展開できるようにするオープンフォーマットです。

図1.ONNXを使えば、あるフレームワークで学習したモデルを、別のフレームワークで簡単に実行することができる。

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

ONNXとONNXランタイムとは何ですか?

Open Neural Network Exchangeは、機械学習モデルの標準フォーマットを定義するオープンソースプロジェクトだ。もともとはマイクロソフトとフェイスブックによって開発されたもので、開発者はPyTorchのようなあるフレームワークでモデルを訓練し、TensorFlowのような別のフレームワークでそれを実行することができる。これにより、特にコンピュータ・ビジョンのような分野では、AI開発がより柔軟で、協調的で、利用しやすくなる。

ONNXは、共通の演算子と統一されたファイル形式を提供し、異なるツール、フレームワーク、ランタイム、コンパイラ間でのモデルの移動を容易にします。通常、あるフレームワークでトレーニングされたモデルは、他のフレームワークと簡単に互換性を持つことはできません。しかし、ONNXを使えば、モデルを一度エクスポートすれば、CPU(中央演算処理装置)、GPU(グラフィックス・プロセッシング・ユニット)、モバイルデバイス、エッジハードウェアなど、ほとんどどこにでも展開することができます。

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

図2.ONNXとONNX Runtimeは、柔軟なクロスプラットフォームでのモデル展開を可能にします。

ONNXの主な特徴 

YOLO11をONNXフォーマットにエクスポートする方法を説明する前に、ONNXモデルフォーマットの主な特徴をチェックしておこう。 

ONNXは、ツールの切り替え、異なるデバイスへのデプロイ、システムのアップグレードなど、すべての作業をスムーズに進めるのに役立ちます。ONNXのモデルフォーマットの特徴は以下の通りです:

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

ONNX統合の概要

Ultralytics YOLO11のようなUltralytics YOLOモデルをONNX形式でエクスポートするのは簡単で、数ステップでできます。 

開始するには、'pip'のようなパッケージマネージャを使用してUltralytics Pythonパッケージをインストールします。これは、コマンドプロンプトまたはターミナルで"pip install ultralytics"コマンドを実行することで開始できます。

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モデル・フォーマットのアプリケーション

次に、YOLO11がONNX統合の助けを借りて展開できる実際のアプリケーションをいくつか探ってみよう。

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

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

具体的には、スマート倉庫において、ONNXにエクスポートされたYOLO11モデルは、カメラやエッジ・デバイスを使ってリアルタイムで商品を識別し、カウントするのに使うことができる。エクスポートされたモデルは、棚やパレットをスキャンして、在庫レベル、欠品、空所を検出するのに役立ちます。ONNXにエクスポートすることで、モデルは軽量かつ効率的になり、スマートカメラなどの小型エッジデバイスで直接実行できるため、高価なサーバーや常時クラウドにアクセスする必要がなくなります。

図4.YOLO11を使ったパッケージの検出とカウントの例。

YOLO11による病院廃棄物管理

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

このような廃棄物を適切に分別することは、衛生、安全、そして規制に従うために不可欠です。ONNXフォーマットでエクスポートされたYOLO11モデルを使えば、病院は廃棄物処理を自動化し、リアルタイムでモニターすることができます。

例えば、手術室や廊下などの廃棄物入れの近くにカメラを設置すれば、廃棄される物品を監視することができる。さまざまな種類の医療廃棄物を認識するように訓練されたカスタムYOLO11モデルが映像を分析し、何が捨てられているかを特定することができる。使用済みの注射器が通常のゴミ箱に入っているなど、間違ったゴミ箱に入ってしまった場合、システムは直ちに光や音でスタッフに警告を発するよう設定することができ、汚染を防ぎ、コンプライアンスを確保するのに役立つ。

図5.YOLO11を使って医療器具を検出する。

YOLO11対応作物モニタリング

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

現在、ONNXフォーマットでエクスポートされるYOLO11のようなコンピュータ・ビジョンの革新により、農家は自動化と精度を畑に持ち込むことができる。ドローンやトラクターや支柱に取り付けたカメラを使って、農家は作物(トマト、リンゴ、小麦など)の画像を撮影することができる。その後、YOLO11を使用して、作物の色、大きさ、分布などの重要な指標を検出することができる。この情報に基づいて、農家は作物が収穫の準備ができているのか、まだ成熟していないのか、それともすでにピークを過ぎているのかを判断できる。

図6.YOLO11はドローンの空撮映像から農作物を検出するのに使用できる。 

ONNXの制限事項

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

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

要点

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

これにより、トレーニングから実戦配備への移行がより迅速かつ効率的になります。倉庫の在庫を追跡する場合でも、病院の廃棄物が正しく処理されていることを確認する場合でも、このセットアップによってシステムがよりスムーズに稼働し、エラーを減らし、貴重な時間を節約することができます。

コンピュータビジョンとAIについてもっと知りたいですか?GitHub リポジトリを探索し、コミュニティとつながり、ライセンスオプションをチェックして、コンピュータビジョンプロジェクトを始めましょう。製造業におけるAIや 自動車産業におけるコンピュータビジョンのような革新的な技術をお探しなら、当社のソリューションページをご覧ください。 

AIの未来
を一緒に作りましょう!

機械学習の未来への旅を始めよう

無料で始める
クリップボードにコピーされたリンク