Real-time Inference
Gerçek zamanlı çıkarım, her tahmini bir sonraki girdi gelmeden önce, örneğin 30 FPS'de kare başına 33 ms içinde döndürür. Gecikme bütçeleri ve hızlandırma yöntemleri.
Gerçek zamanlı çıkarım, eğitilmiş bir modeli canlı girdiler üzerinde çalıştırıp bir sonraki girdi gelmeden her tahmini döndürmektir; böylece sistem, bilgi hâlâ güncelse harekete geçebilir. Saniyede 30 kare (FPS) akış sağlayan bir kamera için görüntüyü okumaktan nihai sonucu üretmeye kadar her işleme kare başına 33.3 milisaniye kalır; 60 FPS'de bu süre 16.7 ms'ye iner. Her uygulamanın kendi son tarihi vardır: aracın algılama sistemi, konveyör bandı denetim kamerası ve görüntülü arama arka plan filtresi farklı süre sınırlarıyla gerçek zamanlı çalışır.
Gecikme Bütçesi#
Önemli olan uçtan uca çıkarım gecikmesidir: kareyi yakalama, yeniden boyutlandırıp normalleştirerek ön işleme tabi tutma, modelin ileri geçişi ve kutuları çözme ile maksimum olmayan bastırma (NMS) gibi son işleme adımları. Toplam süre kare aralığını aşarsa işlenmemiş kareler birikir ve çıktı canlı sahnenin giderek daha gerisinde kalır. Bu yüzden canlı iş akışları genellikle güncelliğini yitirmiş kareleri atar ve her zaman en yeni kare üzerinde çalışır. Gerçek zamanlı bilişim, bir son tarihin kaçırılmasının arıza sayıldığı hava yastığı denetleyicileri gibi katı gerçek zamanlı sistemleri, ara sıra gecikmenin tolere edildiği yumuşak gerçek zamanlı sistemlerden ayırır. Bilgisayarlı görü uygulamalarının çoğu yumuşak gerçek zamanlıdır: atlanan bir kare çıktı kalitesini anlık olarak düşürür, bir sonraki kare ise kaliteyi yeniden yükseltir.
Bu kod parçası, küçük bir algılayıcı üzerinden kaydedilmiş bir videoyu akıtır ve kare başına ortalama süreyi 30 FPS bütçesiyle karşılaştırır:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
video = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
# stream=True yields each frame's result as soon as it is ready
frame_times = []
for result in model(video, stream=True):
# Preprocess, inference, and postprocess time for this frame, in milliseconds
frame_times.append(sum(result.speed.values()))
mean_ms = sum(frame_times) / len(frame_times)
print(f"{mean_ms:.1f} ms per frame ({1000 / mean_ms:.0f} FPS); a 30 FPS camera allows 33.3 ms")Ortalama sürenin 33.3 ms'nin altında olması, modelin çalıştırıldığı donanımda 30 FPS kameranın hızına yetiştiği anlamına gelir.
Gerçek Zamanlı ve Toplu Çıkarım#
- Gerçek zamanlı (çevrimiçi) çıkarım: Her girdiyi geldiği anda, genellikle her seferinde tek bir görüntüyü işler ve her bir tahminin gecikmesine göre değerlendirilir. Sürücü destek sistemleri, robot denetimi ve canlı video analitiği buna bağlıdır.
- Toplu (çevrimdışı) çıkarım: Çok sayıda girdiyi bir araya getirerek işler; saniyedeki girdi sayısıyla ölçülen verime ve maliyete göre değerlendirilir. Fotoğraf arşivini gece yeniden dizine eklemek veya geçen ayın görüntülerini analiz etmek toplu işlerdir. Büyük yığınlar GPU'yu daha fazla meşgul ederken her girdi sonucunu daha uzun süre bekler.
Çok sayıda kamera akışını işleyen sunucular genellikle bu iki yaklaşımın arasındadır: verimi artırırken her akışın kare süresi bütçesine uymak için farklı kameralardan gelen kareleri küçük yığınlar hâlinde gruplandırırlar.
Gerçek Dünya Uygulamaları#
- Otonom araçlar: Saatte 100 km hızla giden bir araç, her 100 ms'de 2.8 metre yol alır; dolayısıyla algılama gecikmesi durma mesafesini doğrudan artırır.
- Üretim denetimi: Konveyör üzerindeki kameralar her parçadaki kusurları algılar ve kusurlu parça mekanizmayı geçmeden önce ayıklama mekanizmasını tetiklemelidir.
- Robotik: Engel tespiti ve poz tahmini robotun denetim döngüsünde çalışır; daha yavaş algılama, robotun daha yavaş hareket etmesine neden olur.
- Video efektleri ve artırılmış gerçeklik: Görüntülü aramalardaki arka plan bulanıklaştırma ve AR katmanları her karede bölümleme veya izleme yapar; her gecikme, hareket eden kişinin gerisinde kalan bir katman olarak görünür.
Bir Modeli Yeterince Hızlı Hâle Getirmek#
- Daha küçük model veya girdi boyutu: Daha küçük bir model çeşidi, görüntü başına daha az işlem yapar. Evrişim hesaplaması piksel sayısıyla kabaca orantılı arttığından, girdi genişliğini ve yüksekliğini yarıya indirmek, küçük nesnelerde bir miktar doğruluk kaybı pahasına hesaplama yükünü yaklaşık dörtte bire düşürür.
- Model nicemleme: Ağırlıkları ve aktivasyonları FP32 yerine FP16 veya INT8 olarak saklamak, bellek trafiğini azaltır ve daha hızlı aritmetik birimlerinden yararlanır. Doğruluk kaybını küçük tutmak için INT8 genellikle bir dizi kalibrasyon görüntüsü gerektirir.
- Çıkarım motorları: Belirli bir donanım ailesi için tasarlanmış çalışma ortamı, katmanları birleştirir ve cihaza göre ayarlanmış çekirdekleri seçer; örneğin NVIDIA GPU'ları için TensorRT, Apple aygıtları için Core ML.
- Uç yapay zekâ: Modeli kamera veya gömülü bir modül üzerinde çalıştırmak, bulut çağrısındaki ağ gidiş dönüşünü ortadan kaldırır; yavaş bir bağlantıda bu süre tüm kare bütçesini aşabilir.
Çalışma zamanı ve donanım, gecikmeyi bir büyüklük mertebesinden fazla değiştirebilir: nano YOLO26 modeli, ONNX ile bir CPU üzerinde 640 piksel görüntü başına 38,9 ms, TensorRT ile NVIDIA T4 GPU üzerinde ise 1,7 ms sürer. Ultralytics dışa aktarma modu, eğitilmiş bir YOLO26 modelini TensorRT, OpenVINO, LiteRT ve diğer biçimlere dönüştürür; quantize=16 veya quantize=8 bağımsız değişkeni hedef cihaz için FP16 ya da INT8 ağırlıklar üretir.










