İçeriğe geç

ExecuTorch ile Mobil ve Uçta YOLO11'i Dağıtın

Akıllı telefonlar, tabletler ve gömülü sistemler gibi uç cihazlarda bilgisayar görüşü modellerini dağıtmak, performansı kaynak kısıtlamalarıyla dengeleyen 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 aktaracağınızı özetleyerek, modellerinizi optimize edilmiş performansla mobil ve uç cihazlarda dağıtmanıza olanak tanır.

Neden ExecuTorch'a aktarmalıyım?

PyTorch ExecuTorch'a genel bakış

ExecuTorch, PyTorch'un mobil ve uç cihazlarda cihaz üzerinde çıkarım yeteneklerini etkinleştirmeye yönelik uçtan uca çözümüdü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 çeşitli güçlü özellikler sunar:

  • Taşınabilir Model Formatı: ExecuTorch şunu kullanır: .pte Kaynak kısıtlı cihazlarda boyut ve yükleme hızı için optimize edilmiş (PyTorch ExecuTorch) biçimi.

  • XNNPACK Arka Ucu: XNNPACK ile varsayılan entegrasyon, mobil CPU'larda yüksek düzeyde optimize edilmiş çıkarım sağlayarak özel donanım gerektirmeden mükemmel performans sunar.

  • Kuantalama Desteği: Doğruluğu korurken model boyutunu küçültmek ve çıkarım hızını artırmak için kuantalama teknikleri için yerleşik destek.

  • Bellek Verimliliği: Optimize edilmiş bellek yönetimi, çalışma zamanı bellek ayak izini azaltır ve bu da onu 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 adları vb.) içerir.

ExecuTorch ile Dağıtım Seçenekleri

ExecuTorch modelleri çeşitli uç ve mobil platformlarda dağıtılabilir:

  • Mobil Uygulamalar: Yerel performansla iOS ve Android uygulamalarında dağıtım yaparak mobil uygulamalarda gerçek zamanlı nesne tespiti sağlar.

  • Gömülü Sistemler: Optimize edilmiş performansla Raspberry Pi, NVIDIA Jetson ve diğer ARM tabanlı sistemler gibi gömülü Linux cihazlarında çalışır.

  • Uç Yapay Zeka Cihazları: Hızlandırılmış çıkarım için özel delegelerle özel uç yapay zeka donanımında dağıtım yapın.

  • IoT Cihazları: Bulut bağlantısı gereksinimleri olmadan cihaz üzerinde çıkarım için IoT cihazlarına entegre edin.

Ultralytics YOLO11 Modellerini ExecuTorch'a Aktarma

Ultralytics YOLO11 modellerini ExecuTorch formatına dönüştürmek, mobil ve uç cihazlarda verimli dağıtımı sağlar.

Kurulum

ExecuTorch dışa aktarımı için Python 3.10 veya üstü ve belirli bağımlılıklar gerekir:

Kurulum

# Install Ultralytics package
pip install ultralytics

Kurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO11 Kurulum kılavuzumuza göz atın. YOLO11 için gerekli paketleri kurarken herhangi bir zorlukla karşılaşırsanız, çözümler ve ipuçları için Sık Karşılaşılan Sorunlar kılavuzumuza başvurun.

Kullanım

YOLO11 modellerini ExecuTorch'a aktarmak basittir:

Kullanım

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ExecuTorch format
model.export(format="executorch")  # creates 'yolo11n_executorch_model' directory

executorch_model = YOLO("yolo11n_executorch_model")

results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ExecuTorch format
yolo export model=yolo11n.pt format=executorch # creates 'yolo11n_executorch_model' directory

# Run inference with the exported model
yolo predict model=yolo11n_executorch_model source=https://ultralytics.com/images/bus.jpg

ExecuTorch dışa aktarımları, bir dizin oluşturur. .pte dosyası ve meta verileri. Mobil veya gömülü uygulamanızda ExecuTorch runtime'ı kullanarak .pte modelini kullanın ve çıkarım yapın.

Dışa Aktarma Argümanları

ExecuTorch formatına aktarırken, aşağıdaki argümanları belirtebilirsiniz:

ArgümanTürVarsayılanAçıklama
imgszint veya list640Model girişi için görüntü boyutu (yükseklik, genişlik)
devicestr'cpu'Dışa aktarma için kullanılacak cihaz ('cpu')

Çıktı Yapısı

ExecuTorch dışa aktarımı, modeli ve meta verileri içeren bir dizin oluşturur:

yolo11n_executorch_model/
├── yolo11n.pte              # ExecuTorch model file
└── metadata.yaml            # Model metadata (classes, image size, etc.)

Dışa Aktarılmış ExecuTorch Modellerini Kullanma

Modelinizi dışa aktardıktan sonra, ExecuTorch çalışma zamanını kullanarak hedef uygulamanıza entegre etmeniz gerekecektir.

Mobil Entegrasyon

Mobil uygulamalar (iOS/Android) için şunlara ihtiyacınız olacak:

  1. ExecuTorch Çalışma Zamanı Ekle: ExecuTorch çalışma zamanı kitaplığını mobil projenize ekleyin
  2. Modeli Yükle: Şunu yükle: .pte dosyasını uygulamanıza yükleyin
  3. Çıkarım Çalıştır: Görüntüleri işleyin ve tahminler alın

Ö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/yolo11n.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/yolo11n.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ın:

#include <executorch/extension/module/module.h>

// Load model
auto module = torch::executor::Module("yolo11n.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ınıza entegre etme hakkında daha fazla bilgi için ExecuTorch Belgelerine bakın.

Performans Optimizasyonu

Model Boyutu Optimizasyonu

Dağıtım için model boyutunu küçültmek için:

  • Daha Küçük Modeller Kullanın: En küçük ayak izi için YOLO11n (nano) ile başlayın
  • Daha Düşük Giriş Çözünürlüğü: Daha küçük görüntü boyutları kullanın (örn. imgsz=320 veya imgsz=416)
  • Kuantalama: Kuantalama tekniklerini uygulayın (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 özgü temsilcileri kullanın (örneğin, iOS için CoreML)
  • Toplu İşleme: Mümkün olduğunda birden çok görüntüyü işleyin

Kıyaslamalar

Ultralytics ekibi, PyTorch ve ExecuTorch arasındaki hızı ve doğruluğu karşılaştırarak YOLO11 modellerini kıyasladı.

Performans

ModelFormatDurumBoyut (MB)metrikler/mAP50-95(B)Çıkarım süresi (ms/im)
YOLO11nPyTorch5.40.5060337.67
YOLO11nExecuTorch110.5080167.28
YOLO11sPyTorch190.5770928.80
YOLO11sExecuTorch370.5780388.31

Not

Çıkarım süresi, ön/son işlemeyi içermez.

Sorun Giderme

Sık Karşılaşılan Sorunlar

Sorun: Python version error

Çözüm: ExecuTorch, Python 3.10 veya daha üstünü gerektirir. Python kurulumunuzu yükseltin:

# Using conda
conda create -n executorch python=3.10
conda activate executorch

Sorun: Export fails during first run

Çözüm: ExecuTorch'un ilk kullanımda bileşenleri indirmesi ve derlemesi gerekebilir. Şunlara sahip olduğunuzdan emin olun:

pip install --upgrade executorch

Sorun: Import errors for ExecuTorch modules

Çözüm: ExecuTorch'un düzgün bir şekilde kurulduğundan emin olun:

pip install executorch --force-reinstall

Daha fazla sorun giderme yardımı için Ultralytics GitHub Sorunları veya ExecuTorch Belgelerini ziyaret edin.

Özet

YOLO11 modellerini ExecuTorch biçimine aktarmak, mobil ve uç cihazlarda verimli dağıtım sağlar. PyTorch tabanlı entegrasyon, platformlar arası destek ve optimize edilmiş performans ile ExecuTorch, uç yapay zeka uygulamaları için mükemmel bir seçimdir.

Önemli çıkarımlar:

  • ExecuTorch, mükemmel performansla PyTorch tabanlı uç dağıtımı sağlar
  • Dışa aktarma işlemi ile basittir format='executorch' parametre
  • Models are optimized for mobile CPUs via XNNPACK backend
  • iOS, Android ve gömülü Linux platformlarını destekler
  • python 3.10+ ve FlatBuffers derleyicisi gerektirir

SSS

Bir YOLO11 modelini ExecuTorch formatına nasıl aktarırım?

Python veya CLI kullanarak bir YOLO11 modelini ExecuTorch'a aktarın:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="executorch")

veya

yolo export model=yolo11n.pt format=executorch

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

ExecuTorch dışa aktarma gerektirir:

  • Python 3.10 veya üstü
  • executorch paketi (aracılığıyla yükleyin pip install executorch)
  • PyTorch (ultralytics ile otomatik olarak yüklenir)

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 yapabilir miyim?

ExecuTorch modelleri (.pte dosyaları), ExecuTorch runtime kullanılarak mobil ve uç cihazlarda dağıtım için tasarlanmıştır. Bunlar doğrudan açılamaz YOLO() Python'da çıkarım için. Bunları ExecuTorch çalışma zamanı kütüphanelerini kullanarak hedef uygulamanıza entegre etmeniz gerekir.

ExecuTorch hangi platformları desteklemektedir?

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)

ExecuTorch, mobil dağıtım için 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ız ve yerel bir dağıtım yolu istiyorsanız ExecuTorch'u seçin. Maksimum uyumluluk ve olgun araçlar için TFLite'ı seçin.

ExecuTorch modellerini GPU hızlandırmasıyla kullanabilir miyim?

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 Belgelerine bakın.



📅 1 ay önce oluşturuldu ✏️ 25 gün önce güncellendi
glenn-jocherLaughing-qlakshanthadambitious-octopus

Yorumlar