Ultralytics YOLO27:

Ultralytics YOLO Modelleri için DEEPX Dışa Aktarımı#

Bilgisayarlı görü modellerini özel NPU donanımlarında dağıtmak için uyumlu ve optimize edilmiş bir model biçimi gerekir. Ultralytics YOLO modellerini DEEPX biçimine aktarmak, DEEPX NPU hızlandırıcılarında verimli, INT8 kuantize edilmiş çıkarım yapılmasını sağlar. Bu kılavuz, YOLO modellerini DEEPX biçimine dönüştürme ve DEEPX destekli donanımlarda dağıtma adımlarını gösterir.

DEEPX nedir?#

DEEPX NPU Inference

DEEPX, uçta güç açısından verimli derin öğrenme çıkarımı için tasarlanmış Sinir İşlem Birimleri (NPUs) konusunda uzmanlaşan bir yapay zekâ yarı iletken şirketidir. DEEPX NPU'ları, güç tüketimini en aza indirirken yüksek işlem hacmi sunarak zorlu gömülü ve endüstriyel yapay zekâ uygulamalarını destekleyecek şekilde tasarlanmıştır. DEEPX donanımı; robotik, akıllı kameralar ve endüstriyel otomasyon sistemleri gibi bulut bağlantısının güvenilir olmadığı veya istenmediği dağıtım senaryoları için oldukça uygundur.

DEEPX Dışa Aktarım Biçimi#

DEEPX dışa aktarımı, DEEPX NPU donanımında çalışacak şekilde optimize edilmiş, derlenmiş bir .dxnn model ikilisi üretir. Derleme işlem hattı, INT8 kuantizasyonu ve donanıma özgü optimizasyonu gerçekleştirmek için dx_com araç setini kullanır ve dağıtıma hazır, kendi kendine yeterli bir model dizini oluşturur.

DEEPX Modellerinin Temel Özellikleri#

DEEPX modelleri uçta dağıtım için çeşitli avantajlar sunar:

  • INT8 Kuantizasyonu: Dışa aktarım sırasında modeller INT8 hassasiyetine kuantize edilerek model boyutu önemli ölçüde küçültülür ve NPU işlem hacmi en üst düzeye çıkarılır. Model kuantizasyonu hakkında daha fazla bilgi edin.
  • NPU için Optimize Edilmiş: .dxnn biçimi, hızlı ve verimli çıkarım için özel hızlandırma birimlerinden yararlanarak DEEPX NPU donanımında çalışacak şekilde derlenir.
  • Düşük Güç Tüketimi: Çıkarımı NPU'ya aktararak DEEPX modelleri, eşdeğer CPU veya GPU çıkarımına kıyasla çok daha az güç tüketir.
  • Kalibrasyonla Doğruluk Koruma: Dışa aktarımda, kuantizasyon sırasında doğruluk kaybını en aza indirmek için gerçek veri kümesi görüntüleriyle EMA tabanlı kalibrasyon kullanılır.
  • Kendi Kendine Yeterli Çıktı: Dışa aktarılan model dizini, kolay dağıtım için derlenmiş ikili dosyayı, kalibrasyon yapılandırmasını ve meta verileri bir arada sunar.

Desteklenen Görevler#

DEEPX dışa aktarımı, Ultralytics'in yedi görevinin tamamını destekler. Anlamsal segmentasyon ve derinlik tahmini yalnızca bu başlıkları içeren tek aile olan YOLO26 ile kullanılabilir.

GörevYOLOv8YOLO11YOLO26
Algılama✅✅✅
Segmentasyon✅✅✅
Anlamsal❌❌✅
Derinlik❌❌✅
Sınıflandırma✅✅✅
Poz✅✅✅
OBB✅✅✅

DEEPX'e Aktarma: YOLO Modelini Dönüştürme#

Bir Ultralytics YOLO modelini DEEPX biçimine aktar ve dışa aktarılan modelle çıkarım yap.

Not

DEEPX dışa aktarımı yalnızca x86-64 Linux makinelerinde desteklenir. Dışa aktarma adımı ARM64 (aarch64) sistemlerinde desteklenmez. Ancak dışa aktarılan dxnn modelleri ARM64 platformlarıyla tamamen uyumludur ve bu platformlarda çalıştırılabilir.

Kurulum#

Gerekli paketleri yüklemek için şunu çalıştır:

Kurulum
# Install the required package for YOLO
pip install ultralytics

dx_com derleyicisi, ilk dışa aktarımda DEEPX SDK deposundan otomatik olarak yüklenir. Mevcut dışa aktarma iş akışı, glibc 2.31 veya daha yeni bir sürüme sahip x86-64 Linux sistemlerinde Python 3.8–3.12 için wheel sağlayan DX-COM 2.3.0'ı kullanır.

Derleyicinin PyPI sürümleri yayından kaldırılmıştır. Dışa aktarım bağımlılıklarını önceden yüklemek için SDK wheel sayfasını --find-links ile birlikte belirt; bu yöntem hem pip hem de uv pip ile çalışır:

pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.html

Düzenlenebilir bir depo kurulumu için "ultralytics[export-deepx]" yerine -e ".[export-base,export-deepx]" kullan. Python 3.12 ortamını ve CI için kullanılan hızlı dışa aktarım testini yeniden oluşturmak üzere depo kökünden mevcut ortam oluşturucuyu çalıştır:

ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx

Ortam oluşturucu, uv ve yüklenmiş bir Ultralytics deposu gerektirir. Derleyiciyi SDK kaynağından yükler ve test edilmiş bağımlılık kısıtlamalarını otomatik olarak uygular.

Kullanım#

DEEPX biçimi Dışa Aktar, Tahmin ve Doğrula modlarını destekler. Çıkarım ve doğrulama DEEPX NPU donanımında çalışır. 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 aktar
from ultralytics import YOLO

# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")

# Modeli DEEPX biçimine aktar (quantize=8 otomatik olarak zorunlu kılınır)
model.export(format="deepx")  # creates 'yolo26n_deepx_model/'
Tahmin
from ultralytics import YOLO

# Dışa aktarılan DEEPX modelini yükle
model = YOLO("yolo26n_deepx_model")

# Çıkarımı çalıştır
results = model("https://ultralytics.com/images/bus.jpg")
Doğrula
from ultralytics import YOLO

# Dışa aktarılan DEEPX modelini yükle
model = YOLO("yolo26n_deepx_model")

# COCO8 veri kümesinde doğruluğu doğrula
metrics = model.val(data="coco8.yaml")

Dışa Aktarma Bağımsız Değişkenleri#

Bağımsız değişkenTürVarsayılanAçıklama
formatstr'deepx'DEEPX NPU donanımıyla uyumluluğu belirleyen dışa aktarılan modelin hedef biçimi.
imgszint veya tuple640Model girdisi için istenen görüntü boyutu. DEEPX dışa aktarımı kare bir girdi gerektirir — bir tam sayı (ör. 640) veya yüksekliği genişliğine eşit bir demet geçir.
quantizeint veya str8/autoKuantizasyon hassasiyeti. DEEPX dışa aktarımı için 8 (INT8) gerekir ve belirtilmediğinde otomatik olarak etkinleştirilir. Kullanımdan kaldırılmış half/int8 bayraklarının yerini alır.
simplifyboolTrueAra ONNX grafiğini onnxslim ile basitleştirir.
opsetintNoneAra ONNX grafiği için ONNX opset sürümünü belirtir. Ayarlanmazsa desteklenen en güncel sürüm kullanılır.
datastrNoneINT8 kalibrasyonu için kullanılan veri kümesi YAML dosyası; sınıflandırmada ise bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı kullanılır. quantize=8 ile belirtilmezse Ultralytics, model görevi için varsayılan kalibrasyon veri kümesini seçer.
devicestrNoneDışa aktarma aygıtını belirtir: GPU (device=0) veya CPU (device=cpu).
optimizeboolFalseÇıkarım gecikmesini azaltıp derleme süresini artıran daha yüksek derleyici optimizasyonunu etkinleştirir.
İpucu

DEEPX dışa aktarımını her zaman bir x86-64 Linux ana bilgisayarında çalıştır. dx_com derleyicisi ARM64'ü desteklemez.

Dışa aktarma süreciyle ilgili daha fazla ayrıntı için dışa aktarmayla ilgili Ultralytics dokümantasyon sayfasını ziyaret et.

Çıktı Yapısı#

Dışa aktarma başarıyla tamamlandıktan sonra aşağıdaki yapıda bir model dizini oluşturulur:

yolo26n_deepx_model/
├── yolo26n.dxnn     # Compiled DEEPX model binary (NPU executable)
├── config.json      # Calibration and preprocessing configuration
└── metadata.yaml    # Model metadata (classes, image size, task, etc.)

.dxnn dosyası, dx_engine çalışma zamanının doğrudan NPU'ya yüklediği derlenmiş model ikilisidir. metadata.yaml, Ultralytics çıkarım işlem hattının kullandığı sınıf adlarını, görüntü boyutunu ve diğer bilgileri içerir.

Dışa Aktarılan YOLO DEEPX Modellerini Dağıtma#

Ultralytics YOLO modelini DEEPX biçimine başarıyla aktardıktan sonraki adım, bu modelleri DEEPX NPU donanımında dağıtmaktır.

Çalışma Zamanı Kurulumu#

Çıkarım için DEEPX NPU sürücüsü, libdxrt çalışma zamanı ve dx_engine Python paketi gerekir.

Not

DEEPX çalışma zamanı hem x86-64 Linux hem de ARM64'ü (ör. Raspberry Pi 5) destekler.

# Install the NPU driver and libdxrt runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.4.1/dxrt-driver-dkms_2.4.1-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.1-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.3.2/libdxrt_3.3.2_all.deb
sudo apt install ./libdxrt_3.3.2_all.deb

# Create dx-engine wheel
cd /usr/share/libdxrt/python_package && sudo ./make_whl.sh

# Install the bundled dx_engine Python wheel
pip install dx_engine-*.whl

dxrt-cli --version ile çalışma zamanının doğru yüklendiğini doğrula. Şuna benzer bir çıktı görmelisin:

DXRT v3.3.2
Minimum Driver Versions
Device Driver: v2.4.0
PCIe Driver: v2.2.0
Firmware: v2.5.2
Minimum Compiler Versions
Compiler: v1.18.1
.dxnn File Format: v6

Çalışma zamanı yüklendikten sonra, DEEPX aygıtında çıkarım ve doğrulamayı yukarıdaki Kullanım bölümünde gösterildiği gibi çalıştır — dışa aktarılan _deepx_model, YOLO(...) ile doğrudan yüklenir.

dxtron ile Görselleştirme#

dxtron, derlenmiş .dxnn modelini incelemek için DEEPX'in grafik görselleştiricisidir.

dxtron kurulumunu x86-64 Linux'ta yapmak için DEEPX SDK'dan .deb paketini indir ve dpkg ile yükle:

wget https://sdk.deepx.ai/release/dxtron/v2.0.1/dxtron_2.0.1_amd64.deb
sudo dpkg -i dxtron_2.0.1_amd64.deb

Ardından dışa aktardığın modeli aç:

dxtron yolo26n_deepx_model/yolo26n.dxnn
Not

dxtron hem x86-64 hem de aarch64 platformları için kullanılabilir.

Kıyaslamalar#

Ultralytics ekibi, PyTorch ve DEEPX arasındaki hız ve doğruluk farkını karşılaştırarak YOLO26 modellerini kıyasladı.

Performans
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
ModelBiçimDurumBoyut (MB)metrikler/mAP50-95(B)Çıkarım süresi (ms/görüntü)
YOLO26nPyTorch✅5.30.4760315.2
YOLO26nDEEPX✅6.60.466034.6
YOLO26n-segPyTorch✅6.50.4080485.4
YOLO26n-segDEEPX✅7.90.392053.8
YOLO26n-posePyTorch✅7.60.4230506.3
YOLO26n-poseDEEPX✅8.80.459037.6
YOLO26n-obbPyTorch✅5.70.8171094.4
YOLO26n-obbDEEPX✅7.30.78356.4
ModelBiçimDurumBoyut (MB)doğruluk (top1)doğruluk (top5)Çıkarım süresi (ms/görüntü)
YOLO26n-clsPyTorch✅5.60.4310.71623.8
YOLO26n-clsDEEPX✅5.90.3330.6862.7
Not

Yukarıdaki kıyaslamaların doğrulaması; tespit için COCO128, segmentasyon için COCO128-seg, poz tahmini için COCO8-pose, sınıflandırma için ImageNet100 ve OBB modelleri için DOTA128 kullanılarak yapıldı. Çıkarım süresine ön/son işleme dahil değildir.

Performans Optimizasyonu İpuçları

Raspberry Pi 5'e bağlı DX-M1 NPU'dan en yüksek çıkarım işlem hacmini elde etmek için önyükleme yapılandırma dosyasını aç ve PCIe Gen 3 desteğini etkinleştir.

sudo nano /boot/firmware/config.txt

Dosyanın sonuna şu satırları ekle:

dtparam=pciex1
dtparam=pciex1_gen=3

Kaydet ve çık (Ctrl+X, ardından Y, sonra Enter), sonra sistemi yeniden başlat:

sudo reboot

PCIe neslini kontrol et. PCIe Gen3 için beklenen hız 8GT/s'dir.

sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"

Önerilen İş Akışı#

  1. Ultralytics Eğitim Modu ile modelini Eğit
  2. model.export(format="deepx") kullanarak DEEPX biçimine Aktar
  3. Kuantizasyon kaybının en düşük düzeyde olduğunu doğrulamak için yolo val ile doğruluğu Doğrula
  4. Niteliksel doğrulama için yolo predict kullanarak Tahmin et
  5. Dışa aktarılan _deepx_model/ dizinini dx_engine çalışma zamanını kullanarak DEEPX NPU donanımına Dağıt

Gerçek Dünya Uygulamaları#

DEEPX NPU donanımına dağıtılan YOLO modelleri, çok çeşitli uç yapay zekâ uygulamaları için uygundur:

  • Akıllı Gözetim: Güvenlik ve izleme sistemlerinde düşük güç tüketimiyle ve buluta bağımlı olmadan gerçek zamanlı nesne tespiti.
  • Endüstriyel Otomasyon: Fabrika ortamlarında aygıt üzerinde kalite kontrolü, kusur tespiti ve süreç izleme.
  • Robotik: Otonom robotlarda ve dronlarda görüntü tabanlı gezinme, engellerden kaçınma ve nesne tanıma.
  • Akıllı Tarım: Tarımda bilgisayarlı görü kullanarak mahsul sağlığını izleme, zararlı tespiti ve verim tahmini.
  • Perakende Analitiği: Gerçek zamanlı uç çıkarımıyla müşteri akışı analizi, raf izleme ve envanter takibi.

Özet#

Bu kılavuzda, Ultralytics YOLO modellerini DEEPX biçimine aktarmayı ve DEEPX NPU donanımında dağıtmayı öğrendin. Dışa aktarma işlem hattı, donanım için optimize edilmiş bir .dxnn ikilisi oluşturmak üzere INT8 kalibrasyonu ve dx_com derleyicisini kullanırken, dx_engine çalışma zamanı aygıttaki çıkarımı yönetir.

Ultralytics YOLO ile DEEPX'in NPU teknolojisinin birleşimi, gömülü ve uç aygıtlarda gelişmiş bilgisayarlı görü iş yüklerini çalıştırmak için etkili bir çözüm sunar — gerçek zamanlı uygulamalarda düşük güç tüketimiyle yüksek işlem hacmi sağlar.

Kullanımla ilgili daha fazla ayrıntı için DEEPX'in resmi web sitesini ziyaret et.

Ayrıca, diğer Ultralytics YOLO entegrasyonları hakkında daha fazla bilgi edinmek istersen entegrasyon kılavuzu sayfamızı ziyaret et. Orada pek çok yararlı kaynak ve bilgi bulabilirsin.

Sık Sorulan Sorular#

  • Modelini Python'da export() yöntemiyle veya CLI üzerinden dışa aktarabilirsin. Dışa aktarma, INT8 kuantizasyonunu otomatik olarak etkinleştirir ve doğruluk kaybını en aza indirmek için bir kalibrasyon veri kümesi kullanır. dx_com derleyici paketi yüklü değilse otomatik olarak yüklenir.

    Örnek
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="deepx")
  • DEEPX NPU'ları, INT8 hesaplamalarını en yüksek verimlilikte gerçekleştirmek üzere tasarlanmıştır. dx_com derleyicisi, NPU'nun tam performansını sunmasını sağlamak için dışa aktarım sırasında gerçek veri kümesi görüntüleriyle EMA tabanlı kalibrasyon kullanarak modeli kuantize eder. DEEPX dışa aktarımlarında INT8 her zaman zorunludur — farklı bir hassasiyet seçersen bu değer bir uyarıyla INT8 olarak değiştirilir.

  • DEEPX modelinin dışa aktarılması (derlenmesi) için bir x86-64 Linux ana bilgisayarı gerekir. Dışa aktarma adımı ARM64 (aarch64) ve Windows makinelerinde desteklenmez. Dışa aktarılan .dxnn modeliyle çıkarım, dx_engine çalışma zamanının desteklediği tüm Linux platformlarında (x86-64 ve ARM64) çalıştırılabilir.

  • Dışa aktarma, aşağıdakileri içeren bir dizin oluşturur (ör. yolo26n_deepx_model/):

    • yolo26n.dxnn — derlenmiş NPU ikilisi
    • config.json — kalibrasyon ve ön işleme ayarları
    • metadata.yaml — sınıf adları ve görüntü boyutu dahil model meta verileri
  • Evet. Ultralytics Eğitim Modu ile eğitilen ve format="deepx" kullanılarak dışa aktarılan tüm modeller, desteklenen katman işlemlerini kullanmaları koşuluyla DEEPX NPU donanımına dağıtılabilir. Dışa aktarma, Ultralytics'in yedi görevinin tamamını destekler: tespit, örnek segmentasyonu, anlamsal segmentasyon, derinlik tahmini, sınıflandırma, poz tahmini ve yönlendirilmiş sınırlayıcı kutu (OBB).

  • DEEPX dışa aktarma işlem hattı, dx_com derleyicisini kalibrasyon veri kümesindeki görüntüler üzerinde 100 EMA kalibrasyon adımı uygulayacak şekilde yapılandırır. İyi bir kuantizasyon doğruluğu için genellikle birkaç yüz görüntü yeterlidir. Büyük veri kümelerinde derleme süresi sorun yaratıyorsa data değerini daha küçük bir veri kümesine yönlendir.

  • DEEPX çalışma zamanı ultralytics ile birlikte sunulmaz ve çıkarım çalıştırılmadan önce ayrı olarak yüklenmelidir. x86-64 Linux ve ARM64 Linux makinelerine (ör. Raspberry Pi 5) DEEPX-AI GitHub sürümlerinden NPU sürücüsünü (dxrt-driver-dkms) ve çalışma zamanını (libdxrt) yükle, ardından pakete dahil olan dx_engine Python wheel'ini kur. Adım adım komutlar için yukarıdaki Çalışma Zamanı Kurulumu bölümüne bak.

Yorumlar