YOLO26'yı ExecuTorch ile Mobil ve Uç Cihazlara Dağıtın#
Akıllı telefonlar, tabletler ve gömülü sistemler gibi uç cihazlarda bilgisayarla görü modelleri dağıtmak; performansı kaynak kısıtlamalarıyla dengeleyen optimize edilmiş bir çalışma zamanı gerektirir. Uç bilişim için PyTorch çözümü olan ExecuTorch, Ultralytics YOLO modelleri için verimli cihaz içi çıkarım sağlar.
Bu kılavuz, modellerinizi optimize edilmiş performansla mobil ve uç cihazlarda dağıtmanıza olanak tanıyan Ultralytics YOLO modellerini ExecuTorch formatına nasıl dışa aktaracağınızı özetler.
Neden ExecuTorch'a dışa aktarmalısın?#
ExecuTorch; mobil ve uç cihazlarda cihaz içi çıkarım yeteneklerini etkinleştirmek için PyTorch'un uçtan uca çözümüdür. Taşınabilir ve verimli olma amacıyla oluşturulan ExecuTorch, PyTorch programlarını çok çeşitli bilişim 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 sağlar:
-
Taşınabilir Model Biçimi: ExecuTorch, kaynak kısıtlı cihazlarda boyut ve yükleme hızı için optimize edilmiş olan
.pte(PyTorch ExecuTorch) biçimini kullanır. -
XNNPACK Arka Ucu: XNNPACK ile varsayılan entegrasyon, mobil CPU'larda yüksek oranda optimize edilmiş çıkarım sağlayarak özel donanım gerektirmeden mükemmel performans sunar.
-
Kuantizasyona Hazır: ExecuTorch ekosistemi, model boyutunu küçültmek ve çıkarım hızını artırmak için kuantizasyon tekniklerini destekler; Ultralytics şu anda FP32 modellerini XNNPACK arka ucu aracılığıyla dışa aktarır.
-
Bellek Verimliliği: Optimize edilmiş bellek yönetimi, çalışma zamanı bellek kullanımını azaltarak 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 veriler (görüntü boyutu, sınıf isimleri 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ğıtın, mobil uygulamalarda gerçek zamanlı nesne algılamayı etkinleştirin.
-
Gömülü Sistemler: Raspberry Pi, NVIDIA Jetson gibi gömülü Linux cihazlarında ve diğer ARM tabanlı sistemlerde optimize edilmiş performansla çalıştırın.
-
Uç AI Cihazları: Hızlandırılmış çıkarım için özel delegelerle donatılmış uç AI donanımlarında dağıtın.
-
IoT Cihazları: Bulut bağlantısı gerektirmeden cihaz üzerinde çıkarım için IoT cihazlarına entegre edin.
Desteklenen Görevler#
ExecuTorch dışa aktarımı, yedi Ultralytics görevini de destekler. Anlamsal segmentasyon ve derinlik tahmini, yalnızca bu başlıklara sahip olan tek aile olan YOLO26 ile kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algıla | ✅ | ✅ | ✅ |
| Segmentlere Ayır | ✅ | ✅ | ✅ |
| Anlamsal | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandır | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
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 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 ultralyticsKurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Kurulum kılavuzumuza göz at. YOLO26 için gerekli paketleri kurarken herhangi bir zorlukla karşılaşırsan, çözümler ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
YOLO26 modellerini ExecuTorch'a dışa aktarmak basittir:
ExecuTorch biçimi Export, Predict ve Validate modlarını destekler. Modelinizi dışa aktarın, ardından çıkarım çalıştırmak veya doğruluğunu onaylamak için dışa aktarılan modeli yükleyin.
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 veri içeren bir dizin oluşturur. .pte modelini yüklemek ve çıkarım gerçekleştirmek için mobil veya gömülü uygulamanızda ExecuTorch çalışma zamanını kullanın.
Dışa Aktarma Argümanları#
ExecuTorch formatına dışa aktarırken şu argümanları belirtebilirsin:
| Argüman | Tip | 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 | Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tamsayı veya belirli boyutlar için bir (height, width) demeti (tuple) olabilir. |
quantize | int veya str | None | FP32 dışa aktarımı düzeltildi. ExecuTorch dışa aktarımı, dışa aktarma zamanında FP16, INT8 veya W8A16 hassasiyet dönüştürmeyi desteklemez. |
batch | int | 1 | Dışa aktarılan modelin toplu çıkarım boyutunu veya dışa aktarılan modelin predict modunda aynı anda 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 aktarma işlemi, modeli 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#
Modelinizi dışa aktardıktan sonra, onu ExecuTorch çalışma zamanını kullanarak hedef uygulamanıza entegre etmeniz gerekecektir.
Mobil Entegrasyon#
Mobil uygulamalar (iOS/Android) için şunları yapman gerekecek:
- ExecuTorch Çalışma Zamanını Ekle: ExecuTorch çalışma zamanı kütüphanesini mobil projenize dahil edin
- Modeli Yükle: Uygulamanızda
.ptedosyasını yükleyin - Çıkarım Çalıştır: Görüntüleri işleyin ve tahminler alın
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 dosyasını 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ın:
#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ınıza entegre etme hakkında daha fazla ayrıntı için ExecuTorch Documentation adresini ziyaret edin.
Performans Optimizasyonu#
Model Boyutu Optimizasyonu#
Dağıtım için model boyutunu küçültmek için:
- Daha Küçük Modeller Kullan: En küçük ayak izi için YOLO26n (nano) ile başlayın
- Düşük Giriş Çözünürlüğü: Daha küçük görsel boyutları kullanın (örn.
imgsz=320veyaimgsz=416) - Kuantizasyon: Kuantizasyon tekniklerini uygulayın (gelecek ExecuTorch sürümlerinde desteklenecektir)
Çı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 delegeler kullanın (örneğin, iOS için CoreML)
- Toplu İşleme: Mümkün olduğunda birden fazla görüntüyü işleyin
Kıyaslamalar#
Ultralytics ekibi YOLO26 modellerini kıyaslayarak PyTorch ve ExecuTorch arasındaki hız ve doğruluğu karşılaştırdı.
| Model | Format | 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 veya daha yenisini gerektirir. Python kurulumunuzu yükseltin:
# Using conda
conda create -n executorch python=3.10
conda activate executorchSorun: Export fails during first run
Çözüm: En son önceden derlenmiş executorch tekerleğinin (wheel) kurulu olduğundan emin olun:
pip install --upgrade executorchSorun: Import errors for ExecuTorch modules
Çözüm: ExecuTorch'un düzgün yüklendiğinden emin olun:
pip install executorch --force-reinstallDaha fazla sorun giderme yardımı için Ultralytics GitHub Issues veya ExecuTorch Documentation adresini ziyaret edin.
Özet#
YOLO26 modellerini ExecuTorch formatına dışa aktarmak, mobil ve uç cihazlarda verimli dağıtım sağlar. PyTorch yerel entegrasyonu, platformlar arası destek ve optimize edilmiş performans ile ExecuTorch, uç AI uygulamaları için mükemmel bir seçimdir.
Önemli noktalar:
- ExecuTorch, mükemmel performansla PyTorch tabanlı uç dağıtımı sağlar
- Dışa aktarma,
format='executorch'parametresiyle 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-3.13 ve PyTorch >= 2.9.0 gerektirir
SSS#
Bir YOLO26 modelini Python veya CLI kullanarak 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ı şunları gerektirir:
- Python 3.10 veya daha yenisi
executorchpaketi (pip install executorcharacılığıyla yükleyin)- PyTorch (ultralytics ile otomatik olarak yüklenir)
Not:
executorchpaketi önceden derlenmiş tekerlekler (XNNPACK arka ucu ile) gönderir, bu nedenle dışa aktarma sırasında ekstra bir derleme adımına gerek yoktur.ExecuTorch modelleri, Python'da çıkarım ve doğrulama için doğrudan
YOLO()ile yüklenebilir (yukarıdaki Predict/Validate örneklerine bakın) ve ayrıca ExecuTorch çalışma zamanı kitaplıkları kullanılarak mobil ve uç cihazlarda 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ükemmeldir:
- ExecuTorch: Daha iyi PyTorch entegrasyonu, yerel PyTorch iş akışı, büyüyen ekosistem
- LiteRT: Daha olgun, daha geniş donanım desteğine sahip, daha fazla dağıtım örneği sunuyor ve aynı modeli Android, iOS ve tarayıcı üzerinde çalıştırabiliyor
Zaten PyTorch kullanıyorsan ve yerel bir dağıtım yolu istiyorsan ExecuTorch'u seç. Maksimum uyumluluk ve olgun araçlar için ise LiteRT'yi tercih et.
Evet! ExecuTorch, çeşitli arka uçlar aracılığıyla donanım hızlandırmayı destekler:
- Mobil GPU: Vulkan, Metal veya OpenCL delegeleri aracılığıyla
- NPU/DSP: Platforma özgü delegeler aracılığıyla
- Varsayılan: Optimize edilmiş CPU çıkarımı için XNNPACK
Arka uca özel kurulum için ExecuTorch Documentation adresine bakın.