ExecuTorch ile YOLO26'yı Mobil ve Uç Cihazlara Dağıt
Bilgisayarlı görü modellerini akıllı telefonlar, tabletler ve gömülü sistemler gibi uç cihazlarda dağıtmak, performans ile kaynak kısıtlamaları arasında denge kuran optimize edilmiş bir çalışma zamanı gerektirir. PyTorch'un uç bilişim çözümü olan ExecuTorch, Ultralytics YOLO modelleri için cihaz üzerinde verimli çıkarım sağlar.
Bu kılavuz, Ultralytics YOLO modellerini ExecuTorch formatına nasıl dışa aktaracağını ve modellerini optimize edilmiş performansla mobil ve uç cihazlarda nasıl dağıtabileceğini özetler.
Neden ExecuTorch'a dışa aktarmalısın?
ExecuTorch, PyTorch'un mobil ve uç cihazlarda cihaz üzerinde çıkarım yeteneklerini etkinleştirmek için sunduğu uçtan uca çözümdür. Taşınabilir ve verimli olma hedefiyle oluşturulan 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 uç cihazlarda dağıtmak için birçok güçlü özellik sunar:
-
Taşınabilir Model Formatı: ExecuTorch, kaynak kısıtlı cihazlarda boyut ve yükleme hızı için optimize edilmiş
.pte(PyTorch ExecuTorch) formatını kullanır. -
XNNPACK Arka Ucu: XNNPACK ile varsayılan entegrasyon, mobil CPU'larda yüksek oranda optimize edilmiş çıkarım sağlar ve özel donanım gerektirmeden mükemmel performans sunar.
-
Kuantizasyon Desteği: Doğruluğu korurken model boyutunu küçültmek ve çıkarım hızını artırmak için kuantizasyon tekniklerine yerleşik destek.
-
Bellek Verimliliği: Optimize edilmiş bellek yönetimi, çalışma zamanı bellek kullanımını azaltır ve sınırlı RAM'e sahip cihazlar için uygun hale getirir.
-
Model Meta Verileri: Dışa aktarılan modeller, kolay entegrasyon için ayrı bir YAML dosyasında meta verileri (görüntü boyutu, sınıf adları vb.) içerir.
ExecuTorch ile Dağıtım Seçenekleri
ExecuTorch modelleri çeşitli uç ve mobil platformlarda dağıtılabilir:
-
Mobil Uygulamalar: iOS ve Android uygulamalarında yerel performansla dağıtarak mobil uygulamalarda gerçek zamanlı nesne algılamayı etkinleştir.
-
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.
-
Uç AI Cihazları: Hızlandırılmış çıkarım için özel temsilcilerle (delegates) uzmanlaşmış uç AI donanımlarında dağıt.
-
IoT Cihazları: Bulut bağlantısı gereksinimi olmadan cihaz üzerinde çıkarım için IoT cihazlarına entegre et.
Ultralytics YOLO26 Modellerini ExecuTorch'a Dışa Aktarma
Ultralytics YOLO26 modellerini ExecuTorch formatına dönüştürmek, mobil ve uç cihazlarda verimli dağıtımı mümkün kılar.
Kurulum
ExecuTorch dışa aktarımı, Python 3.10 veya üzerini ve belirli bağımlılıkları gerektirir:
# Install Ultralytics package
pip install ultralyticsKurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Kurulum rehberimize göz at. YOLO26 için gerekli paketleri yüklerken herhangi bir zorlukla karşılaşırsan, çözümler ve ipuçları için Yaygın Sorunlar rehberimize başvur.
Kullanım
YOLO26 modellerini ExecuTorch'a dışa aktarmak oldukça basittir:
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
# Load the exported ExecuTorch model
executorch_model = YOLO("yolo26n_executorch_model")
# Run inference on a single image
results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")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ü uygulamanın içinde ExecuTorch çalışma zamanını kullan.
Dışa Aktarma Argümanları
ExecuTorch formatına dışa aktarırken şu argümanları belirtebilirsin:
| Argüman | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'executorch' | Çeşitli dağıtım ortamlarıyla uyumluluğu tanımlayan, dışa aktarılan model için hedef format. |
imgsz | int veya tuple | 640 | Desired image size for the model input. Can be an integer for square images or a tuple (height, width) for specific dimensions. |
batch | int | 1 | Modelin dışa aktarılan 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 için cihazı belirtir: GPU (device=0), CPU (device=cpu), Apple silikon için MPS (device=mps). |
Çıktı Yapısı
ExecuTorch dışa aktarımı, modeli ve meta verileri içeren bir dizin oluşturur:
yolo26n_executorch_model/
├── yolo26n.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, onu ExecuTorch çalışma zamanını kullanarak hedef uygulamana entegre etmen gerekir.
Mobil Entegrasyon
Mobil uygulamalar (iOS/Android) için şunları yapmalısın:
- ExecuTorch Çalışma Zamanını Ekle: ExecuTorch çalışma zamanı kütüphanesini mobil projene dahil et
- Modeli Yükle: Uygulamanın içinde
.ptedosyasını yükle - Çıkarımı Çalıştır: Görüntüleri işle ve tahminleri al
Ö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/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);Ö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/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().dataAsFloatArrayGömülü Linux
Gömülü Linux sistemleri için ExecuTorch C++ API'sini kullan:
#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'u uygulamalarına entegre etme hakkında daha fazla ayrıntı için ExecuTorch Belgelerini ziyaret et.
Performans Optimizasyonu
Model Boyutu Optimizasyonu
Dağıtım için model boyutunu küçültmek istersen:
- Daha Küçük Modeller Kullan: En küçük ayak izi için YOLO26n (nano) ile başla
- Giriş Çözünürlüğünü Düşür: Daha küçük görüntü boyutları kullan (ör.
imgsz=320veyaimgsz=416) - Kuantizasyon: Kuantizasyon tekniklerini uygula (gelecekteki ExecuTorch sürümlerinde desteklenir)
Çı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 özel temsilciler (delegates) kullan (ör. iOS için CoreML)
- Toplu İşleme (Batch Processing): Mümkün olduğunda birden fazla görüntüyü işle
Kıyaslamalar
Ultralytics ekibi, PyTorch ve ExecuTorch arasındaki hız ve doğruluğu karşılaştırarak YOLO26 modellerini kıyasladı.
| Model | Format | Durum | Boyut (MB) | metrics/mAP50-95(B) | Çıkarım süresi (ms/görüntü) |
|---|---|---|---|---|---|
| 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
Issue: Python version error
Çözüm: ExecuTorch, Python 3.10 veya üzerini gerektirir. Python kurulumunu yükselt:
# Using conda
conda create -n executorch python=3.10
conda activate executorchIssue: Export fails during first run
Çözüm: ExecuTorch ilk kullanımda bileşenleri indirip derleyebilir. Şunlara sahip olduğundan emin ol:
pip install --upgrade executorchIssue: Import errors for ExecuTorch modules
Çözüm: ExecuTorch'un düzgün kurulduğundan emin ol:
pip install executorch --force-reinstallDaha fazla sorun giderme yardımı için Ultralytics GitHub Issues sayfasını veya ExecuTorch Belgelerini ziyaret et.
Özet
YOLO26 modellerini ExecuTorch formatına dışa aktarmak, mobil ve uç cihazlarda verimli dağıtımı mümkün kılar. PyTorch yerel entegrasyonu, platformlar arası desteği ve optimize edilmiş performansıyla ExecuTorch, uç AI uygulamaları için mükemmel bir seçimdir.
Temel çıkarımlar:
- ExecuTorch, mükemmel performansla PyTorch tabanlı uç dağıtımı sağlar
format='executorch'parametresi ile dışa aktarma basittir- Modeller, XNNPACK arka ucu aracılığıyla mobil CPU'lar için optimize edilmiştir
- iOS, Android ve gömülü Linux platformlarını destekler
- Python 3.10+ ve FlatBuffers derleyicisi gerektirir
SSS
Bir YOLO26 modelini ExecuTorch formatına nasıl dışa aktarırım?
Python veya CLI kullanarak bir YOLO26 modelini ExecuTorch'a dış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ı için sistem gereksinimleri nelerdir?
ExecuTorch dışa aktarımı şunları gerektirir:
- Python 3.10 veya üzeri
executorchpaketi (pip install executorchile kur)- PyTorch (ultralytics ile otomatik kurulur)
Not: İlk dışa aktarma sırasında ExecuTorch, FlatBuffers derleyicisi de dahil olmak üzere gerekli bileşenleri otomatik olarak indirecek ve derleyecektir.
ExecuTorch modelleriyle doğrudan Python'da çıkarım çalıştırabilir miyim?
ExecuTorch modelleri (.pte dosyaları), ExecuTorch çalışma zamanı kullanılarak mobil ve uç cihazlarda dağıtılmak üzere tasarlanmıştır. Bunlar, Python'da çıkarım için YOLO() ile doğrudan yüklenemezler. Bunları ExecuTorch çalışma zamanı kütüphanelerini kullanarak hedef uygulamana entegre etmen gerekir.
ExecuTorch hangi platformları destekler?
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)
Mobil dağıtım için ExecuTorch, TFLite ile nasıl karşılaştırılır?
Hem ExecuTorch hem de TFLite mobil dağıtım için mükemmeldir:
- ExecuTorch: Daha iyi PyTorch entegrasyonu, yerel PyTorch iş akışı, büyüyen ekosistem
- TFLite: Daha olgun, daha geniş donanım desteği, daha fazla dağıtım örneği
Zaten PyTorch kullanıyorsan ve yerel bir dağıtım yolu istiyorsan ExecuTorch'u seç. Maksimum uyumluluk ve olgun araçlar için TFLite'ı seç.
ExecuTorch modellerini GPU hızlandırma ile kullanabilir miyim?
Evet! ExecuTorch, çeşitli arka uçlar aracılığıyla donanım hızlandırmayı destekler:
- Mobil GPU: Vulkan, Metal veya OpenCL temsilcileri (delegates) aracılığıyla
- NPU/DSP: Platforma özel temsilciler (delegates) aracılığıyla
- Varsayılan: Optimize edilmiş CPU çıkarımı için XNNPACK
Arka uca özel kurulum için ExecuTorch Belgelerine bak.