YOLO26'yı ExecuTorch ile Mobil ve Edge Cihazlarda Dağıtma#
Akıllı telefonlar, tabletler ve gömülü sistemler gibi edge cihazlarda bilgisayarlı görü modellerini dağıtmak, performansı kaynak kısıtlamalarıyla dengeleyen optimize edilmiş bir çalışma zamanı gerektirir. PyTorch'un edge bilişim çözümü ExecuTorch, Ultralytics YOLO modelleri için cihaz üzerinde verimli çıkarım yapılmasını sağlar.
Bu kılavuzda Ultralytics YOLO modellerinin ExecuTorch formatına nasıl aktarılacağı ve modellerinin optimize edilmiş performansla mobil ve edge cihazlarda nasıl dağıtılacağı açıklanmaktadır.
Neden ExecuTorch'a aktarım yapılmalı?#
ExecuTorch, mobil ve edge cihazlarda cihaz üzerinde çıkarım özelliklerini etkinleştirmeye yönelik PyTorch'un uçtan uca çözümüdür. Taşınabilir ve verimli olma hedefiyle geliştirilen ExecuTorch, PyTorch programlarını çok çeşitli bilgi işlem platformlarında çalıştırmak için kullanılabilir.
ExecuTorch'un temel özellikleri#
ExecuTorch, Ultralytics YOLO modellerini edge cihazlarda dağıtmak için çeşitli güçlü özellikler sunar:
-
Taşınabilir Model Formatı: ExecuTorch, kaynakları kısıtlı cihazlarda boyut ve yükleme hızı açısından optimize edilmiş
.pte(PyTorch ExecuTorch) formatını kullanır. -
XNNPACK Arka Ucu: XNNPACK ile varsayılan entegrasyon, mobil CPU'larda son derece optimize edilmiş çıkarım sunarak özel donanım gerektirmeden mükemmel performans sağlar.
-
Niceleştirmeye Hazır: ExecuTorch ekosistemi, model boyutunu küçültmek ve çıkarım hızını artırmak için niceleştirme tekniklerini destekler; Ultralytics şu anda XNNPACK arka ucu üzerinden FP32 modelleri dışa aktarır.
-
Bellek Verimliliği: Optimize edilmiş bellek yönetimi, çalışma zamanı bellek ayak izini azaltarak sınırlı RAM'e sahip cihazlar için uygunluk sağlar.
-
Model Meta Verileri: Dışa aktarılan modeller, kolay entegrasyon için meta verileri (görüntü boyutu, sınıf adları vb.) ayrı bir YAML dosyasında içerir.
ExecuTorch ile Dağıtım Seçenekleri#
ExecuTorch modelleri çeşitli edge ve mobil platformlarda dağıtılabilir:
-
Mobil Uygulamalar: iOS ve Android uygulamalarında yerel performansla dağıtılarak mobil uygulamalarda gerçek zamanlı nesne algılama etkinleştirilebilir.
-
Gömülü Sistemler: Raspberry Pi, NVIDIA Jetson ve diğer ARM tabanlı sistemler gibi gömülü Linux cihazlarında optimize edilmiş performansla çalıştırılabilir.
-
Edge AI Cihazları: Hızlandırılmış çıkarım için özel delegate'lere sahip uzmanlaşmış edge AI donanımlarında dağıtılabilir.
-
IoT Cihazları: Bulut bağlantısı gerektirmeden cihaz üzerinde çıkarım için IoT cihazlarına entegre edilebilir.
Desteklenen Görevler#
ExecuTorch dışa aktarımı, yedi Ultralytics görevinin tamamını destekler. Anlamsal segmentasyon ve derinlik tahmini yalnızca bu başlıkları sunan tek aile olan YOLO26 ile kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algılama | ✅ | ✅ | ✅ |
| Segmentasyon | ✅ | ✅ | ✅ |
| Semantik | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandırma | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Ultralytics YOLO26 Modellerini ExecuTorch'a Aktarma#
Ultralytics YOLO26 modellerini ExecuTorch formatına dönüştürmek, mobil ve edge cihazlarda verimli dağıtım yapılmasını sağlar.
Kurulum#
ExecuTorch dışa aktarımı, Python 3.10-3.13 ve PyTorch >= 2.9.0 ile birlikte executorch paketini gerektirir:
# Install Ultralytics package
pip install ultralyticsYükleme süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Yükleme kılavuzumuza bak. YOLO26 için gerekli paketleri yüklerken herhangi bir sorunla karşılaşırsan çözümler ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
YOLO26 modellerini ExecuTorch'a aktarmak oldukça kolaydır:
ExecuTorch formatı Export, Predict ve Validate modlarını destekler. Modelini dışa aktar, ardından çıkarım yapmak veya doğruluğunu doğrulamak için dışa aktarılan modeli yükle.
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 dışa aktarımları, bir .pte dosyası ve meta verileri içeren bir dizin oluşturur. .pte modelini yüklemek ve çıkarım gerçekleştirmek için mobil veya gömülü uygulamanda ExecuTorch çalışma zamanını kullan.
Dışa Aktarma Bağımsız Değişkenleri#
ExecuTorch formatına aktarım yaparken aşağıdaki bağımsız değişkenleri belirtebilirsin:
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'executorch' | Dışa aktarılan model için hedef formatı belirtir ve çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model girdisi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı veya belirli boyutlar için (height, width) tuple'ı olabilir. |
quantize | int veya str | None | Sabit FP32 dışa aktarımı. ExecuTorch dışa aktarımı, dışa aktarım sırasında FP16, INT8 veya W8A16 hassasiyet dönüşümünü desteklemez. |
batch | int | 1 | Dışa aktarma modelinin toplu çıkarım boyutunu veya dışa aktarılan modelin predict modunda eşzamanlı olarak işleyeceği maksimum görüntü sayısını belirtir. |
device | str | None | Dışa aktarma cihazını belirtir: GPU (device=0), CPU (device=cpu), Apple silicon için MPS (device=mps). |
Çıktı Yapısı#
ExecuTorch dışa aktarımı, model ve meta verileri içeren bir dizin oluşturur:
yolo26n_executorch_model/
├── model.pte # ExecuTorch model file
└── metadata.yaml # Model metadata (classes, image size, etc.)Dışa Aktarılan ExecuTorch Modellerini Kullanma#
Modelini dışa aktardıktan sonra ExecuTorch çalışma zamanını kullanarak modeli hedef uygulamana entegre etmen gerekir.
Mobil Entegrasyon#
Mobil uygulamalar (iOS/Android) için şunları yapman gerekir:
- ExecuTorch Çalışma Zamanını Ekle: ExecuTorch çalışma zamanı kütüphanesini mobil projene dahil et
- Modeli Yükle:
.ptedosyasını uygulamana yükle - Çıkarımı Çalıştır: Görüntüleri işle ve tahminleri al
iOS#
Örnek iOS entegrasyonu (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#
Maven Central'dan ExecuTorch Android AAR paketini ekle:
dependencies {
implementation("org.pytorch:executorch-android:<version>")
}Örnek Android entegrasyonu (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().dataAsFloatArrayGömülü Linux#
Gömülü Linux sistemleri için ExecuTorch C++ API'sini kullan:
#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'u uygulamalarına entegre etme hakkında daha fazla bilgi için ExecuTorch Belgeleri sayfasını ziyaret et.
Performans Optimizasyonu#
Model Boyutu Optimizasyonu#
Dağıtım için model boyutunu küçültmek üzere:
- Daha Küçük Modeller Kullan: En küçük ayak izi için YOLO26n (nano) ile başla
- Girdi Çözünürlüğünü Düşür: Daha küçük görüntü boyutları kullan (ör.
imgsz=320veyaimgsz=416) - Niceleştirme: Niceleştirme tekniklerini uygula (gelecekteki ExecuTorch sürümlerinde desteklenecek)
Çıkarım Hızı Optimizasyonu#
Daha hızlı çıkarım için:
- XNNPACK Arka Ucu: Varsayılan XNNPACK arka ucu optimize edilmiş CPU çıkarımı sağlar
- Donanım Hızlandırma: Platforma özgü delegate'leri kullan (ör. iOS için CoreML)
- Toplu İşleme: Mümkün olduğunda birden fazla görüntüyü işle
Karşılaştırmalı Testler#
Ultralytics ekibi, PyTorch ile ExecuTorch arasındaki hız ve doğruluğu karşılaştırarak YOLO26 modellerini kıyasladı.
| Model | Biçim | Durum | Boyut (MB) | metrics/mAP50-95(B) | Çıkarım süresi (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 |
Çıkarım süresine ön/son işleme dahil değildir.
Sorun Giderme#
Yaygın Sorunlar#
Sorun: Python version error
Çözüm: ExecuTorch, Python 3.10 ila 3.13 sürümlerini gerektirir. Desteklenen bir sürümle bir ortam oluştur:
# Using conda
conda create -n executorch python=3.10
conda activate executorchSorun: Export fails during first run
Çözüm: En güncel önceden derlenmiş executorch wheel paketinin yüklü olduğundan emin ol:
pip install --upgrade executorchSorun: Import errors for ExecuTorch modules
Çözüm: ExecuTorch'un doğru şekilde yüklendiğinden emin ol:
pip install executorch --force-reinstallDaha fazla sorun giderme yardımı için Ultralytics GitHub Issues veya ExecuTorch Belgeleri sayfasını ziyaret et.
Özet#
YOLO26 modellerini ExecuTorch formatına aktarmak, mobil ve edge cihazlarda verimli dağıtım yapılmasını sağlar. PyTorch yerel entegrasyonu, platformlar arası desteği ve optimize edilmiş performansıyla ExecuTorch, edge AI uygulamaları için mükemmel bir seçimdir.
Temel çıkarımlar:
- ExecuTorch, mükemmel performansla PyTorch yerel edge dağıtımı sağlar
- Dışa aktarım
format='executorch'parametresiyle kolaydır - Modeller, XNNPACK arka ucu aracılığıyla mobil CPU'lar için optimize edilir
- iOS, Android ve gömülü Linux platformlarını destekler
- Python 3.10-3.13 ve PyTorch >= 2.9.0 gerektirir
SSS#
Bir YOLO26 modelini Python veya CLI kullanarak ExecuTorch'a aktar:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="executorch")veya
yolo export model=yolo26n.pt format=executorchExecuTorch dışa aktarımı şunları gerektirir:
- Python 3.10 ila 3.13
executorchpaketi (pip install executorchile yükle)- PyTorch (ultralytics ile otomatik olarak yüklenir)
Not:
executorchpaketi, önceden derlenmiş wheel paketleri (XNNPACK arka ucuyla) içerir; bu nedenle dışa aktarım sırasında ek bir derleme adımı gerekmez.ExecuTorch modelleri, Python'da çıkarım ve doğrulama için
YOLO()ile doğrudan yüklenebilir (yukarıdaki Predict/Validate örneklerine bak) ve ExecuTorch çalışma zamanı kütüphaneleri kullanılarak mobil ve edge cihazlarda da dağıtılabilir.ExecuTorch şunları destekler:
- Mobil: iOS ve Android
- Gömülü Linux: Raspberry Pi, NVIDIA Jetson ve diğer ARM cihazları
- Masaüstü: Linux, macOS ve Windows (geliştirme için)
Hem ExecuTorch hem de LiteRT mobil dağıtım için mükemmel seçeneklerdir:
- ExecuTorch: Daha iyi PyTorch entegrasyonu, yerel PyTorch iş akışı ve gelişen ekosistem
- LiteRT: Daha olgun, daha geniş donanım desteği, daha fazla dağıtım örneği sunar ve aynı modeli Android, iOS ve tarayıcıda çalıştırır
Zaten PyTorch kullanıyorsan ve yerel bir dağıtım yolu istiyorsan ExecuTorch'u seç. En yüksek uyumluluk ve olgun araçlar için LiteRT'yi seç.
Evet! ExecuTorch, çeşitli arka uçlar üzerinden donanım hızlandırmayı destekler:
- Mobil GPU: Vulkan, Metal veya OpenCL delegate'leri aracılığıyla
- NPU/DSP: Platforma özgü delegate'ler aracılığıyla
- Varsayılan: Optimize edilmiş CPU çıkarımı için XNNPACK
Arka uca özgü kurulum için ExecuTorch Belgeleri sayfasına başvur.