Link to this sectionExecuTorchを使用してYOLO26をモバイルおよびエッジ環境へデプロイする#
スマートフォン、タブレット、組み込みシステムなどのエッジデバイスでコンピュータビジョンモデルをデプロイするには、パフォーマンスとリソースの制約のバランスを取る最適化されたランタイムが必要です。PyTorchのエッジコンピューティング向けソリューションであるExecuTorchは、Ultralytics YOLOモデルの効率的なオンデバイス推論を可能にします。
本ガイドでは、Ultralytics YOLOモデルをExecuTorch形式にエクスポートし、最適化されたパフォーマンスでモバイルやエッジデバイスにモデルをデプロイする方法を解説します。
Link to this sectionなぜExecuTorchにエクスポートするのですか?#
ExecuTorchは、モバイルおよびエッジデバイス全体でオンデバイス推論機能を実現するための、PyTorchの包括的なソリューションです。ポータブルかつ効率的であることを目標に構築されており、幅広いコンピューティングプラットフォーム上でPyTorchプログラムを実行するために使用できます。
Link to this sectionExecuTorchの主な特徴#
ExecuTorchは、エッジデバイス上でUltralytics YOLOモデルをデプロイするための強力な機能をいくつか提供します。
-
ポータブルなモデル形式: ExecuTorchは、リソース制約のあるデバイス上でのサイズと読み込み速度に最適化された
.pte(PyTorch ExecuTorch) 形式を使用します。 -
XNNPACKバックエンド: XNNPACKとの標準統合により、モバイルCPU上で高度に最適化された推論を提供し、専用ハードウェアを必要とせずに優れたパフォーマンスを発揮します。
-
量子化対応: ExecuTorchエコシステムは、モデルサイズを縮小し推論速度を向上させるための量子化技術をサポートしています。Ultralyticsは現在、XNNPACKバックエンドを介してFP32モデルをエクスポートします。
-
メモリ効率: 最適化されたメモリ管理によりランタイムのメモリフットプリントが削減され、RAMが限られたデバイスに適しています。
-
モデルメタデータ: エクスポートされたモデルには、容易に統合できるように、別個のYAMLファイルとしてメタデータ(画像サイズ、クラス名など)が含まれています。
Link to this sectionExecuTorchによるデプロイオプション#
ExecuTorchモデルは、さまざまなエッジおよびモバイルプラットフォーム全体でデプロイ可能です。
-
モバイルアプリケーション: iOSおよびAndroidアプリケーションにネイティブパフォーマンスでデプロイし、モバイルアプリでのリアルタイムオブジェクト検出を可能にします。
-
組み込みシステム: Raspberry Pi、NVIDIA Jetsonなどの組み込みLinuxデバイスや、その他のARMベースのシステムで、最適化されたパフォーマンスで実行します。
-
エッジAIデバイス: 加速推論のためのカスタムデリゲートを使用して、特化したエッジAIハードウェアにデプロイします。
-
IoTデバイス: クラウド接続の要件なしで、IoTデバイスに統合してオンデバイス推論を実行します。
Link to this sectionUltralytics YOLO26モデルをExecuTorchにエクスポートする#
Ultralytics YOLO26モデルをExecuTorch形式に変換することで、モバイルおよびエッジデバイスでの効率的なデプロイが可能になります。
Link to this sectionインストール#
ExecuTorchのエクスポートには、Python 3.10-3.13、PyTorch >= 2.9.0、およびexecutorchパッケージが必要です。
# Install Ultralytics package
pip install ultralyticsインストールプロセスに関する詳細な手順とベストプラクティスについては、当社のYOLO26インストールガイドをご確認ください。YOLO26に必要なパッケージをインストールする際に問題が発生した場合は、当社のよくある問題ガイドで解決策やヒントを参照してください。
Link to this section使用方法#
YOLO26モデルのExecuTorchへのエクスポートは簡単です。
ExecuTorch形式は、Export、Predict、およびValidateモードをサポートしています。モデルをエクスポートした後、そのモデルを読み込んで推論を実行するか、精度を検証します。
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ExecuTorch format
model.export(format="executorch") # creates 'yolo26n_executorch_model'from ultralytics import YOLO
# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")ExecuTorchのエクスポートでは、.pteファイルとメタデータを含むディレクトリが生成されます。モバイルや組み込みアプリケーションでExecuTorchランタイムを使用して、.pteモデルを読み込み、推論を実行してください。
Link to this sectionエクスポートの引数#
ExecuTorch形式にエクスポートする際、以下の引数を指定できます。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
format | str | 'executorch' | エクスポートするモデルのターゲット形式。さまざまなデプロイ環境との互換性を定義します。 |
imgsz | intまたはtuple | 640 | モデル入力用の希望する画像サイズ。正方形画像の場合は整数、特定の寸法の場合はタプル(height, width)を指定できます。 |
batch | int | 1 | エクスポートされたモデルのバッチ推論サイズ、あるいはpredictモードで同時に処理する画像の最大数を指定します。 |
device | str | None | エクスポート用のデバイスを指定します。GPU (device=0)、CPU (device=cpu)、Appleシリコン用MPS (device=mps)など。 |
Link to this section出力構造#
ExecuTorchエクスポートにより、モデルとメタデータを含むディレクトリが作成されます。
yolo26n_executorch_model/
├── model.pte # ExecuTorch model file
└── metadata.yaml # Model metadata (classes, image size, etc.)Link to this sectionエクスポートされたExecuTorchモデルの使用#
モデルをエクスポートした後、ExecuTorchランタイムを使用してターゲットアプリケーションに統合する必要があります。
Link to this sectionモバイル統合#
モバイルアプリケーション(iOS/Android)の場合、以下の手順が必要です。
- ExecuTorchランタイムの追加: モバイルプロジェクトにExecuTorchランタイムライブラリを含める
- モデルの読み込み: アプリケーションで
.pteファイルを読み込む - 推論の実行: 画像を処理し、予測を取得する
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/model.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/model.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().dataAsFloatArrayLink to this section組み込みLinux#
組み込みLinuxシステムの場合は、ExecuTorch C++ APIを使用します。
#include <executorch/extension/module/module.h>
#include <executorch/extension/tensor/tensor.h>
using namespace ::executorch::extension;
// Load model
Module module("model.pte");
// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = from_blob(input_data.data(), {1, 3, 640, 640});
// Run inference
const auto outputs = module.forward(input_tensor);ExecuTorchをアプリケーションに統合する方法の詳細については、ExecuTorchドキュメントをご覧ください。
Link to this sectionパフォーマンスの最適化#
Link to this sectionモデルサイズの最適化#
デプロイに向けてモデルサイズを縮小するには:
- より小さなモデルを使用する: フットプリントが最小のYOLO26n (nano) から始める
- 入力解像度を下げる: 小さな画像サイズを使用する(例:
imgsz=320またはimgsz=416) - 量子化: 量子化技術を適用する(将来のExecuTorchバージョンでサポート予定)
Link to this section推論速度の最適化#
推論を高速化するには:
- XNNPACKバックエンド: デフォルトのXNNPACKバックエンドが最適化されたCPU推論を提供
- ハードウェアアクセラレーション: プラットフォーム固有のデリゲートを使用する(例: iOSの場合はCoreML)
- バッチ処理: 可能であれば複数の画像をまとめて処理する
Link to this sectionベンチマーク#
UltralyticsチームはYOLO26モデルのベンチマークを行い、PyTorchとExecuTorch間の速度と精度を比較しました。
| モデル | 形式 | ステータス | サイズ (MB) | metrics/mAP50-95(B) | 推論時間 (ms/im) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4790 | 314.80 |
| YOLO26n | ExecuTorch | ✅ | 9.4 | 0.4800 | 142 |
| YOLO26s | PyTorch | ✅ | 19.5 | 0.5730 | 930.90 |
| YOLO26s | ExecuTorch | ✅ | 36.5 | 0.5780 | 376.1 |
推論時間には前処理・後処理は含まれていません。
Link to this sectionトラブルシューティング#
Link to this section一般的な問題#
問題: 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ドキュメントをご覧ください。
Link to this section要約#
YOLO26モデルをExecuTorch形式にエクスポートすることで、モバイルおよびエッジデバイスでの効率的なデプロイが可能になります。PyTorchネイティブの統合、クロスプラットフォームサポート、そして最適化されたパフォーマンスを備えたExecuTorchは、エッジAIアプリケーションにとって優れた選択肢です。
重要なポイント:
- ExecuTorchは、優れたパフォーマンスを備えたPyTorchネイティブのエッジデプロイメントを提供します
format='executorch'パラメータを使用して簡単にエクスポート可能- XNNPACKバックエンドを介してモバイルCPU用にモデルを最適化
- iOS、Android、および組み込みLinuxプラットフォームをサポート
- Python 3.10-3.13 および PyTorch >= 2.9.0 が必要
Link to this sectionよくある質問 (FAQ)#
Link to this sectionYOLO26モデルをExecuTorch形式にエクスポートするにはどうすればよいですか?#
PythonまたはCLIを使用して、YOLO26モデルをExecuTorchにエクスポートします:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="executorch")または
yolo export model=yolo26n.pt format=executorchLink to this sectionExecuTorchエクスポートのシステム要件は何ですか?#
ExecuTorchエクスポートには以下が必要です:
- Python 3.10 以上
executorchパッケージ (pip install executorchでインストール)- PyTorch (ultralyticsと共に自動的にインストールされます)
注意: executorchパッケージにはプリビルドのホイール(XNNPACKバックエンド付き)が含まれているため、エクスポート中に特別なコンパイル手順は不要です。
Link to this sectionExecuTorchモデルを使用してPythonで直接推論を実行できますか?#
ExecuTorchモデルは、PythonでYOLO()を使用して推論および検証のために直接読み込むことができ(上記のPredict/Validate例を参照)、またExecuTorchランタイムライブラリを使用してモバイルおよびエッジデバイス上でデプロイすることも可能です。
Link to this sectionExecuTorchはどのプラットフォームをサポートしていますか?#
ExecuTorchのサポート対象:
- Mobile: iOSおよびAndroid
- Embedded Linux: Raspberry Pi、NVIDIA Jetson、およびその他のARMデバイス
- Desktop: Linux、macOS、およびWindows(開発用)
Link to this sectionモバイルデプロイメントにおいて、ExecuTorchとTFLiteはどのように異なりますか?#
ExecuTorchとTFLiteは、どちらもモバイルデプロイメントに優れています。
- ExecuTorch: より優れたPyTorch統合、ネイティブなPyTorchワークフロー、成長するエコシステム
- TFLite: より成熟しており、幅広いハードウェアサポートと豊富なデプロイメント事例がある
すでにPyTorchを使用しており、ネイティブなデプロイメントパスが必要な場合はExecuTorchを選択してください。最大限の互換性と成熟したツールが必要な場合はTFLiteを選択してください。
Link to this sectionExecuTorchモデルでGPUアクセラレーションを使用できますか?#
はい。ExecuTorchは、さまざまなバックエンドを介してハードウェアアクセラレーションをサポートしています。
- Mobile GPU: Vulkan、Metal、またはOpenCLデリゲート経由
- NPU/DSP: プラットフォーム固有のデリゲート経由
- Default: 最適化されたCPU推論のためのXNNPACK
バックエンド固有のセットアップについては、ExecuTorch Documentationを参照してください。