グリーンチェック
クリップボードにコピーされたリンク

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

様々なハードウェアにクロスプラットフォームで展開するために、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は、機械学習モデルの標準フォーマットを定義するオープンソースプロジェクトだ。もともとはMicrosoft フェイスブックによって開発されたもので、開発者は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 YOLO YOLO11 ようなUltralytics YOLO モデルを ONNX フォーマットでエクスポートするのは簡単で、数ステップでできます。 

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

Ultralytics パッケージを使用すると、様々なコンピュータビジョンタスクのためのモデルのトレーニング、テスト、微調整、エクスポート、デプロイメントを簡単に行うことができます。Ultralyticsのインストール中に問題が発生した場合は、「よくある問題」ガイドを参照して解決策やヒントを得ることができます。

Ultralytics パッケージがインストールされたら、以下のコードを使用して、YOLO11 モデルをロードし、ONNX フォーマットにエクスポートすることができます。この例では、事前にトレーニングされたYOLO11 モデル(yolo11n.pt)をロードし、ONNX ファイル(yolo11nonnx)としてエクスポートします。

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

model.export(format="onnx") 

モデルをONNX フォーマットに変換した後、様々なプラットフォームで展開することができます。 

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

onnx_model = YOLO("yolo11n.onnx")

results = onnx_model("https://ultralytics.com/images/bus.jpg",save=True)

このコードを実行すると、以下の出力画像が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や 自動車産業におけるコンピュータビジョンのような革新的な技術をお探しなら、当社のソリューションページをご覧ください。 

リンクトインのロゴツイッターのロゴFacebookのロゴコピー・リンク・シンボル

このカテゴリの続きを読む

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

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