コンテンツにスキップ

ExecuTorchでYOLO26をモバイル&エッジにデプロイ

スマートフォン、タブレット、組み込みシステムなどのエッジデバイスにコンピュータービジョンモデルをデプロイするには、パフォーマンスとリソース制約のバランスを取る最適化されたランタイムが必要です。PyTorchのエッジコンピューティングソリューションであるExecuTorchは、Ultralytics YOLOモデルの効率的なオンデバイス推論を可能にします。

このガイドでは、Ultralytics YOLOモデルをExecuTorch形式にエクスポートする方法を概説し、最適化されたパフォーマンスでモバイルおよびエッジデバイスにモデルをデプロイできるようにします。

なぜExecuTorchにエクスポートするのか?

PyTorch モバイル推論フレームワーク

ExecuTorchは、モバイルおよびエッジデバイス全体でオンデバイス推論機能を有効にするためのPyTorchのエンドツーエンドソリューションです。移植性と効率性を目標に構築されたExecuTorchは、さまざまなコンピューティングプラットフォームでPyTorchプログラムを実行するために使用できます。

ExecuTorchの主要機能

ExecuTorchは、Ultralytics YOLOモデルをエッジデバイスにデプロイするためのいくつかの強力な機能を提供します。

  • ポータブルモデル形式: ExecuTorchは .pte (PyTorch ExecuTorch)形式を使用しており、リソースが限られたデバイスでのサイズと読み込み速度が最適化されています。

  • XNNPACKバックエンド: XNNPACKとのデフォルト統合により、モバイルCPU上で高度に最適化された推論が提供され、特殊なハードウェアを必要とせずに優れたパフォーマンスを発揮します。

  • 量子化サポート: モデルサイズを削減し、推論速度を向上させつつ精度を維持するための量子化技術の組み込みサポート。

  • メモリ効率: 最適化されたメモリ管理によりランタイムメモリフットプリントが削減され、RAMが限られたデバイスに適しています。

  • モデルメタデータ: エクスポートされたモデルには、統合しやすいようにメタデータ(画像サイズ、クラス名など)が個別のyamlファイルに含まれています。

ExecuTorchによるデプロイオプション

ExecuTorchモデルは、様々なエッジおよびモバイルプラットフォームにデプロイできます。

  • モバイルアプリケーション: iOSおよびAndroidアプリケーションにネイティブパフォーマンスでデプロイし、モバイルアプリでのリアルタイムなオブジェクト detect を可能にします。

  • 組み込みシステム: Raspberry Pi、NVIDIA Jetson、その他のARMベースのシステムなどの組み込みLinuxデバイスで、最適化されたパフォーマンスで実行します。

  • エッジAIデバイス: 推論を高速化するために、カスタムデリゲートを備えた特殊なエッジAIハードウェアにデプロイします。

  • IoTデバイス: クラウド接続要件なしでデバイス上での推論のためにIoTデバイスに統合します。

Ultralytics YOLO26モデルをExecuTorchにエクスポートする

Ultralytics YOLO26モデルをExecuTorch形式に変換することで、モバイルおよびエッジデバイスへの効率的なデプロイが可能になります。

インストール

ExecuTorchのエクスポートには、Python 3.10以降と特定の依存関係が必要です。

インストール

# Install Ultralytics package
pip install ultralytics

インストールプロセスに関する詳細な手順とベストプラクティスについては、当社のYOLO26インストールガイドを確認してください。YOLO26に必要なパッケージをインストールする際に何らかの問題に遭遇した場合は、解決策とヒントについては、当社の一般的な問題ガイドを参照してください。

使用法

YOLO26モデルをExecuTorchにエクスポートするのは簡単です。

使用法

from ultralytics import YOLO

# Load the YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to ExecuTorch format
model.export(format="executorch")  # creates 'yolo26n_executorch_model' directory

executorch_model = YOLO("yolo26n_executorch_model")

results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")
# Export a YOLO26n PyTorch model to ExecuTorch format
yolo export model=yolo26n.pt format=executorch # creates 'yolo26n_executorch_model' directory

# Run inference with the exported model
yolo predict model=yolo26n_executorch_model source=https://ultralytics.com/images/bus.jpg

ExecuTorchエクスポートは、を含むディレクトリを生成します。 .pte ファイルとメタデータ。モバイルまたは組み込みアプリケーションでExecuTorchランタイムを使用し、をロードして .pte モデルをロードし、推論を実行します。

エクスポート引数

ExecuTorch形式にエクスポートする際、以下の引数を指定できます。

引数種類デフォルト説明
imgszint または list640モデル入力の画像サイズ(高さ、幅)
devicestr'cpu'エクスポートに使用するデバイス('cpu')

出力構造

ExecuTorchのエクスポートにより、モデルとメタデータを含むディレクトリが作成されます。

yolo26n_executorch_model/
├── yolo26n.pte              # ExecuTorch model file
└── metadata.yaml            # Model metadata (classes, image size, etc.)

エクスポートされたExecuTorchモデルの使用

モデルをエクスポートした後、ExecuTorchランタイムを使用してターゲットアプリケーションに統合する必要があります。

モバイル統合

モバイルアプリケーション(iOS/Android)の場合、以下を行う必要があります。

  1. ExecuTorchランタイムの追加: ExecuTorchランタイムライブラリをモバイルプロジェクトに含めます
  2. モデルのロード.pte アプリケーションでファイルをロードします
  3. 推論の実行: 画像を処理し、予測を取得します

iOS統合の例(Objective-C/C++):

// iOS uses C++ APIs for model loading and inference
// See https://pytorch.org/executorch/stable/using-executorch-ios.html for complete examples

#include <executorch/extension/module/module.h>

using namespace ::executorch::extension;

// Load the model
Module module("/path/to/yolo26n.pte");

// Create input tensor
float input[1 * 3 * 640 * 640];
auto tensor = from_blob(input, {1, 3, 640, 640});

// Run inference
const auto result = module.forward(tensor);

Android統合の例(Kotlin):

import org.pytorch.executorch.EValue
import org.pytorch.executorch.Module
import org.pytorch.executorch.Tensor

// Load the model
val module = Module.load("/path/to/yolo26n.pte")

// Prepare input tensor
val inputTensor = Tensor.fromBlob(floatData, longArrayOf(1, 3, 640, 640))
val inputEValue = EValue.from(inputTensor)

// Run inference
val outputs = module.forward(inputEValue)
val scores = outputs[0].toTensor().dataAsFloatArray

組み込みLinux

組み込みLinuxシステムの場合、ExecuTorch C++ APIを使用します。

#include <executorch/extension/module/module.h>

// Load model
auto module = torch::executor::Module("yolo26n.pte");

// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = torch::executor::Tensor(input_data, {1, 3, 640, 640});

// Run inference
auto outputs = module.forward({input_tensor});

アプリケーションへのExecuTorchの統合に関する詳細については、ExecuTorchドキュメントを参照してください。

パフォーマンスの最適化

モデルサイズの最適化

デプロイ向けにモデルサイズを削減するには:

  • より小さなモデルを使用する: 最小のフットプリントにはYOLO26n (nano) から始めます。
  • 入力解像度の低減:より小さな画像サイズを使用する(例: imgsz=320 または imgsz=416)
  • 量子化:量子化技術を適用する(将来のExecuTorchバージョンでサポート予定)

推論速度の最適化

より高速な推論のために:

  • XNNPACKバックエンド: デフォルトのXNNPACKバックエンドは、最適化されたCPU推論を提供します
  • ハードウェアアクセラレーション: プラットフォーム固有のデリゲート (例: iOS向けCoreML) を使用します
  • バッチ処理:可能な場合は複数の画像をまとめて処理します

ベンチマーク

Ultralyticsチームは、YOLO26モデルのベンチマークを行い、PyTorchとExecuTorch間の速度と精度を比較しました。

パフォーマンス

モデル形式ステータスサイズ(MB)metrics/mAP50-95(B)推論時間 (ms/im)
YOLO11nPyTorch5.40.5060337.67
YOLO11nExecuTorch110.5080167.28
YOLO11sPyTorch190.5770928.80
YOLO11sExecuTorch370.5780388.31

推論時間には、プリ/ポスト処理は含まれていません。

トラブルシューティング

よくある問題

問題: Python version error

解決策: ExecuTorchにはpython 3.10以上が必要です。pythonのインストールをアップグレードしてください:

# Using conda
conda create -n executorch python=3.10
conda activate executorch

問題: Export fails during first run

解決策:ExecuTorchは初回使用時にコンポーネントをダウンロードおよびコンパイルする必要がある場合があります。以下を確認してください:

pip install --upgrade executorch

問題: Import errors for ExecuTorch modules

解決策: ExecuTorchが正しくインストールされていることを確認してください:

pip install executorch --force-reinstall

さらなるトラブルシューティングのヘルプについては、Ultralytics GitHub IssuesまたはExecuTorchドキュメントをご覧ください。

概要

YOLO26モデルをExecuTorch形式にエクスポートすることで、モバイルおよびエッジデバイスへの効率的なデプロイが可能になります。PyTorchネイティブの統合、クロスプラットフォームサポート、最適化されたパフォーマンスにより、ExecuTorchはエッジAIアプリケーションにとって優れた選択肢です。

主なポイント:

  • ExecuTorchは、優れたパフォーマンスでPyTorchネイティブなエッジデプロイを提供します。
  • エクスポートは簡単です format='executorch' パラメータ
  • モデルはXNNPACKバックエンドを介してモバイルCPU向けに最適化されています
  • iOS、Android、および組み込みLinuxプラットフォームをサポートします。
  • python 3.10以上とFlatBuffersコンパイラが必要です。

よくある質問

YOLO26モデルをExecuTorch形式にエクスポートするにはどうすればよいですか?

pythonまたはCLIを使用してYOLO26モデルをExecuTorchにエクスポートします。

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="executorch")

または

yolo export model=yolo26n.pt format=executorch

ExecuTorchエクスポートのシステム要件は何ですか?

ExecuTorchのエクスポートには以下が必要です:

  • Python 3.10以降
  • executorch パッケージ (インストール方法: pip install executorch)
  • PyTorch (Ultralyticsとともに自動的にインストールされます)

注記: 初回のエクスポート時に、ExecuTorchはFlatBuffersコンパイラを含む必要なコンポーネントを自動的にダウンロードしてコンパイルします。

ExecuTorchモデルで直接pythonで推論を実行できますか?

ExecuTorchモデル (.pte ファイルはExecuTorchランタイムを使用してモバイルおよびエッジデバイスにデプロイするために設計されており、直接ロードすることはできません。 YOLO() Pythonで推論を行うことはできません。ExecuTorchランタイムライブラリを使用して、ターゲットアプリケーションに統合する必要があります。

ExecuTorchはどのプラットフォームをサポートしていますか?

ExecuTorchがサポートするもの:

  • モバイル: iOSおよびAndroid
  • 組み込みLinux: Raspberry Pi、NVIDIA Jetson、その他のARMデバイス
  • デスクトップ: Linux、macOS、およびWindows(開発用)

モバイルデプロイメントにおいて、ExecuTorchはTFLiteとどのように比較されますか?

ExecuTorchとTFLiteはどちらもモバイルデプロイメントに優れています。

  • ExecuTorch: より優れたPyTorch統合、ネイティブなPyTorchワークフロー、成長するエコシステム
  • TFLite:より成熟しており、より広範なハードウェアをサポートし、より多くのデプロイメント例があります。

PyTorchをすでに使用しており、ネイティブなデプロイメントパスを求める場合はExecuTorchを選択してください。最大限の互換性と成熟したツールを求める場合はTFLiteを選択してください。

ExecuTorchモデルをGPUアクセラレーションで使用できますか?

はい!ExecuTorchは、さまざまなバックエンドを介したハードウェアアクセラレーションをサポートしています。

  • モバイルGPU: Vulkan、Metal、またはOpenCLデリゲートを介して
  • NPU/DSP: プラットフォーム固有のデリゲートを介して
  • デフォルト: 最適化されたCPU推論のためのXNNPACK

バックエンド固有のセットアップについては、ExecuTorchドキュメントを参照してください。



📅 3ヶ月前に作成✏️ 2日前に更新
glenn-jocherLaughing-qlakshanthadambitious-octopus

コメント