Ultralytics YOLO27: Bekleme listesine katıl.
Başla

Neutron ile NXP i.MX95 dışa aktarımı

Ultralytics YOLO modelini format="nxp" ile dışa aktararak NXP i.MX95 Neutron NPU için derlenmiş bir INT8 .tflite modeli oluştur. Dışa aktarıcı, LiteRT dönüştürme ve kalibrasyon ardışık düzenini yeniden kullanır, ardından uç yapay zekâ dağıtımı için NXP'nin Neutron SDK 3.3.0 derleyicisini çalıştırır.

Bu hedef, Sony IMX500 (format="imx") hedefinden farklıdır. NXP i.MX8M Plus, i.MX93 ve diğer NXP işlemcileri farklı hızlandırıcı yığınları kullanır; i.MX95 yapıtı bu hedeflerle birbirinin yerine kullanılamaz.

Dışa aktar#

Dışa aktarımı Linux x86_64 üzerinde, Python 3.10 veya sonraki sürümleriyle yap. Derleme Python 3.13 ve 3.14 ile doğrulanmıştır. Ultralytics, gerektiğinde dönüştürme bağımlılıklarını yükler. Neutron SDK, NXP'nin paket deposundan edinilir.

pip install -U ultralytics
pip install eiq-neutron-sdk==3.3.0 --extra-index-url https://eiq.nxp.com/repository
NXP i.MX95'e aktar
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
path = model.export(format="nxp", imgsz=640, data="coco128.yaml")
# yolo26n_nxp.tflite oluşturur

Kamera, aydınlatma ve nesne boyutları dâhil olmak üzere dağıtım ortamını temsil eden kalibrasyon görüntüleri kullan. INT8 niceleme doğruluğu düşürebilir; bu nedenle ara yolo26n_int8.tflite modelini ana makinede PyTorch modeliyle karşılaştır. coco128.yaml kullanışlı bir örnektir; uygulamana özel kalibrasyonun ve bağımsız bir doğrulama veri kümesinin yerini tutmaz.

Bağımsız değişkenAçıklama
imgszSabit giriş görüntüsü boyutu; örneğin 640 veya (480, 640).
quantizeINT8 (8); otomatik olarak etkinleştirilir. Diğer hassasiyetler desteklenmez.
dataKalibrasyon veri kümesi YAML dosyası veya bir sınıflandırma veri kümesi.
fractionKalibrasyon görüntülerinin oranı veya sayısı.
deviceDışa aktarma ve kalibrasyon sırasında kullanılan cihaz. Derlenen hedef i.MX95 olarak kalır.

Toplu iş boyutu 1 olarak sabitlenmiştir. Algılama dışa aktarımlarında harici NMS için ham tahminler kullanılır; Ultralytics, tahmin ve doğrulama sırasında bu son işlemeyi uygular. Gömülü NMS ve YOLO26'nın NMS içermeyen top-k çıktısı bu dışa aktarımda desteklenmez.

Platform#

Ultralytics Platform içinde bir modelin Dışa aktar sekmesini aç ve NXP'yi seç. Görüntü boyutunu belirle ve dışa aktarım tamamlandığında derlenmiş _nxp.tflite yapıtını indir. Platform derleyiciyi kendi CPU çalışanlarında çalıştırır; NXP kartı yalnızca dağıtım ve performans ölçümleri için gerekir. Genel iş akışı için Platform model dışa aktarım kılavuzuna bak.

Platform, INT8'i sabit bir ayar olarak gösterir ve modelin görevi için dışa aktarıcının varsayılan kalibrasyon veri kümesini kullanır. Şu anda kalibrasyon data veya fraction denetimlerini sunmaz. Kendi temsili görüntülerinle kalibrasyon yapmak için yukarıdaki Python veya CLI dışa aktarım örneklerini kullan.

i.MX95'te dağıt#

TensorFlow Lite çalışma zamanını, libneutron_delegate.so, Neutron sürücüsünü ve Neutron SDK 3.3.0 ile uyumlu bir BSP için NXP'nin sağladığı aygıt yazılımını yükle. Kart kurulumu ve çalışma zamanı uyumluluğu için NXP'nin dağıtım kılavuzunu izle.

Ultralytics çalışma zamanı, kartın tflite_runtime dosyasını ve Neutron delegesini yükler. Ultralytics'in NXP çalışma zamanını seçmesi için _nxp.tflite sonekini koru. Aşağıdaki tahmin ve doğrulama örneklerini kartta çalıştır:

NXP modeliyle tahmin yap
from ultralytics import YOLO

model = YOLO("yolo26n_nxp.tflite")
results = model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640)
NXP modelini doğrula
from ultralytics import YOLO

model = YOLO("yolo26n_nxp.tflite")
metrics = model.val(data="coco128.yaml", imgsz=640, batch=1)

Doğrudan TensorFlow Lite kıyaslaması için kartın kıyaslama yürütülebilir dosyasını kullan:

benchmark_model --graph=yolo26n_nxp.tflite --external_delegate_path=/usr/lib/libneutron_delegate.so

Operatör Kapsamı ve Performans#

Derleme, desteklenen alt grafikleri NeutronGraph işlemleriyle değiştirir. Desteklenmeyen operatörler CPU'da çalışmaya devam eder. Başarılı bir dışa aktarım, her işlemin NPU'da çalıştığı veya CPU/NPU geçişi ek yükünün ortadan kaldırıldığı anlamına gelmez. Dikkat, tensör düzeni değişiklikleri ve son işleme yine CPU'da çalışmayı gerektirebilir.

Dışa aktarım günlüğünde NXP derleyici istatistikleri bulunur: dönüştürülen operatörler, NPU bölümleri, bellek tahminleri ve tahmini NPU döngüleri. Bu tahminlere CPU operatörleri, ön işleme, son işleme ve çalışma zamanı ek yükü dâhil değildir. Tam kare gecikmesini, tepe RAM kullanımını ve dağıtım depolama alanını hedef kartta ölç; teorik TOPS değerleri ve derlenmiş dosya boyutu bu değerleri belirleyemez.

Kalibre edilmiş ara modeli PyTorch modeliyle karşılaştırarak doğrula, ardından derlenmiş modeli aynı veri kümesi ve görüntü boyutuyla kartta doğrula. Ana makinede derleme ve ara modelin doğruluk kontrolleri, NPU'da sayısal eşdeğerliği veya gecikmeyi kanıtlamaz. Uygulama düzeyinde doğrulamayı planlamak için model dağıtımı en iyi uygulamalarına bak.

Sık Sorulan Sorular#

  • Linux x86_64 üzerinde Python'da model.export(format="nxp", data="your_dataset.yaml") veya CLI'da yolo export model=best.pt format=nxp data=your_dataset.yaml kullan. Dışa aktarıcı modeli INT8'e kalibre eder ve Neutron SDK 3.3.0 ile derleyerek best_nxp.tflite çıktısını oluşturur. Önceden eğitilmiş YOLO26n modeli için dışa aktarım örneklerini izle.

  • Evet. YOLO("best_nxp.tflite") dosyasını yükleyip predict() veya val() işlevini çağır ya da yolo predict ve yolo val kullan. Her iki yol da kartın TensorFlow Lite çalışma zamanını ve Neutron delegesini kullanır. _nxp.tflite dosya adı sonekini koru ve i.MX95'te dağıtım bölümünde açıklanan uyumlu NXP çalışma zamanını yükle.

  • Bu dışa aktarım yalnızca i.MX95'i hedefler. Diğer NXP işlemciler farklı hızlandırıcılar ve dağıtım araç zincirleri kullanır; bu nedenle i.MX95 Neutron yapıtı i.MX8M Plus veya i.MX93 üzerinde yeniden kullanılamaz. Ayrı format="imx" seçeneği NXP i.MX işlemcilerini değil, Sony IMX500'ü hedefler.

  • Neutron, desteklenen alt grafikleri NPU için derler ve desteklenmeyen operatörleri CPU'da çalıştırılmak üzere TensorFlow Lite'ta bırakır. Dikkat, düzen değişiklikleri ve son işleme birden fazla bölüme ve aktarım ek yüküne yol açabilir. Derleyicinin dönüştürülen operatör istatistiklerini incele, ardından uygulamanın tamamını kartta profille; başarılı derleme, tüm işlemlerin NPU'da çalışacağını garanti etmez.

  • Temsili görüntülerle kalibrasyon yap ve PyTorch modelini, INT8 ara modelini ve derlenmiş modeli bağımsız bir doğrulama kümesinde karşılaştır. Doğruluk için Doğrulama modunu kullan; kare gecikmesini, tepe işlem RAM kullanımını ve dağıtım depolama alanını i.MX95 kartında ölç. Derleyicinin bellek tahminleri, model dosyası boyutu ve TOPS derecelendirmesi uygulama performansını belirlemek için yeterli değildir.

Katkıda Bulunanlar

Yorumlar

Bir soru sor, sonuçlarını paylaş veya başka birine yardım et.