YOLO Vision 2026:

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

Qualcomm Snapdragon cihazlarında bilgisayarlı görü modelleri dağıtmak, Qualcomm AI Engine Direct (QNN) çalışma zamanı için ayarlanmış bir model biçimi gerektirir. Ultralytics YOLO modellerini QNN biçimine aktarmak, milyarlarca cep telefonunda, dizüstü bilgisayarda, otomotiv sisteminde ve IoT cihazında bulunan Snapdragon CPU, Adreno GPU ve Hexagon NPU donanımı genelinde hızlandırılmış, cihaz üzerinde çıkarım çalıştırmanıza olanak tanır. Bu kılavuz, YOLO'nun Qualcomm QNN'e nasıl dışarı aktarılacağını ve Snapdragon donanımında hızlı, düşük güç tüketimli çıkarım için nasıl dağıtılacağını anlatır.

Resmi mobil uygulamalarla YOLO'yu hemen bugün Snapdragon NPU'larında çalıştır.

Resmi Ultralytics Flutter plugin, yedi YOLO26 görevinin tümünde gerçek zamanlı kamera çıkarımı ve tekli görsel tahmini için isteğe bağlı QNN desteği sağlar. QNN çalışma zamanını etkinleştirin ve eklenti README dosyasında açıklandığı gibi ONNX Runtime bağımlılığını ekleyin. iOS dağıtımı için Ultralytics YOLO iOS SDK ve CoreML integration sayfalarına bakın.

Resmi mobil girdi boyutları

Sınıflandırma modellerini imgsz=224 konumuna dışarı aktarın. Algılama, bölütleme, anlamsal, derinlik, poz ve OBB modellerini imgsz=640 konumuna dışarı aktarın. Bu 224/640 standardı, resmi QNN, LiteRT ve CoreML mobil varlıkları tarafından paylaşılır. Yedi nano görevin tümü için çalıştırılmaya hazır v73 ve v81 varlıkları yolo-flutter-app v0.6.6 release içinde yayınlanmıştır.

Qualcomm QNN nedir?#

Qualcomm QNN on-device inference

Qualcomm AI Engine Direct — genellikle QNN olarak adlandırılan ve Qualcomm AI Runtime (QAIRT) SDK'nın bir parçası olarak dağıtılan — Snapdragon işlemciler için Qualcomm'un düşük seviyeli çıkarım yığınıdır. Snapdragon CPU, Adreno GPU ve modern Snapdragon SoC'lerin içindeki özel neural network işleme birimi (NPU) olan Hexagon Tensor Processor'ı (HTP) hedefleyen, arka uç odaklı kitaplıklara sahip birleşik bir API sağlar. QNN, geliştiricilere bu Snapdragon AI hızlandırıcılarına tam yığın erişimi sağlar ve eski Snapdragon Neural Processing Engine (SNPE) SDK'nın modern halefidir. Snapdragon 8 Gen 2, 8 Gen 3 ve 8 Elite mobil platformları, Snapdragon X dizüstü bilgisayarları ile otomotiv ve XR ürünleri genelinde cihaz üzerinde AI'a güç verir.

Neden Qualcomm QNN'e Dışa Aktarmalısın?#

Snapdragon, dünyada en yaygın kullanılan mobil hesaplama platformudur. Ultralytics YOLO'yu Qualcomm QNN formatına dışa aktarmak, bu cihazlardaki özel yapay zeka donanımını etkinleştirir:

  • Hexagon NPU hızlandırma: YOLO'yu Hexagon Tensor Processor üzerinde çalıştırmak, CPU çıkarımına göre dramatik ölçüde daha yüksek aktarım hızı ve daha düşük güç sağlar; bu, real-time inference ve Snapdragon üzerinde her zaman açık bilgisayarlı görü için idealdir.
  • Cihaz üzerinde ve çevrimdışı: QNN çıkarımı tamamen Snapdragon cihaz üzerinde çalışır, böylece bulut bağlantısına gerek kalmaz, gecikme süresi düşük tutulur ve veriler asla cihazdan ayrılmaz.
  • Niceletilmiş verimlilik: QNN dışa aktarımı, YOLO'yu quantizes ederek Hexagon NPU'nun tercih ettiği doğruluk/performans dengesi olan 16 bitlik aktivasyonlarla INT8 ağırlıklarına dönüştürür; bu, model boyutunu küçültür ve pille çalışan donanımda saniyedeki kare sayısını en üst düzeye çıkarır.
  • Tek format, birçok cihaz: Tek bir Qualcomm QNN dışa aktarımı; Snapdragon 8 Gen 2, 8 Gen 3, 8 Elite aileleri ve ötesindeki Snapdragon CPU, Adreno GPU ve Hexagon NPU donanımlarını hedefler.
  • Üretime hazır Qualcomm AI yığını: QNN (Qualcomm AI Engine Direct / QAIRT), Qualcomm'un güncel, aktif olarak desteklenen cihaz içi AI çalışma zamanıdır ve SNPE için önerilen yedek parçadır.

QNN Dışa Aktarma Formatı#

Ultralytics, ONNX Runtime QNN Execution Provider'ı (QAIRT kitaplıklarını paketleyen, pip ile yüklenebilir onnxruntime-qnn paketi) kullanarak YOLO modellerini QNN'e yerel olarak derler. Dışarı aktarıcı, modelinizi ONNX biçimine dönüştürür, kalibrasyon verileriyle 16 bitlik aktivasyonlara ve INT8 ağırlıklarına niceletir (Hexagon NPU için önerilen denge), ardından bağlam ikili dosyası önbelleğe alma etkinleştirilmiş bir ONNX Runtime oturumu başlatır; bu, niceletilmiş grafiği <model>_qnn.onnx içine gömülü bir QNN bağlam ikili dosyasına derler. Hiçbir Qualcomm hesabı, buluta yükleme veya ayrı SDK indirmesi gerekmez.

Modelleri Qualcomm barındırmalı Snapdragon cihazlarında derleyen ve profilleen ve bir Qualcomm hesabı gerektiren bulut tabanlı Qualcomm AI Hub aksine, Ultralytics QNN dışa aktarımı tamamen kendi makinenizde tek bir export(format="qnn", imgsz=640) çağrısıyla (sınıflandırma için imgsz=224) çalışır. Kaydolma, yükleme limitleri veya kuyruk süreleri olmaksızın aynı QNN/QAIRT çalışma zamanı hedefini — Snapdragon CPU, Adreno GPU ve Hexagon NPU — elde edersiniz ve bu, standart YOLO dışa aktarım iş akışına doğrudan entegre olur.

Dışarı aktarılan *_qnn.onnx dosyası bağımsızdır: QNN bağlam ikili dosyasını ve sınıf adları, görsel boyutu ve görev gibi ONNX meta verilerini gömer.

QNN Modellerinin Temel Özellikleri#

  • Niceleme: Model, ONNX Runtime QNN QDQ akışı ve bir kalibrasyon veri seti kullanılarak (Hexagon NPU'nun önerilen doğruluk/performans dengesi) 16 bit aktivasyonlar ve INT8 ağırlıkları için niceletilir. model quantization hakkında daha fazla bilgi edinin.
  • Tamamen Yerel Derleme: Bağlam ikilisi tamamen kendi ana bilgisayarında oluşturulur; Qualcomm hesabı, API anahtarı veya buluta yükleme gerekmez.
  • Tam Snapdragon Hızlandırması: Hexagon NPU (HTP), Adreno GPU veya CPU üzerinde tek bir birleşik çalışma zamanı aracılığıyla çıkarım yap.
  • Geniş Cihaz Erişimi: Telefonlarda, PC'lerde (Windows on Snapdragon), otomotiv, XR ve gömülü ürünlerde kullanılan çok çeşitli Snapdragon platformlarını hedefle.
  • Önceden Derlenmiş Bağlam İkilisi: Bağlam ikilisiyle dağıtım yapmak, cihaz üzerindeki grafik derleme işlemini en aza indirerek hedef cihazdaki model yükleme gecikmesini azaltır.
  • Kendi Kendine Yeten Çıktı: Dışa aktarılan ONNX dosyası, sorunsuz bir dağıtım için önceden derlenmiş QNN bağlam ikilisini ve 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) işlemcisinde 8 çekirdekli Qualcomm Oryon CPU (4,6 GHz'e kadar 2 Prime çekirdek ve 3,62 GHz'e kadar 6 Performans çekirdeği), Adreno GPU ve Hexagon NPU (HTP v81) bulunur.

ModelGörevboyut
(piksel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
NPU
QNN W8A16
(ms)
YOLO26nAlgıla64052.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-depthDepth640124.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ır2244.4
0.4 / 4.0 / 0.0
3.1
0.8 / 2.1 / 0.2
1.2
0.6 / 0.6 / 0.0
YOLO26n-posePose64057.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
  • Speed değerleri tekli görsel ani yük gecikmeleridirbus.jpg üzerinde 3 ısınma çalışmasından sonra yapılan 15 çalışmanın ortalamasıdır; Flutter plugin's 0.6.10 cihaz içi kıyaslama aracı ve standartlaştırılmış v0.6.6 varlıkları ile ölçülmüştür. Arka uç sırası, tek bir ardışık taramada görevler arasında döndürülmüştür. Yerel günlükler, her CPU satırının LiteRT CPU/XNNPACK kullandığını, her GPU satırının tüm grafiği LiteRT OpenCL'ye devrettiğini (LITERT_CL) ve her NPU satırının QNN Hexagon HTP arka ucunu kullandığını doğruladı.
  • Ayrıntılı kıyaslama kaydı Flutter performance doc içindedir.
  • LiteRT integration içindeki diğer Android cihazları ve CoreML integration içindeki Apple cihazlarını karşılaştırın.

Windows on Snapdragon Dizüstü Bilgisayar#

Bu geçmiş taramada standart öncesi v73 QNN ikili dosyaları kullanıldı; anlamsal ve OBB için 1024 piksel girdiler kullanıldı. 32 GB belleğe ve Windows 11'e sahip bir Lenovo dizüstü bilgisayarda çalıştırıldı. Snapdragon X Elite (X1E78100) işlemcisinde 12 çekirdekli Qualcomm Oryon CPU, Adreno GPU ve Hexagon NPU (HTP v73) bulunur; tam Lenovo modeli kaydedilmedi. Bu Windows-on-Snapdragon karşılaştırması, çoğu masaüstü geliştiricinin başlangıç noktası olan yerel PyTorch FP32 CPU taban çizgisini ONNX Runtime QNN Hexagon HTP yoluyla karşılaştırır. Her hücre, altında bildirilen ön işleme / çıkarım / son işleme süreleriyle birlikte tam model.predict() duvar saati süresini gösterir; toplam, bu üç aşamanın dışındaki çerçeve ek yükünü içerebilir. CPU rakamları PyTorch FP32 (torch==2.10.0+cpu) ve NPU rakamları 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)
YOLO26nAlgıla64091.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ır22415.4
3.0 / 9.8 / 0.0
11.7
2.7 / 5.5 / 0.0
YOLO26n-posePose640109.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
  • Speed değerleri tekli görsel ani yük gecikmeleridirbus.jpg üzerinde 10 ısınma çalışmasından sonra yapılan 100 çalışmanın ortalamasıdır; termal olarak dinlendirilmiş bir cihazda (ultralytics==8.4.67, Python 3.12.10) tam model.predict() çağrısı etrafında time.perf_counter() ile ölçülmüştür.
  • Hexagon NPU, 640-1024 px görevlerinde (algılama ~3.4x) PyTorch CPU temel hattından yaklaşık 2-4 kat daha hızlı çalışır; sabit ön işleme yükünün küçük iş yüküne baskın geldiği 224 px sınıflandırıcıda ise bu fark ~1.3x seviyesine daralır.

Desteklenen Görevler#

Qualcomm QNN dışa aktarımı, yedi Ultralytics görevinin tümünü destekler. Anlamsal bölümleme ve derinlik tahmini yalnızca bu başlıkları sunan tek aile olan YOLO26 ile kullanılabilir.

GörevYOLOv8YOLO11YOLO26
Algıla
Segmentlere Ayır
Anlamsal
Derinlik
Sınıflandır
Poz
OBB

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

Qualcomm donanımında dağıtım için bir Ultralytics YOLO modelini QNN formatına aktar. İçerik ikilisi, RKNN export içinde bir yongayı hedeflemek için kullanılan argümanın aynısı olan name argümanıyla seçtiğin hedef bir Hexagon Tensor Processor (HTP) mimarisi veya desteklenen SoC için kesinleştirilir.

Desteklenen HTP Hedefleri#

Hedef mimariyi veya SoC'yi name aracılığıyla iletin (örn. name="73" veya name="iq-8275"). Destek HTP hedefi tarafından belirlenir, bu nedenle aşağıdaki Snapdragon satırları, her SoC'nin ayrıntılı bir listesi değil, temsili 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)
❌ Desteklenmiyorv66Dragonwing IQ-615 / QCS615

Dragonwing IQ-615, Ultralytics QNN içerik ikili dosyası dışa aktarımını kullanamaz çünkü ONNX Runtime, v66 DSP'sini çevrimdışı bir HTP hedefi olarak sunmaz. Standart bir ONNX dışa aktarımı, kart BSP'si tarafından desteklenen bir CPU veya GPU yürütme sağlayıcısı ile yine ayrı olarak entegre edilebilir.

Dragonwing IQ-8275 için Dışa Aktar
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. Sürüm 2.4.0 ve sonrasında, Python 3.11 veya üzeri için Windows (x64 ve ARM64) ile Linux (x86-64 ve ARM64) için önceden oluşturulmuş tekerlekler (wheels) yayınlanır; macOS, desteklenen bir QNN barındırıcısı değildir. QNN bağlam ikili dosyası oluşturma işlemi bir x64 barındırıcısında çalışır ve dışa aktarım adımı için bir Snapdragon cihazı gerektirmez.

Kurulum#

Gerekli paketleri kurmak için şunu çalıştır:

Kurulum
# Install the required package for YOLO
pip install ultralytics

ONNX Runtime QNN Execution Provider'ı sağlayan ve QAIRT kitaplıklarını paketleyen onnxruntime-qnn paketi, ilk dışa aktarımda otomatik olarak yüklenir. Kurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Installation guide kılavuzumuzu inceleyin. YOLO için gerekli paketleri yüklerken herhangi bir zorlukla karşılaşırsanız, çözümler ve ipuçları için Common Issues guide kılavuzumuza başvurun.

Kullanım#

QNN biçimi Export, Predict ve Validate modlarını destekler. Çıkarım ve doğrulama, ONNX Runtime'ın QNN Execution Provider'ı (dışa aktarım için kullanılan aynı onnxruntime-qnn paketi) aracılığıyla Qualcomm Snapdragon donanımında çalışır. Modelinizi dışa aktarın, ardından çıkarım çalıştırmak veya doğruluğunu onaylamak için dışa aktarılan modeli bir Snapdragon cihazına yükleyin.

Dışa Aktar (Export)
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export to Qualcomm QNN format (INT8, enforced automatically) for the default v73 HTP target
model.export(format="qnn", name="73", imgsz=640)  # use imgsz=224 for classification
Tahmin Et (Predict)
from ultralytics import YOLO

# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn.onnx")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Doğrula
from ultralytics import YOLO

# Load the exported QNN model (on a Snapdragon device with onnxruntime-qnn)
model = YOLO("yolo26n_qnn.onnx")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Dışa Aktarma Argümanları#

ArgümanTipVarsayılanAçıklama
formatstr'qnn'Dışa aktarılan model için hedef format; Qualcomm QNN çalışma zamanı ile uyumluluğu tanımlar.
imgszint veya tuple640Model girdisi için istenen görsel boyutu. Kare görseller için bir tamsayı veya bir (height, width) demeti (tuple) olabilir.
batchint1Oluşturulan QNN bağlam ikilisinin içine işlenen dışa aktarma modeli yığın (batch) boyutunu belirler.
namestr'73'Hedef Hexagon HTP mimarisi (68, 69, 73, 75, 79 veya 81) ya da desteklenen SoC (iq-8275 veya qcs8275). Bağlam ikili dosyası bu hedef için sonlandırılır.
quantizeint veya str'w8a16'/autoNiceleme hassasiyeti. QNN HTP dışa aktarımı, 16 bitlik aktivasyonlarla INT8 ağırlıklarına niceletilir ('w8a16') ve belirtilmezse otomatik olarak etkinleştirilir. Kullanımdan kaldırılan 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 son sürümü kullanır.
datastrNoneINT8 kalibrasyonu için kullanılan Dataset YAML; sınıflandırma ise bunun yerine bir veri kümesi dizini veya yerleşik bir veri kümesi adı alır. Atlanırsa, Ultralytics model görevi için varsayılan kalibrasyon veri kümesini seçer.
fractionfloat1.0INT8 kuantizasyonu için kullanılacak kalibrasyon veri setinin oranı.
devicestrNoneONNX dışa aktarım adımı için cihazı belirtir: GPU (device=0) veya CPU (device=cpu).
Precision

QNN dışa aktarımı, data kalibrasyon görselleriyle ONNX Runtime QDQ quantization akışını kullanarak modeli 16-bit aktivasyonlar ve INT8 ağırlıklar olarak (Hexagon NPU için önerilen doğruluk/performans dengesi) niceler. quantize='w8a16' otomatik olarak uygulanır.

Dışa aktarım süreci hakkında daha fazla ayrıntı için Ultralytics documentation page on exporting sayfasını ziyaret edin.

Çıktı Yapısı#

Başarılı bir dışa aktarmadan 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 ikili dosyasını gömer ve Snapdragon cihazında QNN Execution Provider ile ONNX Runtime tarafından yüklenir. Ayrıca ONNX metadata_props içinde sınıf adları, görsel boyutu ve görev gibi model meta verilerini taşır.

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

QNN modelleri desteklenen Qualcomm donanımında çalışarak cihaz üzerinde model deployment işlemlerini kolaylaştırır. onnxruntime-qnn kurulu uyumlu bir cihazda, dışa aktarılan modeli doğrudan Ultralytics API (yolo predict/yolo val, yukarıdaki Usage bölümüne bakın) ile çalıştırın — Ultralytics, HTP bağlam ikili dosyasını ONNX Runtime QNN Execution Provider aracılığıyla yükler.

Özel boru hatları için, bağlam ikili dosyası ONNX dosyasını da doğrudan ONNX Runtime ile yükleyebilirsiniz. onnxruntime-qnn bir eklenti Execution Provider'dır, bu nedenle bunu çalışma zamanında kaydedin:

import onnxruntime as ort
import onnxruntime_qnn as qnn_ep

# On the Snapdragon device, register the QNN plugin EP and select its device(s)
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ği için oturum, cihaz üzerinde grafiği yeniden derlemeden hızlı bir şekilde 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 bu, ONNX Runtime QNN Execution Provider, libQnnSystem.so, libQnnHtp.so, IQ-8275 için v75 HTP saplama ve iskelet kitaplıkları, libcdsprpc.so gibi FastRPC kullanıcı alanı desteği, DSP bellenimi ve ilgili FastRPC/çekirdek sürücülerini içerir. İskelet kitaplığı, BSP'nin DSP kitaplığı yolu üzerinden keşfedilebilir olmalıdır.

Bu hedef taraflı bileşenler kart üreticisinin QAIRT/QNN etkin BSP'sinden gelir; dışa aktarılan modelin içine gömülü değildir. GPU yürütme bunun yerine libQnnGpu.so ve eşleşen Adreno kullanıcı alanı sürücü yığınını gerektirir. Ultralytics format=qnn çıktısı HTP'ye özgü bir bağlam ikili dosyasıdır, bu nedenle GPU veya CPU dağıtımı önceden derlenmiş *_qnn.onnx dosyası yerine standart bir ONNX dışa aktarımından başlamalıdır.

Önerilen İş Akışı#

  1. Ultralytics Eğitim Modunu kullanarak modelini Eğit
  2. Desteklenen bir platformda model.export(format="qnn", name="iq-8275", imgsz=640) kullanarak QNN biçimine Export edin (sınıflandırma için imgsz=224 kullanın)
  3. Dışa aktarılan *_qnn.onnx dosyasını Qualcomm cihazınıza Deploy edin
  4. HTP arka ucunu kullanarak ONNX Runtime ve QNN Yürütme Sağlayıcısı ile çıkarım Çalıştır

Gerçek Dünya Uygulamaları#

Qualcomm Snapdragon donanımında çalışan YOLO modelleri, çok çeşitli edge AI uygulamaları için oldukça uygundur:

  • Akıllı telefonlar: NPU hızlandırması ile kamera ve fotoğraf uygulamalarında gerçek zamanlı object detection ve sahne anlama.
  • Windows on Snapdragon: Copilot+ PC'lerde buluta ihtiyaç duymadan 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üçlü, düşük gecikmeli algılama.
  • IoT ve Robotik: Snapdragon destekli kameralar, dronlar ve gömülü sistemlerde verimli görü çıkarımı.

Özet#

Bu kılavuzda, ONNX Runtime QNN Execution Provider kullanarak Ultralytics YOLO modellerini Qualcomm QNN biçimine yerel olarak nasıl dışarı aktaracağınızı öğrendiniz. Dışa aktarım boru hattı, modelinizi ONNX'e dönüştürür, ardından ana makinenizde bir QNN bağlam ikili dosyasına derler; hiçbir 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ı üretir.

Ultralytics YOLO ile Qualcomm'un cihaz üzerinde AI yığınının birleşimi, geniş Snapdragon ekosistemi genelinde gelişmiş computer vision iş yüklerini çalıştırmak için etkili bir çözüm sunar.

Diğer cihaz üzerinde ve mobil dağıtım hedefleri için ilgili ONNX, CoreML, NCNN, LiteRT, ExecuTorch, RKNN, Sony IMX500 ve TensorRT dışa aktarım kılavuzlarına bakın. Sevkiyattan önce biçimleri karşılaştırmak için Benchmark mode kullanın. Biçimlerin ve seçeneklerin tam listesi için Export mode belgelerini ve integrations guide page sayfasını ziyaret edin.

SSS#

  • Modelinizi export(format="qnn", imgsz=640) (sınıflandırma için imgsz=224) veya eşdeğer CLI argümanları kullanarak dışarı aktarabilirsiniz. Dışa aktarım önce bir ONNX modeli oluşturur, ardından ONNX Runtime QNN Execution Provider kullanarak bunu yerel olarak bir QNN bağlam ikili dosyasına 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)  # use imgsz=224 for classification
  • Hayır. QNN dışa aktarımı, QAIRT kitaplıklarını paketleyen onnxruntime-qnn paketi kullanılarak tamamen yerel makinenizde çalışır. Hiçbir Qualcomm hesabı, API belirteci (token) 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 bir 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 ikili dosyasını ONNX Runtime QNN Execution Provider ile yerel olarak derler — hesap yok, yükleme yok ve kuyruk yok. Standart YOLO dışa aktarım iş akışı içinde doğrudan bir .pt modelinden Snapdragon'a hazır bir derlemeye geçmenin en hızlı yoludur.

  • onnxruntime-qnn 2.4.0 ve sonrasında, Python 3.11 veya üzeri için Windows (x64 ve ARM64) ve Linux (x86-64 ve ARM64) için önceden oluşturulmuş tekerlekler sağlanır; macOS, desteklenen bir QNN barındırıcısı değildir. Bağlam ikili dosyası oluşturma işlemi bir x64 barındırıcısında çalışır ve fiziksel bir Snapdragon cihazı gerektirmez.

  • model.export(format="qnn", imgsz=640) ile dışarı aktarın (sınıflandırma için imgsz=224), ortaya çıkan yolo26n_qnn.onnx dosyasını Snapdragon cihazınıza kopyalayın ve yolo predict model=yolo26n_qnn.onnx source=image.jpg (veya yolo val) çalıştırın. Ultralytics, bağlam ikili dosyasını ONNX Runtime QNN Execution Provider aracılığıyla yükler ve Hexagon NPU üzerinde çalıştırır — bkz. Deploying Exported YOLO QNN Models.

  • QNN (Qualcomm AI Engine Direct, QAIRT SDK'nın bir parçası), Qualcomm'un mevcut çıkarım yığınıdır ve eski Snapdragon Neural Processing Engine (SNPE) SDK'sı için önerilen yedek parçadır. Yeni dağıtımlar QNN'i hedeflemelidir.

  • Evet, onnxruntime-qnn kurulu bir Qualcomm Snapdragon cihazında — YOLO("yolo26n_qnn.onnx") bağlam ikili dosyasını QNN Execution Provider aracılığıyla yükler ve predict/val işlemlerini diğer herhangi bir biçim gibi çalıştırır. Bağlam ikili dosyası Snapdragon NPU'yu hedeflediğinden, QNN donanımı olmayan bir x86 barındırıcısında model yürütülemez.

  • Dışa aktarım, ONNX metadata_props içine gömülü sınıf adları, görsel boyutu, görev ve diğer model meta verileriyle birlikte bağımsız bir içerik ikili ONNX dosyası (örn. yolo26n_qnn.onnx) oluşturur.

Yorumlar