ExecuTorch ile YOLO11 'i Mobil ve Edge'de Dağıtın
Bilgisayarla görme modellerini akıllı telefonlar, tabletler ve gömülü sistemler gibi uç cihazlara dağıtmak, performansı kaynak kısıtlamalarıyla dengeleyen optimize edilmiş bir çalışma zamanı gerektirir. PyTorch'un uç bilişim için çözümü olan PyTorch, cihaz üzerinde verimli çıkarım yapılmasını sağlar Ultralytics YOLO modeller.
Bu kılavuz, Ultralytics YOLO modellerini ExecuTorch formatına nasıl dışa aktaracağınızı özetleyerek, modellerinizi optimize edilmiş performansla mobil ve uç cihazlara dağıtmanıza olanak tanır.
Neden ExecuTorch'a aktarılmalı?
ExecuTorch, PyTorch'un mobil ve uç cihazlarda cihaz üzerinde çıkarım yetenekleri sağlamaya yönelik uçtan uca çözümüdür. Taşınabilir ve verimli olma hedefiyle tasarlanan 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ç cihazlara dağıtmak için çeşitli güçlü özellikler sağlar:
-
Taşınabilir Model Formatı: ExecuTorch aşağıdakileri kullanır
.pte
PyTorch ecuTorch) formatı, kaynak kısıtlaması olan cihazlarda boyut ve yükleme hızı için optimize edilmiştir. -
XNNPACK Arka Uç: 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.
-
Niceleme Desteği: Doğruluğu korurken model boyutunu azaltmak ve çıkarım hızını artırmak için niceleme teknikleri için yerleşik destek.
-
Bellek Verimliliği: Optimize edilmiş bellek yönetimi, çalışma zamanı bellek ayak izini 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 adları vb.) içerir.
ExecuTorch ile Dağıtım Seçenekleri
ExecuTorch modelleri çeşitli uç ve mobil platformlara dağıtılabilir:
-
Mobil Uygulamalar: Mobil uygulamalarda gerçek zamanlı nesne algılama sağlayarak iOS ve Android uygulamalarında yerel performansla dağıtın.
-
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ın.
-
Uç Yapay Zeka Cihazları: Hızlandırılmış çıkarım için özel delegelere sahip özel uç yapay zeka donanımlarına dağıtın.
-
IoT Cihazları: Bulut bağlantısı gereksinimi olmadan cihaz üzerinde çıkarım için IoT cihazlarına entegre edin.
Ultralytics YOLO11 Modellerini ExecuTorch'a Aktarma
Ultralytics YOLO11 modellerinin ExecuTorch formatına dönüştürülmesi, 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
Dışa Aktarma Argümanları
ExecuTorch formatına aktarırken, aşağıdaki bağımsız değişkenleri belirtebilirsiniz:
Argüman | Tür | Varsayılan | Açıklama |
---|---|---|---|
imgsz |
int veya list |
640 |
Model girişi için görüntü boyutu (yükseklik, genişlik) |
device |
str |
'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ılan ExecuTorch Modellerini Kullanma
Modelinizi dışa aktardıktan sonra, ExecuTorch çalışma zamanını kullanarak hedef uygulamanıza entegre etmeniz gerekir.
Mobil Entegrasyon
Mobil uygulamalariOSAndroid) için yapmanız gerekenler:
- ExecuTorch Çalışma Zamanı ekleyin: ExecuTorch çalışma zamanı kütüphanesini mobil projenize dahil edin
- Yük Modeli: Yükle
.pte
uygulamanızdaki dosya - Çıkarım Çalıştırın: Görüntüleri işleyin ve tahminleri 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 Dokümantasyonunu ziyaret edin.
Performans Optimizasyonu
Model Boyutu Optimizasyonu
Dağıtım için model boyutunu küçültmek:
- Daha Küçük Modeller Kullanın: En küçük ayak izi için YOLO11n (nano) ile başlayın
- Düşük Giriş Çözünürlüğü: Daha küçük görüntü boyutları kullanın (örn,
imgsz=320
veyaimgsz=416
) - Niceleme: Niceleme tekniklerini uygulayın (gelecekteki ExecuTorch sürümlerinde desteklenir)
Çıkarım Hızı Optimizasyonu
Daha hızlı çıkarım için:
- XNNPACK Arka Uç: Varsayılan XNNPACK arka ucu optimize edilmiş CPU çıkarımı sağlar
- Donanım Hızlandırma: Platforma özel temsilciler kullanın (örn. iOS için CoreML )
- Toplu İşleme: Mümkün olduğunda birden fazla 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
Model | Format | Durum | Boyut (MB) | metrikler/mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|---|
YOLO11n | PyTorch | ✅ | 5.4 | 0.5060 | 337.67 |
YOLO11n | ExecuTorch | ✅ | 11 | 0.5080 | 167.28 |
YOLO11s | PyTorch | ✅ | 19 | 0.5770 | 928.80 |
YOLO11s | ExecuTorch | ✅ | 37 | 0.5780 | 388.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 için Python 3.10 veya üstü gerekir. Python kurulumunuzu yükseltin:
```bash
# 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. Sahip olduğunuzdan emin olun:
```bash
pip install --upgrade executorch
```
Sorun: Import errors for ExecuTorch modules
Çözüm: ExecuTorch'un düzgün şekilde kurulduğundan emin olun:
```bash
pip install executorch --force-reinstall
```
Daha fazla sorun giderme yardımı için Ultralytics GitHub Sorunlarını veya ExecuTorch Belgelerini ziyaret edin.
Özet
YOLO11 modellerinin ExecuTorch formatına aktarılması, mobil ve uç cihazlarda verimli dağıtım sağlar. PyTorch entegrasyonu, platformlar arası destek ve optimize edilmiş performans ile ExecuTorch, edge AI uygulamaları için mükemmel bir seçimdir.
Önemli çıkarımlar:
- ExecuTorch, mükemmel performans ile PyTorch uç dağıtım sağlar
- Dışa aktarma şu şekilde basittir
format='executorch'
parametresi - 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 YOLO11 modelini ExecuTorch formatına nasıl aktarabilirim?
Python veya CLI kullanarak bir YOLO11 modelini ExecuTorch'a aktarın:
```python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="executorch")
```
veya
```bash
yolo export model=yolo11n.pt format=executorch
```
ExecuTorch export için sistem gereksinimleri nelerdir?
ExecuTorch dışa aktarma gerektirir:
- Python 3.10 veya üstü
executorch
paketi (şu yolla yükleyinpip 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 modelleri ile çıkarımı doğrudan Python'da çalıştırabilir miyim?
ExecuTorch modelleri (.pte
dosyaları) ExecuTorch çalışma zamanını kullanan mobil ve uç cihazlarda dağıtım için tasarlanmıştır. Doğrudan aşağıdakilerle yüklenemezler YOLO()
Python'da çıkarım için. ExecuTorch çalışma zamanı kütüphanelerini kullanarak bunları hedef uygulamanıza entegre etmeniz gerekir.
ExecuTorch tarafından hangi platformlar destekleniyor?
ExecuTorch 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ı 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 delegeleri aracılığıyla
- NPU/DSP: Platforma özgü delegeler aracılığıyla
- Varsayılan: Optimize edilmiş CPU çıkarımı için XNNPACK
Arka uca özgü kurulum için ExecuTorch Dokümantasyonuna bakın.