Non-Maximum Suppression (NMS)
Maksimum Olmayan Baskılama (NMS) yönteminin nesne tespitindeki kopya sınırlayıcı kutuları nasıl ortadan kaldırdığını öğren. Ultralytics YOLO26'nın yerel uçtan uca NMS'yi nasıl sağladığını keşfet.
Non-Maximum Suppression (NMS), bir modelin ham tahminlerini iyileştirmek için object detection içinde kullanılan bir son işlem tekniğidir. Bir nesne tespiti modeli bir görseli analiz ettiğinde, tek bir nesne için genellikle her biri ilişkili bir confidence score içeren birden çok çakışan bounding boxes üretir. Bu gereksiz tahminler, modelin aynı özelliği biraz farklı ölçeklerde veya konumlarda tespit edebilmesi nedeniyle ortaya çıkar. NMS, her nesne için yalnızca en doğru sınırlayıcı kutuyu tutup diğerlerini atarak bu çıktıyı filtreler, böylece nihai çıktının temiz, hassas ve kopyalardan arınmış olmasını sağlar.
Non-Maximum Suppression Nasıl Çalışır#
NMS algoritması, bir aday sınırlayıcı kutu listesi ve bunlara karşılık gelen güven puanları üzerinde çalışır. Amaç, bir nesne için en iyi kutuyu seçmek ve onunla önemli ölçüde örtüşen diğer kutuları baskılamak (kaldırmak)tır; çünkü bunlar büyük olasılıkla aynı nesnenin kopya tespitleridir. Süreç genellikle şu adımları izler:
-
Filtreleme: Zayıf tahminleri hemen kaldırmak için güven puanları belirli bir eşiğin (örneğin 0,25) altında olan tüm sınırlayıcı kutuları ele.
-
Sıralama: Kalan kutuları güven puanlarına göre azalan düzende sırala.
-
Seçim: En yüksek güven puanına sahip kutuyu geçerli bir tespit olarak seç.
-
Comparison: İki kutu arasındaki örtüşmeyi ölçen bir metrik olan Intersection over Union (IoU) kullanarak seçilen bu kutuyu kalan diğer tüm kutularla karşılaştır.
-
Baskılama: Seçilen kutu ile başka bir kutu arasındaki IoU önceden tanımlanmış bir eşiği (örneğin 0,45) aşarsa, düşük puanlı kutu kopya olarak kabul edilir ve kaldırılır.
-
Yineleme: Henüz baskılanmamış veya seçilmemiş olan bir sonraki en yüksek puanlı kutu ile tüm kutular işlenene kadar süreci tekrarla.
Gerçek Dünya Uygulamaları#
NMS, hassasiyetin çok önemli olduğu ve kopya tespitlerin alt sistemlerin kafasını karıştırabileceği senaryolarda gereklidir.
- Otonom Sürüş: Kendi kendine giden araba sistemlerinde, kameralar yayaları, diğer araçları ve trafik işaretlerini algılar. Bir model, tek bir yaya için biraz farklı üç kutu tahmin edebilir. NMS, aracın planlama sisteminin o yaya için yalnızca bir koordinat almasını sağlar ve "hayalet" engellerin neden olduğu hatalı frenleme veya yol planlama hatalarını önler.
- Retail Inventory Management: Bir raftaki ürünleri saymak için computer vision kullanırken, öğeler genellikle birbirine çok yakın yerleştirilir. NMS olmadan, çakışan tahminler nedeniyle tek bir kutu kola yanlışlıkla iki kez sayılabilir ve bu da yanlış stok seviyelerine yol açabilir. NMS, envanter sayımının gerçeği yansıtmasını sağlamak için bu tespitleri iyileştirir.
PyTorch ile NMS Uygulaması#
Birçok modern çerçeve NMS'i kendi içinde yönetse de, uygulamasını anlamak parametreleri ince ayarlamada yardımcı olur. Aşağıdaki örnek, PyTorch library kullanarak NMS'in nasıl uygulanacağını göstermektedir:
import torch
import torchvision.ops as ops
# Example bounding boxes: [x1, y1, x2, y2]
boxes = torch.tensor(
[
[100, 100, 200, 200], # Box A
[105, 105, 195, 195], # Box B (High overlap with A)
[300, 300, 400, 400], # Box C (Distinct object)
],
dtype=torch.float32,
)
# Confidence scores for each box
scores = torch.tensor([0.9, 0.8, 0.95], dtype=torch.float32)
# Apply NMS with an IoU threshold of 0.5
# Boxes with IoU > 0.5 relative to the highest scoring box are suppressed
keep_indices = ops.nms(boxes, scores, iou_threshold=0.5)
print(f"Indices to keep: {keep_indices.tolist()}")
# Output will likely be [2, 0] corresponding to Box C (0.95) and Box A (0.9),
# while Box B (0.8) is suppressed due to overlap with A.NMS vs. Uçtan Uca Tespit#
Geleneksel olarak NMS, ana sinir ağının dışında yer alan, inference latency ekleyen zorunlu bir "temizlik" adımı olmuştur. Bununla birlikte, alan uçtan uca mimarilere doğru evrilmektedir.
- Standard NMS: IoU eşiğinin manuel olarak ayarlanmasını gerektiren sezgisel bir süreçtir. Eşik çok düşükse, birbirine yakın geçerli nesneler kaçırılabilir (düşük recall). Çok yüksekse, kopyalar kalır (düşük precision).
- End-to-End Models: YOLO26 gibi yeni nesil modeller, doğal olarak uçtan uca olacak şekilde tasarlanmıştır. Eğitim sırasında nesne başına tam olarak bir kutu tahmin etmeyi öğrenirler ve NMS sürecini etkili bir şekilde içselleştirirler. Bu, harici son işlem ihtiyacını ortadan kaldırarak Ultralytics Platform üzerinde daha hızlı çıkarım hızları ve daha basit dağıtım hatları sağlar.
İlgili Kavramlar#
- Soft-NMS: Çakışan kutuların kesinlikle kaldırılmadığı, ancak güven skorlarının düşürüldüğü bir varyasyondur. Bu, kısmen çakışan nesnelerin (bir kalabalıktaki insanlar gibi), bozunumdan sonra skorları yeterince yüksek kalırsa yine de tespit edilmesini sağlar.
- Anchor Boxes: Nesne boyutunu tahmin etmek için birçok dedektör tarafından kullanılan önceden tanımlanmış kutu şekilleri. NMS, bu referans kutulardan (anchor) türetilen nihai tahminlere uygulanır.
- Intersection over Union (IoU): NMS tarafından iki kutunun ne ölçüde çakıştığını belirlemek için kullanılan ve bastırma için karar eşiği görevi gören matematiksel formül.






