Yolo 深圳
深セン
今すぐ参加

ExecuTorch統合を使用してUltralytics YOLO モデルを展開する

Ultralytics YOLO11 ようなUltralytics YOLO モデルをExecuTorch形式にエクスポートして、エッジデバイスやモバイルデバイスにPyTorch効率的に展開する方法を紹介します。

自動品質検査、自律型ドローン、スマートセキュリティシステムなど、特定のコンピュータビジョンアプリケーションでは、Ultralytics YOLO モデルが最適に機能します。 Ultralytics YOLO11のようなUltralytics YOLOモデルが、画像をキャプチャするセンサーの近くで実行される場合に、最高のパフォーマンスを発揮します。言い換えれば、これらのモデルは、データをクラウドに送信するのではなく、カメラ、ドローン、組み込みシステムなど、データが生成された場所で直接処理する必要があります。 

エッジAIとして知られるこのアプローチは、データが取り込まれたデバイス上でモデルが直接推論を実行することを可能にする。リモートのサーバーに依存する代わりにローカルで情報を処理することで、システムは、インターネット接続が制限されている、または接続されていない環境であっても、より低いレイテンシー、より強化されたデータプライバシー、より高い信頼性を達成することができる。

例えば、毎分数千個の製品を検査する製造カメラや、複雑な環境を航行するドローンには、クラウド処理に伴う遅延は許されません。YOLO11 デバイス上で直接実行すれば、デバイス上で即座に推論を行うことができる。

エッジ上でのUltralytics YOLO モデルの実行をより簡単かつ効率的にするために、Ultralytics サポートする新しいExecuTorch統合は、モバイルや組み込みデバイスに直接モデルをエクスポートして展開する合理的な方法を提供します。ExecuTorchはPyTorch Edgeエコシステムの一部であり、電話、ウェアラブル、組み込みボード、マイクロコントローラーなどのモバイルやエッジハードウェア上でAIモデルを直接実行するためのエンドツーエンドのソリューションを提供します。

この統合により、YOLO11ようなUltralytics YOLO モデルをトレーニングからエッジデバイスへの展開まで簡単に行うことができます。YOLO11ビジョン機能とExecuTorchの軽量ランタイムおよびPyTorch エクスポートパイプラインを組み合わせることで、ユーザーは、PyTorch推論の精度と性能を維持しながら、エッジハードウェア上で効率的に動作するモデルを展開することができます。

この記事では、ExecuTorchの統合がどのように機能するのか、なぜエッジAIアプリケーションに最適なのか、そしてどのようにExecuTorchでUltralytics YOLO モデルの展開を開始できるのかを詳しく見ていきます。さっそく始めましょう!

ExecuTorchとは?

通常、PyTorchモデルを学習する場合、クラウド上の強力なサーバーやGPU(Graphics Processing Unit)で実行します。しかし、同じモデルをスマートフォン、ドローン、マイクロコントローラーなどのモバイルデバイスや組み込みデバイスにデプロイするには、限られたコンピューティングパワー、メモリー、接続性を処理できる特別なソリューションが必要です。

それこそがExecuTorchがもたらすものです。ExecuTorchは、PyTorch Edgeエコシステムの一部として開発されたエンドツーエンドのソリューションで、モバイル、組み込み、エッジの各プラットフォームで効率的なオンデバイス推論を可能にします。PyTorch機能をクラウドを超えて拡張し、AIモデルをローカルデバイス上で直接実行できるようにします。

PyTorch 推論をエッジに持ち込む

その中核として、ExecuTorchは軽量なC++ランタイムを提供し、PyTorch モデルをデバイス上で直接実行できるようにします。ExecuTorchは、PyTorch ExecuTorch (.pte)モデルフォーマットを使用します。これは、より高速なロード、より小さなメモリフットプリント、移植性の向上のために設計された最適化されたエクスポートです。 

効率的なCPUCentral Processing UnitCPU推論のためのデフォルトバックエンドとしてXNNPACKをサポートし、Core ML、Metal、Vulkan、Qualcomm、MediaTek、Arm EthosU、OpenVINO、幅広いハードウェアバックエンドとの互換性を拡張している。 

これらのバックエンドは、モバイル、組み込み、特殊なエッジデバイスでの最適化されたアクセラレーションを可能にします。また、ExecuTorchはPyTorch エクスポートパイプラインと統合され、量子化や動的なシェイプ処理などの高度な機能のサポートを提供し、さまざまな展開環境でのパフォーマンスと適応性を向上させます。

量子化は、高精度値(32ビット浮動小数点数など)を低精度値に変換することで、モデルサイズを縮小し、推論速度を向上させる。一方、動的形状処理は、モデルが可変入力サイズを効率的に処理できるようにするために使用される。この2つの機能は、リソースの限られたエッジデバイス上でAIモデルを実行する上で非常に重要です。

図1.ExecuTorchの仕組み(出典)

エッジハードウェアの統一レイヤー

ランタイムだけでなく、ExecuTorchは複数のハードウェアバックエンドに対する統一された抽象化レイヤーとしても機能する。簡単に言えば、ハードウェア固有の詳細を抽象化し、モデルがCPU、GPU、NPU(Neural Processing Unit)を含む異なる処理ユニットとどのように相互作用するかを管理する。

一旦モデルがエクスポートされると、ExecuTorchは与えられたデバイスに最適なバックエンドをターゲットとするように設定することができます。開発者は、デバイス固有のカスタムコードを書いたり、個別の変換ワークフローを維持したりすることなく、多様なハードウェアに効率的にモデルを展開することができます。

モジュール式でポータブルな設計とシームレスなPyTorch 統合により、ExecuTorchはUltralytics YOLO11 ようなコンピュータビジョンモデルをモバイルや組み込みシステムに展開するための優れた選択肢となります。モデルのトレーニングから実世界への展開までのギャップを埋め、エッジAIをより速く、より効率的に、より簡単に実装することができます。

ExecuTorchの主な特徴

Ultralytics YOLO モデルをExecuTorch形式にエクスポートする方法を見る前に、ExecuTorchがエッジでAIを展開するための信頼できる選択肢である理由を探ってみよう。

ここでは、その主な機能の一部を紹介しよう:

  • 量子化のサポート:ExecuTorchはモデルの量子化をサポートしています。これは、高精度の値を低精度の値に変換してモデルのサイズを小さくし、推論を高速化するテクニックです。これにより、ほぼ同じ精度を維持しながら、エッジ・デバイス上でモデルをより高速に実行し、より少ないメモリを使用することができます。
  • メモリの効率的な使用: ExecuTorchの最大の利点の1つは、メモリの扱い方です。ExecuTorchは、レイテンシや電力オーバーヘッドを引き起こす可能性のある動的なメモリ割り当てに依存する代わりに、Ahead-of-Time (AOT)メモリ計画を使用します。エクスポート中にモデル・グラフを解析し、各処理に必要なメモリ量を事前に計算します。これにより、ランタイムは静的なメモリ計画を使用してモデルを実行し、予測可能なパフォーマンスを保証し、RAMや処理能力に制限のあるデバイスでの速度低下やクラッシュを防ぎます。
  • 内蔵モデルのメタデータ:Ultralyticsサポートする統合を使用してエクスポートする場合、各モデルには、入力画像サイズ、クラス名、設定パラメータなどの重要なメタデータを含むYAMLファイルが含まれます。この追加ファイルは、様々なアプリケーションへのモデルの統合を簡素化し、異なるエッジプラットフォーム間で一貫した動作を保証します。

Ultralytics YOLO モデルを ExecuTorch 形式にエクスポートする方法

さて、ExecuTorch が提供するものをよりよく理解したところで、Ultralytics YOLO モデルを ExecuTorch フォーマットにエクスポートする方法を説明しましょう。

ステップ1:Ultralytics Python パッケージをインストールする

始めるには、パッケージインストーラであるpipを使ってUltralytics Python パッケージをインストールする必要があります。ターミナルまたはコマンドプロンプトで "pip installultralytics"を実行することでインストールできます。 

Jupyter NotebookやGoogle Colab環境で作業している場合は、コマンドの前に「!pip installultralytics」のように感嘆符を付けるだけでよい。インストールされると、Ultralytics パッケージは、Ultralytics YOLO11含む、コンピュータビジョンモデルのトレーニング、テスト、エクスポートに必要なすべてのツールを提供します。

インストール中やモデルのエクスポート中に何らかの問題が発生した場合、Ultralytics 公式ドキュメントと「よくある問題」ガイドに詳細なトラブルシューティング手順とベストプラクティスが記載されていますので、スムーズな立ち上げと運用にお役立てください。

ステップ2:Ultralytics YOLO11エクスポート

Ultralytics パッケージをインストールした後、YOLO11 モデルの変種をロードし、ExecuTorchフォーマットにエクスポートすることができます。例えば、"yolo11n.pt "のような事前に訓練されたモデルを使用し、"executorch "フォーマットに設定したexport関数を呼び出してエクスポートすることができます。 

これには、最適化されたモデルファイル (.pte) と、画像サイズやクラス名などの重要な詳細を含む別のメタデータ YAML ファイルが含まれます。

以下はモデルをエクスポートするコードです:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

model.export(format="executorch")

ステップ3: モデルのエクスポート後の推論の実行

一度エクスポートされたモデルは、ExecuTorch ランタイムを使用して、エッジデバイスやモバイルデバイスにデプロイできます。エクスポートされた .pte モデルファイルは、アプリケーションにロードすることができ、クラウド接続を必要とせずに、リアルタイムでデバイス上で推論を実行することができます。

例えば、以下のコード・スニペットは、エクスポートされたモデルをロードして推論を実行する方法を示しています。推論とは、単純に新しいデータに対して予測を行うために学習済みモデルを使用することを意味します。ここでは、公開URLから取得したバスの画像でモデルをテストしています。

executorch_model =YOLO("yolo11n_executorch_model")

results = executorch_model.predict(ultralytics, save=True)

コードを実行すると、検出されたオブジェクトを含む出力画像が "detect/detect/predict "フォルダに保存されます。 

図2.ExecuTorch形式でエクスポートされたYOLO11 モデルを使ったオブジェクトの検出。

ExecuTorch インテグレーションを使用する利点

Ultralyticsサポートするさまざまなエクスポートオプションを調べているうちに、ExecuTorchとの統合の何がユニークなのか不思議に思うかもしれません。重要な違いは、パフォーマンス、シンプルさ、柔軟性をいかにうまく組み合わせ、強力なAIモデルをモバイルデバイスやエッジデバイスに直接簡単に展開できるかという点です。

ここでは、ExecuTorch の統合を使用する主な利点のいくつかを紹介します:

  • 柔軟な展開オプション:ExecuTorchモデルは、モバイルアプリケーション、組み込みシステム、IoT(モノのインターネット)デバイス、および特殊なエッジAIハードウェアに展開できます。この柔軟性により、開発者は多様なプラットフォームや環境で一貫して動作するスケーラブルなAIソリューションを構築できます。
  • ベンチマークで実証された性能:Raspberry Pi 5のようなデバイスでのテストによると、ExecuTorch形式にエクスポートされたYOLO11 モデルは、ほぼ同じ精度で、PyTorch 同等モデルよりもおよそ2倍速く動作する。
  • 柔軟な統合API:ExecuTorchはiOS、Android、組み込みLinux向けにC++、Kotlin、Objective-CのAPIを提供しており、開発者はYOLO モデルをネイティブアプリに直接統合できます。
  • ハードウェア・アクセラレーションのサポート:ExecuTorchは、モバイルGPU用のVulkanやMetalを含む複数のハードウェア・アクセラレーション・バックエンドをサポートしており、オプションでOpenCLや他のベンダー固有のAPIも統合できます。また、NPUやDSPなどの専用アクセラレータを活用することで、CPU推論に比べて大幅なスピードアップを実現します。

YOLO11 ExecuTorchエクスポートの実際のアプリケーション

最近、Ultralytics PyTorch ExecuTorchのサクセスストーリーとして認定され、オンデバイス推論の早期サポートとPyTorch エコシステムへの継続的な貢献が強調されました。この認定は、高性能AIをモバイルやエッジプラットフォームでより利用しやすくするという共通の目標を反映したものです。

クラウドからエッジへ:ExecuTorchとYOLO11 Vision AIを実現する方法

これは、スマートフォンから組み込みシステムまで、あらゆるシステム上で効率的に動作する現実のVision AIソリューションのように見える。例えば製造業では、エッジデバイスが生産ラインの監視や欠陥のリアルタイム検出において重要な役割を果たしている。

図3.YOLO11 使った製造組立ラインの解析例。(出典)

画像やセンサーデータをクラウドに送って処理する代わりに、ExecuTorchとの統合により、YOLO11 モデルをローカルハードウェア上で直接実行することができます。これは、工場が限られたコンピュート・リソースで操業しながら、品質問題を即座にdetect し、ダウンタイムを減らし、データ・プライバシーを維持できることを意味します。

ExecuTorchの統合とUltralytics YOLO モデルがどのように適用できるか、他の例をいくつか挙げてみましょう:

  • スマートシティ ExecuTorchを使用してYOLO11 モデルをローカルで実行することにより、都市は、交通渋滞の検出から危険の特定まで、データ駆動型の意思決定を迅速に行い、全体的なモビリティと安全性を向上させることができます。
  • 小売業と倉庫業 デバイス上での推論により、小売業者はクラウド接続に依存することなく、棚の監視、在庫のtrack 、荷物の検査を迅速かつ安全に自動化できます。
  • ロボット工学とドローン: エッジに最適化されたYOLO11 モデルにより、ロボットやドローンは、インターネットアクセスがなくても、物体を認識し、環境をナビゲートし、リアルタイムの意思決定を行うことができる。

図4.YOLO11 使った渋滞中の車の検出とカウント(出典: YOLO11

主なポイント

Ultralytics YOLO モデルをExecuTorch形式にエクスポートすることで、スマートフォン、タブレット、Raspberry Piのような組み込みシステムなど、多くのデバイスにコンピュータビジョンモデルを簡単に展開できます。これは、クラウド接続に依存することなく、最適化されたオンデバイス推論を実行し、スピード、プライバシー、信頼性を向上させることが可能であることを意味します。

Ultralytics 、ExecuTorchとともに、TensorRT、OpenVINO、CoreML幅広い統合をサポートしており、開発者はプラットフォーム間で柔軟にモデルを実行できます。Vision AIの採用が拡大するにつれ、これらの統合は、実世界の状況で効率的に動作するように構築されたインテリジェントシステムの展開を簡素化します。

AIに興味がありますか?当社のGitHubリポジトリをチェックし、当社のコミュニティに参加し、Vision AIプロジェクトを開始するためのライセンスオプションを検討してください。小売業におけるAIや 物流におけるコンピュータ・ビジョンのようなイノベーションについては、ソリューションのページをご覧ください。

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

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

無料ではじめる