Ultralytics YOLO27:

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ı?#

PyTorch ExecuTorch mobile inference framework

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örevYOLOv8YOLO11YOLO26
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:

Kurulum
# Install Ultralytics package
pip install ultralytics

Yü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.

Dışa aktarma
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'
Tahmin
from ultralytics import YOLO

# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Doğrula
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şkenTürVarsayılanAçıklama
formatstr'executorch'Dışa aktarılan model için hedef formatı belirtir ve çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar.
imgszint veya tuple640Model 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.
quantizeint veya strNoneSabit 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.
batchint1Dış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.
devicestrNoneDış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:

  1. ExecuTorch Çalışma Zamanını Ekle: ExecuTorch çalışma zamanı kütüphanesini mobil projene dahil et
  2. Modeli Yükle: .pte dosyasını uygulamana yükle
  3. Çı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().dataAsFloatArray

Gö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=320 veya imgsz=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ı.

Performans
ModelBiçimDurumBoyut (MB)metrics/mAP50-95(B)Çıkarım süresi (ms/im)
YOLO26nPyTorch5.30.4790314.80
YOLO26nExecuTorch9.40.4800142
YOLO26sPyTorch19.50.5730930.90
YOLO26sExecuTorch36.50.5780376.1
Not

Çı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 executorch

Sorun: Export fails during first run

Çözüm: En güncel önceden derlenmiş executorch wheel paketinin yüklü olduğundan emin ol:

pip install --upgrade executorch

Sorun: Import errors for ExecuTorch modules

Çözüm: ExecuTorch'un doğru şekilde yüklendiğinden emin ol:

pip install executorch --force-reinstall

Daha 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=executorch
  • ExecuTorch dışa aktarımı şunları gerektirir:

    • Python 3.10 ila 3.13
    • executorch paketi (pip install executorch ile yükle)
    • PyTorch (ultralytics ile otomatik olarak yüklenir)

    Not: executorch paketi, ö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.

Yorumlar