Dağıtım Hedefi Seç
Cihazı, gecikme bütçesini ve filoyu tek bir çalışma zamanı ve dışa aktarma biçimi seçmek için değerlendir; ardından bunu cihazda doğrula.

Aynı YOLO26n, YOLO26 kıyaslamalarında ONNX Runtime ile CPU'da görüntü başına 38,9 ms, TensorRT ile T4 GPU'da 1,7 ms sürüyor. Yanlış çalışma zamanını seçersen ya ihtiyacından çok daha fazla donanım için ödeme yaparsın ya da yetişemeyen kameraları kullanıma alırsın. Bu ders, seçimi cihazın kendisinde ölçülen sayılarla savunabileceğin, on dakikada verilecek bir karara dönüştürüyor.
Uygulamalı
Cihazdan Başla#
Çalışma zamanı alışkanlığa değil, çıkarımın nerede çalıştığına göre belirlenir. Ağacı en baştan izle ve ilk eşleşmede dur:
Her çalışma zamanı, Dışa aktarma modu içinde bir format= değerine karşılık gelir:
| Hedef | Çalışma zamanı | format= | Dikkat et |
|---|---|---|---|
| NVIDIA GPU, Jetson | TensorRT | engine | Motor yalnızca onu oluşturan GPU ailesinde ve TensorRT sürümünde çalışır |
| Intel CPU, iGPU, NPU | OpenVINO | openvino | Intel için ayarlanmıştır; başka bir yerde kullanmadan önce ölçüm yap |
| Herhangi bir CPU veya GPU | ONNX Runtime | onnx | Yürütme sağlayıcısını açıkça seç |
| iPhone, iPad, Mac | CoreML | coreml | Dışa aktarma Windows'ta değil, macOS veya Linux'ta çalışır |
| Android, gömülü sistem | LiteRT | litert | INT8, kalibrasyon için data gerektirir |
| Snapdragon NPU | Qualcomm QNN | qnn | Yalnızca kuantize edilmiş dışa aktarım; Hexagon hedefini name olarak belirt |
| Raspberry Pi, ARM CPU | NCNN | ncnn | Raspberry Pi kılavuzundaki en hızlı biçim |
| Tarayıcı | ONNX Runtime Web | onnx | n veya s modellerini kullan |
Yeni Apple platformlarında Apple'ın daha yeni Core AI biçimine de dışa aktarabilirsin (format=coreai, macOS 26+ Apple silicon veya x86-64 Linux'ta dışa aktarılır). Dışa aktarma konusunda yeni misin? Dağıtım için Dışa Aktarma dersi temel bilgileri ele alıyor.
Çıkarım sunucularını hiç çalıştırmak istemiyorsan Ultralytics Platform, modeli 42 bölgeden birinde özel bir uç nokta olarak dağıtır ve profilindeki Deployments sekmesi her birinin nerede çalıştığını gösterir:

Bu yol Bir Uç Noktayı Dağıtma ve Çağırma bölümünde ele alınıyor. Bu kursun geri kalanı modeli kendin çalıştırdığın durumlara yönelik.
FPS Hedefini Milisaniye Bütçesine Dönüştür#
"Gerçek zamanlı" bir gereksinim değil; bir sayı gereksinimdir. Herhangi bir şeyi kıyaslamadan önce hesapla:
| Geçiş | Örnek: kamera başına 20 FPS |
|---|---|
| Kare bütçesi = 1000 ÷ FPS | 50 ms |
| Çözme işlemi çıkar (RTSP, 1080p) | yaklaşık 10 ms |
| İzleme, sayma ve hedef işlemlerini çıkar | yaklaşık 5 ms |
| Ani yükler için %20 pay çıkar | 10 ms |
| Modele kalan | yaklaşık 25–30 ms |
Ardından şu karar kurallarını uygula:
- YOLO26n cihazın CPU'sunda model bütçeni aşıyorsa, başka bir şey yapmadan önce hızlandırıcıya (GPU, iGPU, NPU) geç veya
imgszboyutunu küçült; YOLO26 kıyaslamaları, YOLO26n için CPU ONNX'te 38.9 ms, TensorRT ile T4 üzerinde 1.7 ms değerlerini listeliyor. - Bir cihazın birden fazla kameraya hizmet vermesi gerekiyorsa, model bütçesini kamera sayısına böl.
- Cihaz filosunda bir avuçtan fazla cihaz türü varsa, cihaza özel derleme gerektirmeyen çalışma zamanlarını tercih et veya her cihaz sınıfı için ayrı bir derleme planla.
- Çağıran kod Swift, Kotlin veya C++ ile yazılmışsa, karar vermeden önce çalışma zamanının bu dil için SDK'sını kontrol et.
Adayları Cihazda Kıyasla#
Teknik özellik belgeleri ve başkalarının kıyaslamaları başlangıç noktasıdır. Karar, dağıtım yapacağın donanımda ve ortalama değere göre değil yavaş karelere bakılarak verilir: ortanca değerde hızlı olup her yirmi kareden birinde takılan çalışma zamanı yine de kare düşürür. Bu betik her adayı dışa aktarır, gerçek bir kare üzerinde 100 çıkarımın süresini ölçer ve her birini 95. yüzdelik dilime (p95) göre değerlendirir:
from ultralytics import YOLO
from ultralytics.utils.downloads import safe_download
BUDGET_MS = 30 # the model's share of a 20 FPS frame budget
CANDIDATES = ("onnx", "openvino") # runtimes the decision tree allows on this machine
if __name__ == "__main__": # exports and inference can start worker processes on macOS and Windows
frame = str(safe_download("https://ultralytics.com/images/bus.jpg")) # use a real frame from your camera
for fmt in CANDIDATES:
model = YOLO(YOLO("yolo26n.pt").export(format=fmt))
for _ in range(5): # warm up: the first calls include one-time setup
model(frame, verbose=False)
runs = sorted(model(frame, verbose=False)[0].speed["inference"] for _ in range(100))
p50, p95 = runs[49], runs[94]
verdict = "meets" if p95 <= BUDGET_MS else "misses"
print(f"{fmt:9s} p50 {p50:5.1f} ms p95 {p95:5.1f} ms {verdict} the {BUDGET_MS} ms budget")Bu kursu test etmek için kullanılan Apple silicon dizüstü bilgisayarda, CPU'yu başka işler de kullanırken:
onnx p50 30.0 ms p95 46.4 ms misses the 30 ms budget
openvino p50 22.8 ms p95 113.5 ms misses the 30 ms budgetSatır satır incele:
speed["inference"], çözme veya çizim işlemleri olmadan, modelin o kare için harcadığı süredir; bu nedenle çalışma zamanlarını adil biçimde karşılaştırır.- OpenVINO ortanca değerde kazanıyor, p95'te ise iki kattan fazla farkla kaybediyor. Ortalamalara göre karar verseydin yoğun anlarda takılan çalışma zamanını dağıtıma çıkarırdın; p95'e göre karar verildiğinde bu makinede daha kararlı seçenek ONNX Runtime.
- İkisi de bütçeyi aşıyor; bu nedenle burada sıradaki adım başka bir CPU çalışma zamanı denemek değil, daha küçük bir
imgszkullanmak, hızlandırıcıya geçmek veya cihaz başına kamera sayısını azaltmak.
Biçimler arasında hızlı bir doğruluk ve hız taraması için Benchmark modu her biçimi dışa aktarır, doğrular ve sürelerini ölçer:
yolo benchmark model=yolo26n.pt data=coco8.yaml imgsz=640 format=onnxMakinenin desteklediği tüm biçimleri taramak için format= değerini kaldır. COCO8'de yalnızca dört doğrulama görseli bulunur; bu nedenle mAP sütununu hızlı bir işlevsellik testi olarak değerlendir ve doğruluk kararlarında kendi veri kümesi YAML dosyanı kullan.
Yaygın Hatalar#
Belirti: Model iş istasyonunda 60 FPS'ye ulaştı, ancak cihazda kare atlıyor. Çözüm: Dağıtım donanımında veya bulabildiğin en yakın makinede kıyaslama yap ve üretimde karşılaşacağı yük altında (diğer süreçler, diğer kameralar) çalıştır.
Belirti: Veri merkezi GPU'sunda oluşturulan bir .engine, Jetson Orin'de yüklenemiyor. Çözüm: Kurulum sırasında hedef cihazda oluştur (Platform dışa aktarma belgelerine göre YOLO26n FP16 derlemesi Jetson Orin'de yaklaşık 5 dakika sürer) veya her cihaz sınıfı ve TensorRT sürümü için ayrı bir derleme tutup herhangi bir cihazın yeniden derleme yapabilmesi için .pt ya da .onnx dosyasını gönder.
yolo benchmark, verdiğin imgsz değerinde ölçüm yapar. Üretim imgsz=1280 değerinde çalışıyorsa 1280'de kıyaslama yap: hesaplama piksel sayısıyla arttığından 640 sonuçları, 1280 dağıtımındaki performansı yaklaşık 4 kat olduğundan düşük gösterir.
Uç Cihazlar Dört Soru Daha Getirir#
Raspberry Pi, NVIDIA Jetson ve Jetson'da DeepStream kılavuzlarında yaygın hedefler ayrıntılı olarak ele alınıyor. Bir uç cihazı seçmeden önce şu soruları yanıtla:
- Soğuk başlangıç: TensorRT motoru nerede derleniyor ve kim bekliyor?
- Güç ve ısı: Cihaz kasası modeli gün boyunca tam FPS'de çalıştırabilir mi?
- Bellek: Modelin yanında kare arabellekleri ve izleyici durumu için yer var mı? INT8, modelin kullandığı belleği yarıya indirir.
- Güncellemeler: Yeni bir
best.pt1.000 cihaza nasıl ulaşacak? Bir Docker görüntüsü cihazların tutarlı olmasını sağlar.
Çözümü göster
Perakende analitiği dağıtımı için örnek bir özet:
| Soru | Yanıt |
|---|---|
| Cihaz | Intel Core Ultra CPU'lara sahip, ayrı GPU'su olmayan 40 mağaza içi mini PC |
| FPS ve kameralar | Kamera başına 10 FPS, kutu başına 2 kamera |
| Çağıran | Linux üzerinde Python hizmeti |
| Filo | Docker görüntüsüyle güncellenen 40 kutu |
Bütçe: 1000 ÷ 10 = kare başına 100 ms; çözme ve izleme için yaklaşık 15 ms ile %20 payı çıkarınca yaklaşık 65 ms kalıyor ve bu değer iki kamera arasında paylaşılıyor; yani çıkarım başına yaklaşık 30 ms. Karar ağacı OpenVINO'yu (Intel CPU) ve yedek seçenek olarak ONNX Runtime'ı gösteriyor. Buna göre bir mağaza kutusunda:
python pick_runtime.py # CANDIDATES = ("onnx", "openvino"), BUDGET_MS = 30OpenVINO belgelerindeki Core Ultra 7 155H CPU kıyaslamasında YOLO26n için OpenVINO FP32 ile 13.4 ms sonucu veriliyor; dolayısıyla yolo26n rahatça sığmalı. Her iki kamera hattı da çalışırken gerçek kutudaki p95 değeri 30 ms'nin altındaysa OpenVINO'yu dağıtıma çıkar. Bütçeyi aşarsa donanım satın almadan önce kutunun entegre GPU'sunu device="intel:gpu" ile dene.