Non-Maximum Suppression (NMS)
Maksimum Olmayan Bastırmanın (NMS) nesne algılamadaki yinelenen sınırlayıcı kutuları nasıl ortadan kaldırdığını öğren. Ultralytics YOLO26'nın yerel uçtan uca NMS sağladığını keşfet.
Maksimum Olmayan Bastırma (NMS), bir modelin ürettiği ham tahminleri iyileştirmek için nesne algılama süreçlerinde kullanılan bir son işleme tekniğidir. Bir nesne algılama modeli bir görüntüyü analiz ettiğinde, genellikle tek bir nesne için her birine ilişkili bir güven skoru atanmış, birbiriyle örtüşen birden fazla sınırlayıcı kutu üretir. Bu gereksiz tahminler, modelin aynı özelliği biraz farklı ölçeklerde veya konumlarda algılayabilmesi 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 ve nihai çıktının temiz, kesin ve yinelemelerden arındırılmış olmasını sağlar.
Maksimum Olmayan Bastırma Nasıl Çalışır#
NMS algoritması, aday sınırlayıcı kutuların ve bunlara karşılık gelen güven skorlarının bulunduğu bir liste üzerinde çalışır. Amaç, bir nesne için en iyi kutuyu seçmek ve büyük ölçüde bununla örtüşen diğer kutuları bastırarak (kaldırarak) ortadan kaldırmaktır; çünkü bunlar büyük olasılıkla aynı nesnenin yinelenen algılamalarıdır. Süreç genellikle şu adımları izler:
-
Filtreleme: Zayıf tahminleri hemen kaldırmak için güven skorları belirli bir eşik değerinin (ör. 0.25) altında olan tüm sınırlayıcı kutuları ortadan kaldırın.
-
Sıralama: Kalan kutuları güven skorlarına göre azalan düzende sıralayın.
-
Seçim: En yüksek güven skoruna sahip kutuyu geçerli bir algılama olarak seçin.
-
Karşılaştırma: Bu seçili kutuyu, iki kutu arasındaki örtüşmeyi ölçen bir metrik olan Kesişim/Birleşim Oranı (IoU) kullanarak kalan diğer tüm kutularla karşılaştırın.
-
Bastırma: Seçili kutu ile başka bir kutu arasındaki IoU önceden tanımlanmış bir eşik değerini (ör. 0.45) aşarsa, skoru daha düşük olan kutu yinelenen bir algılama olarak değerlendirilir ve kaldırılır.
-
Yineleme: Tüm kutular işlenene kadar henüz bastırılmamış veya seçilmemiş, en yüksek skora sahip bir sonraki kutuyla işlemi tekrarlayın.
Gerçek Dünya Uygulamaları#
NMS, hassasiyetin kritik olduğu ve yinelenen algılamaların sonraki sistemlerin kafasını karıştırabileceği senaryolarda gereklidir.
- Otonom Sürüş: Otonom araç sistemlerinde kameralar yayaları, diğer araçları ve trafik işaretlerini algılar. Bir model, tek bir yaya için birbirinden biraz farklı üç kutu tahmin edebilir. NMS, aracın planlama sisteminin bu yaya için yalnızca bir koordinat almasını sağlayarak "hayalet" engellerin neden olduğu düzensiz frenleme veya rota planlama hatalarını önler.
- Perakende Envanter Yönetimi: Bir raftaki ürünleri saymak için bilgisayarlı görü kullanıldığında, ürünler genellikle birbirine çok yakın yerleştirilir. NMS olmadan, örtüşen tahminler nedeniyle tek bir gazlı içecek kutusu iki kez sayılabilir ve bu da stok seviyelerinin hatalı hesaplanmasına yol açar. NMS, envanter sayımının gerçeği yansıtmasını sağlamak için bu algılamaları iyileştirir.
PyTorch ile NMS Uygulaması#
Birçok modern çerçeve NMS işlemini dahili olarak gerçekleştirse de uygulamayı anlamak, parametreleri ayarlamana yardımcı olur. Aşağıdaki örnek, PyTorch kütüphanesini kullanarak NMS'nin nasıl uygulanacağını gösterir:
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 ve Uçtan Uca Algılama#
Geleneksel olarak NMS, ana sinir ağının dışında yer alan ve çıkarım gecikmesi ekleyen zorunlu bir "temizleme" adımı olmuştur. Ancak alan, uçtan uca mimarilere doğru gelişmektedir.
- Standart NMS: IoU eşiğinin manuel olarak ayarlanmasını gerektiren buluşsal bir süreçtir. Eşik çok düşükse birbirine yakın geçerli nesneler gözden kaçabilir (düşük geri çağırma). Çok yüksekse yinelemeler kalır (düşük kesinlik).
- Uçtan Uca Modeller: YOLO26 gibi yeni nesil modeller, yerel olarak uçtan uca olacak şekilde tasarlanmıştır. Bu modeller eğitim sırasında nesne başına tam olarak bir kutu tahmin etmeyi öğrenerek NMS sürecini etkili bir şekilde kendi içinde barındırır. Böylece harici son işleme gereksinimi ortadan kalkar; Ultralytics Platformu üzerinde daha hızlı çıkarım hızları ve daha basit dağıtım işlem hatları elde edilir.
İlgili Kavramlar#
- Soft-NMS: Örtüşen kutuların kesin olarak kaldırılmadığı, bunun yerine güven skorlarının düşürüldüğü bir çeşittir. Bu sayede, skorları azaltma işleminden sonra yeterince yüksek kalırsa bir miktar örtüşen nesneler (kalabalıktaki insanlar gibi) algılanmaya devam edebilir.
- Çapa Kutuları: Birçok algılayıcı tarafından nesne boyutunu tahmin etmek için kullanılan önceden tanımlanmış kutu şekilleridir. NMS, bu çapalar kullanılarak iyileştirilen nihai tahminlere uygulanır.
- Kesişim/Birleşim Oranı (IoU): İki kutunun ne kadar örtüştüğünü belirlemek için NMS tarafından kullanılan ve bastırma kararının eşiği olarak görev yapan matematiksel formüldür.









