Non-Maximum Suppression (NMS)
Maksimum olmayan bastırma (NMS), yinelenen ve üst üste binen kutuları kaldırarak her nesnenin tek bir tespitle temsil edilmesini sağlar. Nasıl çalıştığını, nasıl ayarlanacağını ve NMS kullanmayan modelleri öğren.
Maksimum olmayan bastırma (NMS), bir dedektörün ham ve üst üste binen tahminlerini her nesne için tek bir kutuya dönüştüren son işleme adımıdır. Yoğun bir nesne algılama modeli, her görüntü için binlerce aday sınırlayıcı kutuya puan verir ve komşu adayların birkaçı genellikle aynı nesne üzerinde, biraz farklı konum ve puanlarla etkinleşir. NMS, her örtüşen kümedeki en yüksek güvenli kutuyu tutar ve geri kalanını, kutuların kopya sayılacak kadar örtüşüp örtüşmediğine karar vermek için kesişim/birleşim (IoU) kullanarak bastırır.
Maksimum Olmayanların Bastırılması Nasıl Çalışır?#
Standart sürüm olan açgözlü NMS, önce güven eşiğinin altındaki adayları eler ve kalanları puanlarına göre sıralar. Ardından en üstteki kutuyu tutar, IoU'su bu kutuyla IoU eşiğini aşan tüm kutuları kaldırır ve geriye hiç kutu kalmayana kadar hâlâ kalan en iyi kutuyla işlemi yineler. Dedektörler NMS'yi genellikle her sınıf için ayrı ayrı çalıştırır; böylece bir insan kutusu, üst üste gelen bir bisiklet kutusunu bastırmaz.
torchvision'ın nms, tek bir sınıf için açgözlü NMS uygular ve tuttuğu kutuların puana göre sıralanmış indekslerini döndürür.
import torch
from torchvision.ops import nms
# Her biri bir güven puanına sahip aday kutular: [x1, y1, x2, y2]
boxes = torch.tensor(
[
[100, 100, 200, 200], # A
[105, 105, 195, 195], # B: A'nın neredeyse aynısı (IoU 0.81)
[300, 300, 400, 400], # C: ayrı bir nesne
],
dtype=torch.float32,
)
scores = torch.tensor([0.90, 0.80, 0.95])
# IoU'su daha yüksek puanlı tutulan bir kutuyla 0.5'i aşan her kutuyu bastır
keep = nms(boxes, scores, iou_threshold=0.5)
print(keep.tolist())Çıktı [2, 0] olur: En yüksek puana sahip olduğu için önce C kutusu tutulur; C ile örtüşmediği için A kutusu tutulur; A ile IoU değeri 0.81 olduğu için B kutusu kaldırılır.
Eşik Değerlerini Ayarlama#
Güven eşiği, bastırma başlamadan önce zayıf adayları eler. IoU eşiği, hangi miktarda örtüşmenin kopya sayılacağını belirler. Eşik çok düşük olduğunda kalabalıktaki insanlar gibi birbirine yakın duran iki gerçek nesne tek bir algılamada birleşir ve duyarlılık düşer. Eşik çok yüksek olduğunda yinelenen kutular kalır ve kesinlik düşer. Sınıftan bağımsız NMS, sınıfları ne olursa olsun herhangi bir kutunun diğerini bastırmasına izin verir; böylece model bir nesneye "araba" ve "kamyon" gibi benzer iki sınıf verdiğinde çift etiketler kaldırılır.
NMS'nin Sınırlamaları#
- Kalabalık sahneler: Sabit bir IoU eşiği, yinelenen bir kutu ile ilk nesneyle gerçekten örtüşen ikinci bir nesneyi ayıramaz; bu yüzden yoğun biçimde örtülen nesneler bastırılır.
- Sabit buluşsal yöntem: Eşik elle seçilir, eğitilmiş ağın dışında kalır ve verilerden öğrenilmez.
- Gecikme ve dağıtım: Açgözlü döngü ağdan sonra çalışır ve maliyeti aday sayısıyla artar; bu da çıkarım gecikmesine yol açar. NMS'yi model grafiğine ekleyemeyen dışa aktarma biçimleri ham adayları çıkarır ve uygulamanın NMS'yi kendisinin çalıştırması gerekir.
NMS Çeşitleri ve NMS'siz Algılama#
Soft-NMS, örtüşen kutuları silmek yerine örtüşme miktarına bağlı olarak puanlarını düşürür; böylece kalabalıklarda daha fazla nesne kurtarılır. Distance-IoU kaybıyla birlikte önerilen DIoU-NMS, kutu merkezleri arasındaki mesafeyi de hesaba katar; bu nedenle merkezleri birbirinden uzak olan iki kutunun bastırılma olasılığı daha düşüktür.
Uçtan uca algılayıcılar bu adımı tamamen ortadan kaldırır. DETR tahminler ile etiketler arasında bire bir Macar eşleştirmesiyle eğitilir; böylece her nesne tam olarak bir tahmin alır ve YOLOv10 gerçek zamanlı YOLO modellerine bire bir başlık kazandırdı. YOLO26 her iki başlık türünü de eğitir ve varsayılan olarak NMS uygular; çünkü bire çok başlığı biraz daha yüksek puan alır: YOLO26n için 40,1'e kıyasla 40,9 mAP50-95 puanı COCO üzerinde elde edilir. nms=False değerini geçirmek, görüntü başına en fazla 300 nihai kutu üreten ve NMS aşaması olmadan çalışan bire bir başlığı seçer; uçtan uca algılama kılavuzu tahmin ve dışa aktarma için bu yöntemi gösterir.










