Meet YOLO26: next-gen vision AI.

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

Bilgisayarlı görü modellerini Qualcomm Snapdragon cihazlarında çalıştırmak, Qualcomm AI Engine Direct (QNN) çalışma zamanı için optimize edilmiş bir model formatı gerektirir. Ultralytics YOLO modellerini QNN formatına dışa aktarmak, milyarlarca cep telefonu, dizüstü bilgisayar, otomotiv sistemi ve IoT cihazında bulunan Snapdragon CPU, Adreno GPU ve Hexagon NPU donanımları genelinde hızlandırılmış, cihaz üzerinde çıkarım yapmanı sağlar. Bu kılavuz, YOLO'yu Qualcomm QNN'e nasıl dışa aktaracağını ve Snapdragon donanımı üzerinde hızlı, düşük güç tüketen çıkarım için nasıl dağıtacağını adım adım açıklar.

Qualcomm QNN Nedir?

Qualcomm QNN on-device inference

Qualcomm AI Engine Direct — yaygın olarak QNN olarak adlandırılan ve Qualcomm AI Runtime (QAIRT) SDK'nın bir parçası olarak dağıtılan bu teknoloji, 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 yapay sinir ağı işleme birimi (NPU) olan Hexagon Tensor Processor (HTP) için arka uç özel kütüphaneleriyle birleşik bir API sağlar. QNN, geliştiricilere bu Snapdragon AI hızlandırıcılarına tam yığın erişimi sunar ve daha eski olan Snapdragon Neural Processing Engine (SNPE) SDK'nın modern halefidir. Snapdragon 8 Gen 2, 8 Gen 3 ve 8 Elite mobil platformlarında, Snapdragon X dizüstü bilgisayarlarda, otomotiv ve XR ürünlerinde cihaz üzerinde yapay zekayı destekler.

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

Snapdragon, dünyada en yaygın kullanılan mobil bilgi işlem platformudur. Ultralytics YOLO'yu Qualcomm QNN formatına dışa aktarmak, bu cihazlardaki özel yapay zeka donanımının kilidini açar:

  • Hexagon NPU hızlandırması: YOLO'yu Hexagon Tensor Processor üzerinde çalıştırmak, CPU çıkarımına göre çok daha yüksek iş hacmi ve daha düşük güç tüketimi sağlar; bu da gerçek zamanlı çıkarım 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 buluta veri gidip gelmesi gerekmez, gecikme süresi düşük kalır ve veriler cihazdan asla çıkmaz.
  • INT8 verimliliği: QNN dışa aktarımı, YOLO'yu Hexagon NPU'nun yerel hassasiyeti olan INT8 formatına niceler, böylece model boyutunu küçültür ve pille çalışan donanımlarda saniye başına kare sayısını (FPS) 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 ve 8 Elite aileleri ve ötesindeki Snapdragon CPU, Adreno GPU ve Hexagon NPU'ları hedefler.
  • Üretime hazır Qualcomm AI yığını: QNN (Qualcomm AI Engine Direct / QAIRT), Qualcomm'un mevcut, aktif olarak bakımı yapılan cihaz içi yapay zeka çalışma zamanıdır ve SNPE için önerilen yedektir.

QNN Dışa Aktarım Formatı

Ultralytics compiles YOLO models to QNN locally using the ONNX Runtime QNN Execution Provider (the pip-installable onnxruntime-qnn package, which bundles the QAIRT libraries). The exporter converts your model to ONNX, INT8-quantizes it with calibration data (the Hexagon NPU is an int8 accelerator), then initializes an ONNX Runtime session with context-binary caching enabled — this compiles the quantized graph into a QNN context binary embedded in <model>_qnn.onnx. No Qualcomm account, cloud upload, or separate SDK download is required.

Modelleri Qualcomm barındırmalı Snapdragon cihazlarında derleyip profillemek için Qualcomm hesabı gerektiren bulut tabanlı Qualcomm AI Hub'ın aksine, Ultralytics QNN dışa aktarımı tamamen kendi makinenizde, tek bir export(format="qnn") çağrısıyla çalışır. Kayıt, yükleme limitleri veya bekleme süreleri olmadan aynı QNN/QAIRT çalışma zamanı hedefini (Snapdragon CPU, Adreno GPU ve Hexagon NPU) elde edersin ve bu işlem doğrudan standart YOLO dışa aktarım iş akışına dahil olur.

Dışa aktarılan _qnn_model/ dizini, context-binary ONNX dosyasını ve sınıf isimlerini, görüntü boyutunu ve görevi tanımlayan bir metadata.yaml dosyasını içerir.

QNN Modellerinin Temel Özellikleri

  • INT8 Nicelleştirme: Model, ONNX Runtime QNN QDQ akışı ve bir kalibrasyon veri seti ile INT8'e nicelenir; bu, maksimum iş hacmi ve minimum boyut için Hexagon NPU'nun yerel hassasiyetiyle eşleşir. Model nicelleştirme hakkında daha fazla bilgi edin.
  • Tamamen Yerel Derleme: Context binary, tamamen kendi ana bilgisayarınızda oluşturulur; Qualcomm hesabı, API anahtarı veya buluta yükleme gerekmez.
  • Tam Snapdragon Hızlandırması: Tek bir birleşik çalışma zamanı ile Hexagon NPU (HTP), Adreno GPU veya CPU üzerinde çıkarım yap.
  • Geniş Cihaz Erişimi: Telefonlarda, PC'lerde (Windows on Snapdragon), otomotiv, XR ve gömülü ürünlerde kullanılan geniş Snapdragon platform yelpazesini hedefle.
  • Önceden Derlenmiş Context Binary: Bir context binary dosyasıyla dağıtım yapmak, cihaz üzerindeki grafik derleme işlemini en aza indirerek hedef cihazda model yükleme gecikmesini azaltır.
  • Kendi Kendine Yeten Çıktı: Dışa aktarılan dizin, kolay dağıtım için context-binary ONNX ve meta verileri içerir.

Desteklenen Görevler

QNN dışa aktarımı, YOLO26 anlamsal bölütleme dahil olmak üzere her model ailesinde mevcut olan standart görev setini destekler.

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

Export an Ultralytics YOLO model to QNN format for deployment on Snapdragon hardware. The context binary is finalized for a target Hexagon Tensor Processor (HTP) architecture, which you select with the name argument — the same argument used to target a chip in RKNN export.

Desteklenen HTP Mimarileri

Hedef mimariyi name ile ilet (örneğin name="73"). Geçerli değerler:

nameHexagon HTPSnapdragon platformu
68v68Snapdragon 865
69v69Snapdragon 888 / 8 Gen 1
73v73Snapdragon 8 Gen 2 (varsayılan)
75v75Snapdragon 8 Gen 3
79v79Snapdragon 8 Elite
Platform desteği

QNN dışa aktarımı onnxruntime-qnn paketini kullanır. Kararlı tekerlekler (wheels) Windows (x64 ve ARM64) ve Linux ARM64 (aarch64) için yayınlanmıştır; Linux x86-64 tekerleği ONNX Runtime nightly feed üzerinde mevcuttur. macOS tekerleği yoktur; macOS üzerinde ONNX Runtime'ı --use_qnn ile kaynaktan derle veya dışa aktarımı desteklenen bir platformda çalıştır. QNN context-binary oluşturma, x64 bir ana bilgisayarda çalışır (dışa aktarım adımı için Snapdragon cihaz gerekmez).

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 kütüphanelerini içeren) onnxruntime-qnn paketi, ilk dışa aktarımda otomatik olarak kurulur. Kurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzumuza göz at. YOLO için gerekli paketleri kurarken herhangi bir zorlukla karşılaşırsan, çözümler ve ipuçları için Yaygın Sorunlar kılavuzumuza bak.

Kullanım

QNN formatı Dışa Aktarma, Tahmin ve Doğrulama 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ı üzerinde çalışır. Modelini dışa aktar, ardından çıkarım yapmak veya doğruluğunu test etmek için dışa aktarılan modeli bir Snapdragon cihazına yükle.

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

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

# Export to Qualcomm QNN format (INT8, enforced automatically), targeting an HTP architecture via 'name'
# 'name' can be one of 68, 69, 73, 75, 79 (Snapdragon 865, 888/8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite)
model.export(format="qnn", name="73")  # creates 'yolo26n_qnn_model/'
Tahmin Et (Predict)
from ultralytics import YOLO

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

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

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

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

Dışa Aktarma Argümanları

ArgümanTürVarsayılanAçıklama
formatstr'qnn'Dışa aktarılan model için hedef format, Qualcomm QNN çalışma zamanıyla uyumluluğu tanımlar.
imgszint veya tuple640Desired image size for the model input. Can be an integer for square images or a tuple (height, width).
batchint1Oluşturulan QNN context binary içerisine gömülen dışa aktarım modeli yığın boyutunu belirtir.
namestr'73'Hedef Hexagon HTP mimari sürümü: 68, 69, 73, 75 veya 79 (Snapdragon 865, 888/8 Gen 1, 8 Gen 2, 8 Gen 3, 8 Elite). Context binary bu mimari için tamamlanır.
int8boolTrueINT8 nicelleştirmeyi etkinleştirir. QNN HTP dışa aktarımı için gereklidir — belirtilmezse otomatik olarak True olarak ayarlanır.
datastr'coco8.yaml'INT8 kalibrasyonu için kullanılan veri kümesi yapılandırma dosyası. Kalibrasyon görüntü kaynağını belirtir.
fractionfloat1.0INT8 nicelleştirmesi 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).
Hassasiyet

The Hexagon NPU (HTP) is an int8 accelerator, so QNN export quantizes the model to INT8 using the ONNX Runtime QDQ quantization flow with calibration images from data. int8=True is enforced automatically.

Dışa aktarma süreci hakkında daha fazla ayrıntı için dışa aktarma hakkındaki Ultralytics dokümantasyon sayfasına git.

Çıktı Yapısı

Başarılı bir dışa aktarımdan sonra, aşağıdaki düzene sahip bir model dizini oluşturulur:

yolo26n_qnn_model/
├── yolo26n_qnn.onnx   # ONNX wrapping the precompiled QNN context binary
└── metadata.yaml      # Model metadata (classes, image size, task, etc.)

yolo26n_qnn.onnx dosyası QNN context binary'sini gömer ve Snapdragon cihazında QNN Execution Provider ile ONNX Runtime tarafından yüklenir. metadata.yaml, Ultralytics hattı tarafından kullanılan sınıf isimlerini, görüntü boyutunu ve diğer bilgileri içerir.

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

QNN modelleri Qualcomm Snapdragon donanımı üzerinde çalışır, bu da cihaz üzerinde model dağıtımını basitleştirir. onnxruntime-qnn yüklü bir Snapdragon cihazında, dışa aktarılan modeli doğrudan Ultralytics API ile çalıştır (yolo predict/yolo val, yukarıdaki Kullanım kısmına bak) — Ultralytics, context binary dosyasını ONNX Runtime QNN Execution Provider aracılığıyla yükler ve HTP (NPU), GPU veya CPU arka ucunu seçer.

Özel iş akışları için, context-binary 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 onu kaydet:

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_model/yolo26n_qnn.onnx", sess_options=options)
outputs = session.run(None, {"images": input_tensor})  # input_tensor: float32 NCHW

QNN context binary önceden derlendiği için, oturum grafiği cihaz üzerinde yeniden derlemeden hızlıca yükler.

Önerilen İş Akışı

  1. Modelini Ultralytics Eğitim Modu kullanarak Eğit
  2. Dışa aktar: Desteklenen bir platformda (Windows veya Linux ARM64) model.export(format="qnn") kullanarak QNN formatına dışa aktar
  3. Dağıt: Dışa aktarılan _qnn_model/ dizinini Snapdragon cihazına gönder
  4. Çalıştır: HTP, GPU veya CPU arka ucunu seçerek ONNX Runtime ve QNN Execution Provider ile çıkarım yap

Gerçek Dünya Uygulamaları

Qualcomm Snapdragon donanımı üzerinde çalışan YOLO modelleri, çok çeşitli uç yapay zeka uygulamaları için uygundur:

  • Akıllı Telefonlar: NPU hızlandırması ile kamera ve fotoğraf uygulamalarında gerçek zamanlı nesne algılama ve sahne anlama.
  • Windows on Snapdragon: Buluta yükleme yapmadan Copilot+ PC'lerde cihaz üzerinde bilgisayarlı görü.
  • Otomotiv: Snapdragon Digital Chassis platformlarında sürücü izleme, yolcu tespiti ve ADAS özellikleri.
  • XR ve Giyilebilir Cihazlar: AR/VR gözlükler ve akıllı gözlükler için düşük güç tüketen, 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, Ultralytics YOLO modellerini ONNX Runtime QNN Execution Provider ile yerel olarak Qualcomm QNN formatına nasıl dışa aktaracağını öğrendin. Dışa aktarım hattı, modelini ONNX'e dönüştürür ve ardından ana bilgisayarında bir QNN context binary dosyasına 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 üretir.

Ultralytics YOLO ile Qualcomm'un cihaz içi yapay zeka 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 sağlar.

Diğer cihaz içi ve mobil dağıtım hedefleri için ilgili ONNX, CoreML, NCNN, TFLite, ExecuTorch, RKNN, Sony IMX500 ve TensorRT dışa aktarım kılavuzlarına bak. Dağıtım öncesi formatları karşılaştırmak için Kıyaslama modunu kullan. Formatların ve seçeneklerin tam listesi için Dışa aktarım modu belgelerini ve entegrasyon kılavuzu sayfasını ziyaret et.

SSS

Ultralytics YOLO modelimi QNN formatına nasıl dışa aktarırım?

Modelini Python'da export() metodunu kullanarak veya CLI üzerinden format="qnn" ile dışa aktarabilirsin. Dışa aktarım önce bir ONNX modeli oluşturur, ardından ONNX Runtime QNN Execution Provider kullanarak onu yerel olarak bir QNN context binary dosyasına derler. onnxruntime-qnn paketi ilk dışa aktarımda otomatik kurulur.

Örnek
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="qnn")

Qualcomm hesabına veya bulut erişimine ihtiyacım var mı?

Hayır. QNN dışa aktarımı, tamamen senin yerel makinende, QAIRT kütüphanelerini içeren onnxruntime-qnn paketi ile çalışır. Hiçbir Qualcomm hesabı, API anahtarı veya ağ erişimi gerekmez.

Ultralytics QNN dışa aktarımı, Qualcomm AI Hub ile nasıl karşılaştırılır?

Qualcomm AI Hub, modelleri barındırılan Snapdragon cihazlarında derlemek, profillemek ve kıyaslamak için kullanılan 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 context binary dosyasını ONNX Runtime QNN Execution Provider ile yerel olarak derler; hesap gerekmez, yükleme gerekmez ve bekleme süresi yoktur. Bir .pt modelinden Snapdragon'a hazır bir yapıya doğrudan standart YOLO dışa aktarım iş akışı içinde geçmenin en hızlı yoludur.

Hangi platformlarda dışa aktarım yapabilirim?

onnxruntime-qnn, Windows (x64 ve ARM64) ve Linux ARM64 (aarch64) için kararlı tekerlekler ve ONNX Runtime nightly feed üzerinde Linux x86-64 tekerleği sunar. macOS'ta tekerlek yoktur; ONNX Runtime'ı --use_qnn ile kaynaktan derle veya desteklenen bir platformda dışa aktar. Context-binary oluşturma, x64 ana bilgisayarda çalışır ve fiziksel bir Snapdragon cihazı gerektirmez.

YOLO'yu Qualcomm Snapdragon NPU'da nasıl çalıştırırım?

model.export(format="qnn") ile dışa aktar, ortaya çıkan yolo26n_qnn_model dizinini Snapdragon cihazına kopyala ve yolo predict model=yolo26n_qnn_model source=image.jpg (veya yolo val) komutunu çalıştır. Ultralytics, context binary dosyasını ONNX Runtime QNN Execution Provider aracılığıyla yükler ve onu Hexagon NPU üzerinde çalıştırır — Dışa Aktarılan YOLO QNN Modellerini Dağıtma bölümüne bak.

QNN ve SNPE arasındaki fark nedir?

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

QNN modelini yolo predict ve yolo val ile çalıştırabilir miyim?

Evet, onnxruntime-qnn yüklü bir Qualcomm Snapdragon cihazında — YOLO("yolo26n_qnn_model"), context binary dosyasını QNN Execution Provider aracılığıyla yükler ve diğer tüm formatlar gibi predict/val işlemlerini çalıştırır. QNN donanımı olmayan x86 bir ana bilgisayarda model çalıştırılamaz, çünkü context binary Snapdragon NPU'yu hedefler.

QNN dışa aktarımının çıktısı nedir?

The export creates a directory (e.g., yolo26n_qnn_model/) containing the context-binary ONNX (yolo26n_qnn.onnx) and a metadata.yaml with class names, image size, and task information.

Contributors

Yorumlar