Ultralytics YOLO27:
Get Started

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

Qualcomm Snapdragon cihazlarında bilgisayarlı görü modellerini dağıtmak için Qualcomm AI Engine Direct (QNN) çalışma zamanına göre ayarlanmış bir model biçimi gerekir. Ultralytics YOLO modellerini QNN biçimine aktarmak; milyarlarca cep telefonu, dizüstü bilgisayar, otomotiv sistemi ve IoT cihazında bulunan Snapdragon CPU, Adreno GPU ve Hexagon NPU donanımlarında hızlandırılmış, cihaz üzerinde çıkarım yapmanı sağlar. Bu kılavuzda YOLO'yu Qualcomm QNN'ye nasıl aktaracağını ve Snapdragon donanımında hızlı, düşük güç tüketimli çıkarım için nasıl dağıtacağını ele alıyoruz.

Resmî mobil uygulamalarla YOLO'yu Snapdragon NPU'larda hemen çalıştır

Resmî Ultralytics Flutter eklentisi, yedi YOLO26 görevinin tamamında gerçek zamanlı kamera çıkarımı ve tek görüntü tahmini için isteğe bağlı QNN desteği sunar. Eklentinin README dosyasında açıklandığı gibi QNN çalışma zamanını etkinleştir ve ONNX Runtime bağımlılığını ekle. iOS dağıtımı için Ultralytics YOLO iOS SDK ve CoreML entegrasyonu sayfalarına göz at.

Resmî mobil girdi boyutları

Sınıflandırma modellerini imgsz=224 konumuna aktar. Algılama, segmentasyon, anlamsal, derinlik, poz ve OBB modellerini imgsz=640 konumuna aktar. Bu 224/640 standardı, resmî QNN, LiteRT ve CoreML mobil varlıkları arasında ortaktır. Yedi nano görevin tamamı için kullanıma hazır v73 ve v81 varlıkları yolo-flutter-app v0.6.6 sürümünde yayımlanmıştır.

Qualcomm QNN nedir?#

Qualcomm QNN on-device inference

Qualcomm AI Engine Direct — yaygın olarak QNN adıyla bilinen ve Qualcomm AI Çalışma Zamanı (QAIRT) SDK'sının bir parçası olarak dağıtılan — Qualcomm'un Snapdragon işlemcilerine yönelik düşük seviyeli çıkarım yığınıdır. Snapdragon CPU'yu, Adreno GPU'yu ve modern Snapdragon SoC'lerde bulunan özel sinir ağı işlem birimi Hexagon Tensor Processor'ı (HTP) hedefleyen arka uca özgü kitaplıklarla birleşik bir API sağlar. QNN, geliştiricilere bu Snapdragon yapay zekâ hızlandırıcılarına tam yığın erişimi sunar ve eski Snapdragon Sinir İşleme Motoru (SNPE) SDK'sının modern ardılıdır. Snapdragon 8 Gen 2, 8 Gen 3 ve 8 Elite mobil platformlarında, Snapdragon X dizüstü bilgisayarlarında ve otomotiv ile XR ürünlerinde cihaz üzerindeki yapay zekâyı çalıştırır.

Qualcomm QNN'ye Neden Aktarım Yapmalısın?#

Snapdragon, dünyada en yaygın kullanılan mobil bilgi işlem platformudur. Ultralytics YOLO'yu Qualcomm QNN biçimine aktarmak, bu cihazlardaki özel yapay zekâ donanımlarını kullanmanı sağlar:

  • Hexagon NPU hızlandırması: YOLO'yu Hexagon Tensor Processor üzerinde çalıştırmak, CPU çıkarımına kıyasla çok daha yüksek aktarım hızı ve daha düşük güç tüketimi sağlar; bu da Snapdragon üzerinde gerçek zamanlı çıkarım ve sürekli çalışan bilgisayarlı görü için idealdir.
  • Cihaz üzerinde ve çevrim dışı: QNN çıkarımı tamamen Snapdragon cihazında çalışır; dolayısıyla buluta gidip gelme olmaz, gecikme düşük kalır ve veriler cihazdan asla ayrılmaz.
  • Niceleme ile verimlilik: QNN dışa aktarımı, YOLO'yu niceleyerek INT8 ağırlıklara ve 16 bit aktivasyonlara dönüştürür. Bu, Hexagon NPU'nun tercih ettiği doğruluk-performans dengesidir; model boyutunu küçültür ve pille çalışan donanımlarda saniyedeki kare sayısını en üst düzeye çıkarır.
  • Tek biçim, birçok cihaz: Tek bir Qualcomm QNN dışa aktarımı; Snapdragon 8 Gen 2, 8 Gen 3 ve 8 Elite aileleri ve sonraki modellerde Snapdragon CPU'yu, Adreno GPU'yu ve Hexagon NPU'yu hedefler.
  • Üretime hazır Qualcomm yapay zekâ yığını: QNN (Qualcomm AI Engine Direct / QAIRT), Qualcomm'un güncel, etkin biçimde sürdürülen cihaz üzeri yapay zekâ çalışma zamanıdır ve SNPE'nin önerilen alternatifidir.

QNN Dışa Aktarma Biçimi#

Ultralytics, YOLO modellerini QNN'ye yerel olarak ONNX Runtime QNN Yürütme Sağlayıcısı'nı (onnxruntime-qnn pip paketiyle kurulabilir ve QAIRT kitaplıklarını içerir) kullanarak derler. Dışa aktarıcı, modelini ONNX biçimine dönüştürür, kalibrasyon verileriyle 16 bit aktivasyonlara ve INT8 ağırlıklara (niceleme) tabi tutar (Hexagon NPU için önerilen denge) ve ardından bağlam ikili dosyası önbelleğe almayı etkinleştirerek bir ONNX Runtime oturumu başlatır; bu işlem, niceleme uygulanmış grafiği <model>_qnn.onnx içine gömülü bir QNN bağlam ikili dosyasına derler. Qualcomm hesabı, buluta yükleme veya ayrı bir SDK indirme gerekmez.

Modelleri Qualcomm sunucularında barındırılan Snapdragon cihazlarında derleyip profilleyen ve Qualcomm hesabı gerektiren bulut tabanlı Qualcomm AI Hub hizmetinin aksine Ultralytics QNN dışa aktarımı, tek bir export(format="qnn", imgsz=640) çağrısıyla (imgsz=224 sınıflandırma için) tamamen kendi makinen üzerinde çalışır. Kayıt, yükleme sınırı veya sıra bekleme olmadan aynı QNN/QAIRT çalışma zamanı hedeflerini — Snapdragon CPU, Adreno GPU ve Hexagon NPU — kullanırsın; ayrıca dışa aktarma işlemi standart YOLO iş akışına doğrudan eklenir.

Dışa aktarılan *_qnn.onnx dosyası kendi kendine yeterlidir: QNN bağlam ikili dosyasını ve sınıf adları, görüntü boyutu ve görev gibi ONNX meta verilerini içerir.

QNN Modellerinin Temel Özellikleri#

  • Niceleme: Model, ONNX Runtime QNN QDQ akışı ve bir kalibrasyon veri kümesiyle 16 bit aktivasyonlara ve INT8 ağırlıklara dönüştürülür; bu, Hexagon NPU için önerilen doğruluk-performans dengesidir. Model niceleme hakkında daha fazla bilgi edin.
  • Tamamen Yerel Derleme: Bağlam ikili dosyası tamamen ana makinede oluşturulur; Qualcomm hesabı, API belirteci veya buluta yükleme gerekmez.
  • Tam Snapdragon Hızlandırması: Tek bir birleşik çalışma zamanı üzerinden çıkarımı Hexagon NPU (HTP), Adreno GPU veya CPU'da çalıştır.
  • Geniş Cihaz Yelpazesi: Telefonlarda, bilgisayarlarda (Snapdragon üzerinde Windows), otomotiv, XR ve gömülü ürünlerde kullanılan geniş Snapdragon platformu yelpazesini hedefle.
  • Önceden Derlenmiş Bağlam İkili Dosyası: Bağlam ikili dosyasını dağıtmak, cihaz üzerinde grafik derleme ihtiyacını en aza indirerek hedef cihazdaki model yükleme gecikmesini azaltır.
  • Kendi Kendine Yeterli Çıktı: Dışa aktarılan ONNX dosyası, önceden derlenmiş QNN bağlam ikili dosyasını ve kolay dağıtım için meta verileri içerir.

Ölçülen Performans#

Android Telefon#

Donanım: 12 GB LPDDR5X belleğe ve Android 16 / API 36'ya sahip Xiaomi 17. 3 nm Snapdragon 8 Elite Gen 5 (SM8850); 8 çekirdekli Qualcomm Oryon CPU (2 adede kadar 4,6 GHz hızında Prime çekirdek ve 6 adede kadar 3,62 GHz hızında Performance çekirdeği), Adreno GPU ve Hexagon NPU (HTP v81) içerir.

ModelGörevboyut
(piksel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
NPU
QNN W8A16
(ms)
YOLO26nDetect64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
10.7
1.8 / 6.7 / 2.2
YOLO26n-segSegment64073.4
1.8 / 65.6 / 6.0
33.2
1.8 / 23.8 / 7.6
17.4
1.8 / 9.9 / 5.7
YOLO26n-semAnlamsal64061.2
1.8 / 51.1 / 8.3
34.2
1.8 / 24.0 / 8.3
11.5
1.8 / 7.1 / 2.6
YOLO26n-depthDerinlik640124.4
1.9 / 115.1 / 7.4
23.0
1.8 / 13.5 / 7.7
35.2
1.8 / 26.1 / 7.3
YOLO26n-clsSınıflandırma2244.4
0.4 / 4.0 / 0.0
3.1
0.8 / 2.1 / 0.2
1.2
0.6 / 0.6 / 0.0
YOLO26n-posePoz64057.4
1.8 / 53.8 / 1.8
16.6
2.7 / 10.1 / 3.9
10.9
1.8 / 7.0 / 2.0
YOLO26n-obbOBB64050.3
1.8 / 47.2 / 1.4
11.7
1.8 / 7.8 / 2.0
8.6
1.8 / 5.7 / 1.1
  • Hız değerleri tek görüntülü seri gecikmeleridir — bus.jpg üzerinde 3 ısınma çalışmasının ardından yapılan 15 çalışmanın ortalamasıdır; Flutter eklentisinin 0.6.10 cihaz üzeri kıyaslama aracı ve standartlaştırılmış v0.6.6 varlıkları kullanılarak ölçülmüştür. Arka uç sırası, tek bir sıralı taramada görevler arasında dönüşümlü olarak değiştirildi. Yerel kayıtlar, her CPU satırının LiteRT CPU/XNNPACK kullandığını, her GPU satırının grafiğin tamamını LiteRT OpenCL'e (LITERT_CL) devrettiğini ve her NPU satırının QNN Hexagon HTP arka ucunu kullandığını doğruladı.
  • Ayrıntılı kıyaslama kaydı Flutter performans belgesinde yer alır.
  • Diğer Android cihazları LiteRT entegrasyonunda, Apple cihazlarını ise CoreML entegrasyonunda karşılaştır.

Snapdragon Üzerinde Windows Dizüstü Bilgisayarı#

Bu geçmiş taramada standartlaştırma öncesi v73 QNN ikili dosyaları kullanıldı; anlamsal ve OBB görevlerinde 1024 piksel girişler kullanıldı. Tarama, 32 GB belleğe ve Windows 11'e sahip bir Lenovo dizüstü bilgisayarda çalıştırıldı. Bilgisayardaki Snapdragon X Elite (X1E78100); 12 çekirdekli Qualcomm Oryon CPU, Adreno GPU ve Hexagon NPU (HTP v73) içerir; tam Lenovo modeli kaydedilmemiştir. Snapdragon üzerinde Windows karşılaştırmasında, çoğu masaüstü geliştiricisinin başlangıç noktası olan yerel PyTorch FP32 CPU temel performansı, ONNX Runtime QNN Hexagon HTP yoluyla karşılaştırılır. Her hücrede tam model.predict() geçen süre ve altında bildirilen ön işleme / çıkarım / son işleme süreleri gösterilir; toplam süre bu üç aşamanın dışındaki çerçeve yükünü de içerebilir. CPU değerleri PyTorch FP32 (torch==2.10.0+cpu), NPU değerleri ise ONNX Runtime QNN (onnxruntime-qnn==2.2.0, INT8 ağırlıklar / 16 bit aktivasyonlar) değerleridir.

ModelGörevboyut
(piksel)
CPU
PT FP32
(ms)
NPU Hexagon
QNN W8A16
(ms)
YOLO26nDetect64091.4
4.3 / 75.2 / 0.1
27.2
4.9 / 19.4 / 0.9
YOLO26n-segSegment640138.8
4.5 / 127.1 / 2.8
34.3
5.0 / 24.0 / 5.1
YOLO26n-semAnlamsal1024295.8
9.1 / 189.2 / 94.8
133.0
8.8 / 37.4 / 83.9
YOLO26n-clsSınıflandırma22415.4
3.0 / 9.8 / 0.0
11.7
2.7 / 5.5 / 0.0
YOLO26n-posePoz640109.6
4.6 / 102.9 / 0.2
28.9
5.3 / 23.3 / 0.6
YOLO26n-obbOBB1024267.8
8.1 / 254.6 / 0.1
64.8
8.9 / 54.7 / 0.6
  • Hız değerleri, bus.jpg üzerinde 10 ısınma çalıştırmasının ardından yapılan 100 çalıştırmanın ortalaması olan tek görüntülü seri gecikmelerdir; termal olarak dinlenmiş bir cihazda (ultralytics==8.4.67, Python 3.12.10) model.predict() çağrısının tamamı time.perf_counter() ile ölçülmüştür.
  • Hexagon NPU, 640-1024 px görevlerinde PyTorch CPU taban çizgisine kıyasla yaklaşık 2-4 kat daha hızlıdır (algılama ~3.4 kat); sabit ön işleme yükünün küçük iş yüküne baskın olduğu 224 px sınıflandırıcıda bu fark ~1.3 kata iner.

Desteklenen Görevler#

Qualcomm QNN dışa aktarımı, Ultralytics'ın yedi görevinin tümü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✅✅✅

QNN'ye Dışa Aktarma: YOLO Modelini Dönüştürme#

Qualcomm donanımında dağıtım için bir Ultralytics YOLO modelini QNN biçimine aktar. Bağlam ikilisi, hedef Hexagon Tensor Processor (HTP) mimarisi veya desteklenen SoC için oluşturulur. Bu hedefi, RKNN dışa aktarımında yonga hedeflemek için kullanılan name bağımsız değişkeniyle seçersin.

Desteklenen HTP Hedefleri#

Hedef mimariyi veya SoC'yi name aracılığıyla belirt (ör. name="73" veya name="iq-8275"). Destek, HTP hedefine bağlı olduğundan aşağıdaki Snapdragon satırları tüm SoC'lerin eksiksiz listesi değil, örnek platformlardır. Dragonwing cihazları açıkça listelenmiştir.

DurumnameHexagon HTPÖrnek cihaz veya platform
✅ Destekleniyor68v68Snapdragon 888
✅ Destekleniyor69v69Snapdragon 8 Gen 1 / 8+ Gen 1
✅ Destekleniyor73v73Snapdragon 8 Gen 2, X Elite (varsayılan)
✅ Destekleniyor75v75Snapdragon 8 Gen 3
✅ Destekleniyor79v79Snapdragon 8 Elite
✅ Destekleniyor81v81Snapdragon 8 Elite Gen 5
✅ Destekleniyoriq-8275 veya qcs8275v75Dragonwing IQ-8275 / QCS8275 (QNN SoC modeli 82)
❌ Desteklenmiyor—v66Dragonwing IQ-615 / QCS615

Dragonwing IQ-615, ONNX Runtime v66 DSP'sini çevrimdışı HTP hedefi olarak sunmadığı için Ultralytics QNN bağlam ikilisi dışa aktarımını kullanamaz. Yine de standart bir ONNX dışa aktarımı, kartın BSP'si tarafından desteklenen bir CPU veya GPU yürütme sağlayıcısıyla ayrı olarak entegre edilebilir.

Dragonwing IQ-8275 için dışa aktarım
from ultralytics import YOLO

model = YOLO("best.pt")
model.export(format="qnn", name="iq-8275", imgsz=640)
Platform desteği

QNN dışa aktarımı onnxruntime-qnn paketini kullanır. 2.4.0 ve sonraki sürümler, Python 3.11 veya üzeri için Windows (x64 ve ARM64) ve Linux (x86-64 ve ARM64) üzerinde önceden derlenmiş wheel'ler sunar; macOS desteklenen bir QNN ana makinesi değildir. QNN bağlam ikilisi oluşturma işlemi x64 ana makinesinde çalışır ve dışa aktarım adımı için Snapdragon cihazı gerektirmez.

Kurulum#

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

Kurulum
# Install the required package for YOLO
pip install ultralytics

onnxruntime-qnn paketi (ONNX Runtime QNN Execution Provider'ı sağlayan ve QAIRT kitaplıklarını içeren paket) ilk dışa aktarım sırasında otomatik olarak yüklenir. Yükleme sürecine ilişkin ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzumuza göz at. YOLO için gerekli paketleri yüklerken sorun yaşarsan çözüm ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.

Kullanım#

QNN biçimi Dışa Aktar, Tahmin ve Doğrula modlarını destekler. Çıkarım ve doğrulama, ONNX Runtime'ın QNN Execution Provider'ı (dışa aktarım için kullanılan onnxruntime-qnn paketi) aracılığıyla Qualcomm Snapdragon 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 bir Snapdragon cihazında yükle.

Dışa aktar
from ultralytics import YOLO

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

# Varsayılan v73 HTP hedefi için Qualcomm QNN biçimine dışa aktar (INT8, otomatik olarak zorunlu kılınır)
model.export(format="qnn", name="73", imgsz=640)  # sınıflandırma için imgsz=224 kullan
Tahmin
from ultralytics import YOLO

# Dışa aktarılan QNN modelini yükle (onnxruntime-qnn yüklü bir Snapdragon cihazında)
model = YOLO("yolo26n_qnn.onnx")

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

# Dışa aktarılan QNN modelini yükle (onnxruntime-qnn yüklü bir Snapdragon cihazında)
model = YOLO("yolo26n_qnn.onnx")

# 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'qnn'Dışa aktarılan modelin Qualcomm QNN çalışma zamanı ile uyumluluğunu belirleyen hedef biçim.
imgszint veya tuple640Model girdisi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı veya (height, width) biçiminde bir demet olabilir.
batchint1Oluşturulan QNN bağlam ikilisine işlenen dışa aktarma modeli toplu iş boyutunu belirtir.
namestr'73'Hedef Hexagon HTP mimarisi (68, 69, 73, 75, 79 veya 81) ya da desteklenen SoC (iq-8275 veya qcs8275). Bağlam ikilisi bu hedef için oluşturulur.
quantizeint veya str'w8a16'/otomatikNicemleme hassasiyeti. QNN HTP dışa aktarımı, 16 bit etkinleştirmeli INT8 ağırlıklarına nicemlenir ('w8a16') ve belirtilmediğinde otomatik olarak etkinleştirilir. Kullanımdan kaldırılan half/int8 bayraklarının yerini alır.
simplifyboolTrueAra ONNX grafiğini onnxslim ile sadeleştirir.
opsetintNoneAra ONNX grafiği için ONNX opset sürümünü belirtir. Ayarlanmazsa desteklenen en son sürüm kullanılır.
datastrNoneINT8 kalibrasyonu için kullanılan veri kümesi YAML dosyası; sınıflandırmada bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı verilir. Atlanırsa Ultralytics, model görevi için varsayılan kalibrasyon veri kümesini seçer.
fractionfloat, int veya list1.0Oran, görüntü sayısı veya [train, val, test] oranları/sayıları olarak kalibrasyon alt kümesi. İki öğeli listelerde test tam kalır; 0 ise onu atlar.
devicestrNoneONNX dışa aktarım adımı için cihazı belirtir: GPU (device=0) veya CPU (device=cpu).
Kesinlik

QNN dışa aktarımı, Hexagon NPU için önerilen doğruluk/performans dengesi olan 16 bit etkinleştirme ve INT8 ağırlıklarına modeli, data içindeki kalibrasyon görüntülerini kullanan ONNX Runtime QDQ nicemleme akışıyla nicemler. quantize='w8a16' otomatik olarak zorunlu kılınır.

Dışa aktarma süreci hakkında daha fazla bilgi için Ultralytics dışa aktarma belgeleri sayfasını ziyaret et.

Çıktı Yapısı#

Dışa aktarım başarılı olduktan sonra kendi kendine yeten bir ONNX dosyası oluşturulur:

yolo26n_qnn.onnx # ONNX wrapping the precompiled QNN context binary and metadata

yolo26n_qnn.onnx dosyası QNN bağlam ikilisini içine gömer ve Snapdragon cihazında QNN Execution Provider ile ONNX Runtime tarafından yüklenir. Ayrıca sınıf adları, görüntü boyutu ve görev gibi model meta verilerini ONNX metadata_props içinde taşır.

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

QNN modelleri desteklenen Qualcomm donanımında çalışır, bu da cihaz üzerinde model dağıtımını kolaylaştırır. onnxruntime-qnn yüklü uyumlu bir cihazda, dışa aktarılan modeli doğrudan Ultralytics API'siyle çalıştır (yolo predict/yolo val; yukarıdaki Kullanım bölümüne bak) — Ultralytics, HTP bağlam ikilisini ONNX Runtime QNN Execution Provider aracılığıyla yükler.

Özel işlem hatlarında bağlam ikilisi ONNX dosyasını doğrudan ONNX Runtime ile de yükleyebilirsin. onnxruntime-qnn bir eklenti Execution Provider'dır; bu nedenle çalışma zamanında kaydet:

import onnxruntime as ort
import onnxruntime_qnn as qnn_ep

# Snapdragon cihazında QNN eklenti EP'sini kaydet ve cihazını seç
ort.register_execution_provider_library("QNNExecutionProvider", qnn_ep.get_library_path())
devices = [d for d in ort.get_ep_devices() if d.ep_name == "QNNExecutionProvider"]

options = ort.SessionOptions()
options.add_provider_for_devices(devices, {"backend_path": qnn_ep.get_qnn_htp_path()})
session = ort.InferenceSession("yolo26n_qnn.onnx", sess_options=options)
input_info = session.get_inputs()[0]
outputs = session.run(None, {input_info.name: input_tensor})  # input_tensor: float32 NHWC

QNN bağlam ikilisi önceden derlendiğinden oturum, grafiği cihazda yeniden derlemeden hızlıca yüklenir.

Linux ve Yocto BSP Gereksinimleri#

Hedef kart, birbiriyle uyumlu bir Qualcomm çalışma zamanı ve BSP sağlamalıdır. HTP çıkarımı için bunlara ONNX Runtime QNN Execution Provider, libQnnSystem.so, libQnnHtp.so, IQ-8275 için v75 HTP stub ve skeleton kitaplıkları, libcdsprpc.so gibi FastRPC kullanıcı alanı desteği, DSP bellenimi ve ilgili FastRPC/çekirdek sürücüleri dahildir. Skeleton kitaplığı BSP'nin DSP kitaplık yolu üzerinden bulunabilir olmalıdır.

Hedef taraftaki bu bileşenler, kart üreticisinin QAIRT/QNN özellikli BSP'sinden gelir; dışa aktarılan modele gömülü değildir. GPU yürütmesi ise libQnnGpu.so ve uyumlu Adreno kullanıcı alanı sürücü yığınını gerektirir. Ultralytics format=qnn çıktısı HTP'ye özgü bir bağlam ikilisidir; bu nedenle GPU veya CPU dağıtımı, önceden derlenmiş *_qnn.onnx dosyası yerine standart bir ONNX dışa aktarımıyla başlamalıdır.

  1. Ultralytics Train Mode ile modelini eğit
  2. Desteklenen bir platformda model.export(format="qnn", name="iq-8275", imgsz=640) kullanarak QNN biçimine Dışa aktar (sınıflandırma için imgsz=224 kullan)
  3. Dışa aktarılan *_qnn.onnx dosyasını Qualcomm cihazına Dağıt
  4. HTP arka ucunu kullanarak ONNX Runtime ve QNN Execution Provider ile çıkarım Yap

Gerçek Dünya Uygulamaları#

Qualcomm Snapdragon donanımında çalışan YOLO modelleri, çok çeşitli uç yapay zekâ uygulamaları için oldukça uygundur:

  • Akıllı telefonlar: NPU hızlandırmasıyla kamera ve fotoğraf uygulamalarında gerçek zamanlı nesne algılama ve sahne anlama.
  • Snapdragon'lı Windows: Buluta veri göndermeden Copilot+ bilgisayarlarda cihaz üzerinde bilgisayarlı görü.
  • Otomotiv: Snapdragon Digital Chassis platformlarında sürücü izleme, yolcu algılama ve ADAS özellikleri.
  • XR ve Giyilebilir Cihazlar: AR/VR başlıkları ve akıllı gözlükler için düşük güç tüketimli, düşük gecikmeli algılama.
  • IoT ve Robotik: Snapdragon destekli kameralar, dronlar ve gömülü sistemlerde verimli görüntü çıkarımı.

Özet#

Bu kılavuzda, ONNX Runtime QNN Execution Provider ile Ultralytics YOLO modellerini Qualcomm QNN biçimine yerel olarak nasıl aktaracağını öğrendin. Dışa aktarma işlem hattı, modelini ONNX'e dönüştürür ve ardından ana makinede bir QNN bağlam ikilisine derler — Qualcomm hesabı veya bulut gerekmez — QNN/QAIRT çalışma zamanı aracılığıyla Snapdragon CPU, Adreno GPU ve Hexagon NPU donanımı için optimize edilmiş bir *_qnn.onnx dosyası oluşturur.

Ultralytics YOLO ile Qualcomm'un cihaz üzeri yapay zekâ yığınının birleşimi, geniş Snapdragon ekosisteminde gelişmiş bilgisayarlı görü iş yüklerini çalıştırmak için etkili bir çözüm sunar.

Diğer cihaz üzeri ve mobil dağıtım hedefleri için ilgili ONNX, CoreML, NCNN, LiteRT, ExecuTorch, RKNN, Sony IMX500 ve TensorRT dışa aktarma kılavuzlarına bak. Ürünü yayımlamadan önce biçimleri karşılaştırmak için Karşılaştırma modu kullan. Biçimlerin ve seçeneklerin tam listesi için Dışa Aktarma modu belgelerini ve entegrasyonlar kılavuzu sayfasını ziyaret et.

Sık Sorulan Sorular#

  • Modelini export(format="qnn", imgsz=640) (imgsz=224, sınıflandırma için) veya eşdeğer CLI bağımsız değişkenleriyle dışa aktarabilirsin. Dışa aktarma önce bir ONNX modeli oluşturur, ardından ONNX Runtime QNN Execution Provider'ı kullanarak modeli yerel olarak bir QNN bağlam ikilisine derler. onnxruntime-qnn paketi ilk dışa aktarımda otomatik olarak yüklenir.

    Örnek
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="qnn", imgsz=640)  # sınıflandırma için imgsz=224 kullan
  • Hayır. QNN dışa aktarımı, QAIRT kitaplıklarını içeren onnxruntime-qnn paketini kullanarak tamamen yerel makinede çalışır. Qualcomm hesabı, API belirteci veya ağ erişimi gerekmez.

  • Qualcomm AI Hub, barındırılan Snapdragon cihazlarında modelleri derlemek, profillemek ve kıyaslamak için Qualcomm'un bulut hizmetidir ve Qualcomm hesabı gerektirir. Ultralytics QNN dışa aktarımı aynı QNN/QAIRT çalışma zamanını (Snapdragon CPU, Adreno GPU ve Hexagon NPU) hedefler; ancak bağlam ikilisini ONNX Runtime QNN Execution Provider ile yerel olarak derler — hesap gerekmez, yükleme yoktur, sıra bekleme yoktur. Standart YOLO dışa aktarma iş akışında doğrudan .pt modelinden Snapdragon'a hazır bir derlemeye geçmenin en hızlı yoludur.

  • onnxruntime-qnn 2.4.0 ve sonraki sürümleri, Python 3.11 veya üzeri için Windows (x64 ve ARM64) ve Linux (x86-64 ve ARM64) üzerinde önceden derlenmiş wheel'ler sunar; macOS desteklenen bir QNN ana makinesi değildir. Bağlam ikilisi oluşturma işlemi x64 ana makinesinde çalışır ve fiziksel bir Snapdragon cihazı gerektirmez.

  • model.export(format="qnn", imgsz=640) ile dışa aktar (imgsz=224, sınıflandırma için), ortaya çıkan yolo26n_qnn.onnx dosyasını Snapdragon cihazına kopyala ve yolo predict model=yolo26n_qnn.onnx source=image.jpg (veya yolo val) komutunu çalıştır. Ultralytics, bağlam ikilisini ONNX Runtime QNN Execution Provider aracılığıyla yükler ve Hexagon NPU'da çalıştırır — Dışa Aktarılan YOLO QNN Modellerini Dağıtma bölümüne bak.

  • QNN (Qualcomm Yapay Zekâ Motoru Doğrudan, QAIRT SDK'nın bir parçası), Qualcomm'un mevcut çıkarım yığınıdır ve eski Snapdragon Sinir İşleme Motoru (SNPE) SDK'sının önerilen alternatifidir. Yeni dağıtımlar QNN'yi hedeflemelidir.

  • Evet, onnxruntime-qnn yüklü bir Qualcomm Snapdragon cihazında — YOLO("yolo26n_qnn.onnx"), bağlam ikilisini QNN Execution Provider aracılığıyla yükler ve diğer biçimlerde olduğu gibi predict/val komutlarını çalıştırır. QNN donanımı olmayan bir x86 ana makinesinde model çalıştırılamaz; çünkü bağlam ikilisi Snapdragon NPU'yu hedefler.

  • Dışa aktarım, sınıf adları, görüntü boyutu, görev ve diğer model meta verileri ONNX metadata_props içine gömülü olan, kendi kendine yeten bir bağlam ikilisi ONNX dosyası (ör. yolo26n_qnn.onnx) oluşturur.

Yorumlar