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?

PyTorch ExecuTorch mobile inference framework

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:

Kurulum
# Install Ultralytics package
pip install ultralytics

Kurulum 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:

Kullanım
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ümanTürVarsayılanAçıklama
formatstr'executorch'Çeşitli dağıtım ortamlarıyla uyumluluğu tanımlayan, dışa aktarılan model için hedef format.
imgszint veya tuple640Desired image size for the model input. Can be an integer for square images or a tuple (height, width) for specific dimensions.
batchint1Modelin 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.
devicestrNoneDış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:

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

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

Performans
ModelFormatDurumBoyut (MB)metrics/mAP50-95(B)Çıkarım süresi (ms/görüntü)
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

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 executorch

Issue: Export fails during first run

Çözüm: ExecuTorch ilk kullanımda bileşenleri indirip derleyebilir. Şunlara sahip olduğundan emin ol:

pip install --upgrade executorch

Issue: Import errors for ExecuTorch modules

Çözüm: ExecuTorch'un düzgün kurulduğundan emin ol:

pip install executorch --force-reinstall

Daha 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=executorch

ExecuTorch dışa aktarımı için sistem gereksinimleri nelerdir?

ExecuTorch dışa aktarımı şunları gerektirir:

  • Python 3.10 veya üzeri
  • executorch paketi (pip install executorch ile 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.

Yorumlar