Non-max Suppressie (NMS)
Objectdetectiemodellen voorspellen vaak meerdere overlappende begrenzingskaders voor hetzelfde object. Dit gebeurt omdat modellen een afbeelding op verschillende schalen en posities scannen, wat leidt tot overbodige voorspellingen. Non-Max Suppression (NMS) is een essentiële nabewerkingsstap die deze detecties verfijnt door de meest relevante begrenzingskaders te selecteren en onnodige te verwijderen.

Waarom meerdere overlappende kaders voorkomen
Objectdetectoren voorspellen meerdere begrenzingskaders voor één object vanwege:
- Anchor boxes: sommige modellen, zoals Faster R-CNN en YOLO, gebruiken vooraf gedefinieerde anchor boxes van verschillende groottes, wat leidt tot meerdere detecties van hetzelfde object;
- Sliding window-benaderingen: sommige detectiemethoden scannen een afbeelding in kleine regio's, waardoor herhaalde detecties van een object binnen overlappende gebieden ontstaan;
- Hoge vertrouwensscores: het model kent vertrouwensscores toe aan elke voorspelling, en vergelijkbare voorspellingen met hoge scores kunnen aanzienlijk overlappen.
Als deze overbodige kaders niet worden gefilterd, kan dit de prestaties van objectdetectie negatief beïnvloeden door de computationele complexiteit te verhogen en het aantal objecten onbetrouwbaar te maken.
Werking van Non-Max Suppression
NMS wordt toegepast om dubbele detecties te verwijderen en de meest betrouwbare begrenzingskader te behouden. Het volgt deze stappen:
- Score sortering: alle voorspelde begrenzingskaders rangschikken in aflopende volgorde op basis van hun betrouwbaarheidscores;
- Selecteren van de beste box: het kader met de hoogste score kiezen en toevoegen aan de uiteindelijke lijst met detecties;
- IoU-berekening: de Intersection Over Union (IoU) berekenen tussen het geselecteerde kader en alle overige kaders;
- Drempelwaarde toepassen: kaders onderdrukken (verwijderen) die een IoU boven een ingestelde drempelwaarde hebben (bijvoorbeeld 0,5), omdat deze waarschijnlijk hetzelfde object voorstellen;
- Herhalen: dit proces herhalen voor het volgende kader met de hoogste score totdat alle kaders zijn verwerkt.
import numpy as np
def non_max_suppression(boxes, scores, iou_threshold=0.5):
# Sort boxes by confidence scores in descending order
sorted_indices = np.argsort(scores)[::-1]
selected_boxes = []
while len(sorted_indices) > 0:
# Pick the highest confidence box
best_idx = sorted_indices[0]
selected_boxes.append(boxes[best_idx])
# Compute IoU with the remaining boxes
remaining_boxes = boxes[sorted_indices[1:]]
ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
# Suppress boxes with IoU above threshold
sorted_indices = sorted_indices[1:][ious < iou_threshold]
return selected_boxes
Soft-NMS: Een Slimmer Alternatief
Standaard NMS verwijdert alle overlappende kaders boven een bepaalde IoU-drempel, wat soms nuttige detecties kan elimineren. Soft-NMS verbetert dit door de betrouwbaarheidscores van overlappende kaders te verlagen in plaats van ze direct te verwijderen. Deze methode zorgt voor een soepelere onderdrukking en kan de detectieprestaties verbeteren in scenario's met veel objecten.
Belangrijkste Verschillen tussen Standaard NMS en Soft-NMS:
- Standaard NMS: verwijdert overlappende kaders boven de IoU-drempel;
- Soft-NMS: verlaagt de betrouwbaarheidscores van overlappende kaders in plaats van ze te elimineren, waardoor het flexibeler is voor het detecteren van gedeeltelijk overlappende objecten.
Balans tussen Nauwkeurigheid en Snelheid in NMS
Het kiezen van de juiste IoU-drempel is cruciaal:
- Hogere drempels (bijv. 0,6 - 0,7): agressievere filtering, waarbij alleen de meest betrouwbare kaders behouden blijven maar mogelijk enkele geldige detecties worden gemist;
- Lagere drempels (bijv. 0,3 - 0,4): behoudt meer overlappende kaders, wat nuttig kan zijn in drukke scènes maar het aantal fout-positieven kan verhogen.
Het gebruik van geoptimaliseerde implementaties, zoals de ingebouwde NMS-functies van TensorFlow of OpenCV, kan de verwerking versnellen voor toepassingen in real-time.
Non-Max Suppression is een essentiële techniek in objectdetectie om overbodige begrenzingskaders te verwijderen en de nauwkeurigheid van het model te verbeteren. Standaard NMS elimineert efficiënt dubbele detecties, terwijl Soft-NMS het proces verfijnt door de vertrouwensscores aan te passen in plaats van direct te verwijderen. Door het nauwkeurig afstellen van IoU-drempels kan de juiste balans worden gevonden tussen detectienauwkeurigheid en rekenefficiëntie.
1. Wat is het belangrijkste doel van Non-Max Suppression (NMS) bij objectdetectie?
2. Hoe bepaalt standaard NMS welke begrenzingskaders onderdrukt moeten worden?
3. Wat is het belangrijkste verschil tussen standaard NMS en Soft-NMS?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.45
Non-max Suppressie (NMS)
Veeg om het menu te tonen
Objectdetectiemodellen voorspellen vaak meerdere overlappende begrenzingskaders voor hetzelfde object. Dit gebeurt omdat modellen een afbeelding op verschillende schalen en posities scannen, wat leidt tot overbodige voorspellingen. Non-Max Suppression (NMS) is een essentiële nabewerkingsstap die deze detecties verfijnt door de meest relevante begrenzingskaders te selecteren en onnodige te verwijderen.

Waarom meerdere overlappende kaders voorkomen
Objectdetectoren voorspellen meerdere begrenzingskaders voor één object vanwege:
- Anchor boxes: sommige modellen, zoals Faster R-CNN en YOLO, gebruiken vooraf gedefinieerde anchor boxes van verschillende groottes, wat leidt tot meerdere detecties van hetzelfde object;
- Sliding window-benaderingen: sommige detectiemethoden scannen een afbeelding in kleine regio's, waardoor herhaalde detecties van een object binnen overlappende gebieden ontstaan;
- Hoge vertrouwensscores: het model kent vertrouwensscores toe aan elke voorspelling, en vergelijkbare voorspellingen met hoge scores kunnen aanzienlijk overlappen.
Als deze overbodige kaders niet worden gefilterd, kan dit de prestaties van objectdetectie negatief beïnvloeden door de computationele complexiteit te verhogen en het aantal objecten onbetrouwbaar te maken.
Werking van Non-Max Suppression
NMS wordt toegepast om dubbele detecties te verwijderen en de meest betrouwbare begrenzingskader te behouden. Het volgt deze stappen:
- Score sortering: alle voorspelde begrenzingskaders rangschikken in aflopende volgorde op basis van hun betrouwbaarheidscores;
- Selecteren van de beste box: het kader met de hoogste score kiezen en toevoegen aan de uiteindelijke lijst met detecties;
- IoU-berekening: de Intersection Over Union (IoU) berekenen tussen het geselecteerde kader en alle overige kaders;
- Drempelwaarde toepassen: kaders onderdrukken (verwijderen) die een IoU boven een ingestelde drempelwaarde hebben (bijvoorbeeld 0,5), omdat deze waarschijnlijk hetzelfde object voorstellen;
- Herhalen: dit proces herhalen voor het volgende kader met de hoogste score totdat alle kaders zijn verwerkt.
import numpy as np
def non_max_suppression(boxes, scores, iou_threshold=0.5):
# Sort boxes by confidence scores in descending order
sorted_indices = np.argsort(scores)[::-1]
selected_boxes = []
while len(sorted_indices) > 0:
# Pick the highest confidence box
best_idx = sorted_indices[0]
selected_boxes.append(boxes[best_idx])
# Compute IoU with the remaining boxes
remaining_boxes = boxes[sorted_indices[1:]]
ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
# Suppress boxes with IoU above threshold
sorted_indices = sorted_indices[1:][ious < iou_threshold]
return selected_boxes
Soft-NMS: Een Slimmer Alternatief
Standaard NMS verwijdert alle overlappende kaders boven een bepaalde IoU-drempel, wat soms nuttige detecties kan elimineren. Soft-NMS verbetert dit door de betrouwbaarheidscores van overlappende kaders te verlagen in plaats van ze direct te verwijderen. Deze methode zorgt voor een soepelere onderdrukking en kan de detectieprestaties verbeteren in scenario's met veel objecten.
Belangrijkste Verschillen tussen Standaard NMS en Soft-NMS:
- Standaard NMS: verwijdert overlappende kaders boven de IoU-drempel;
- Soft-NMS: verlaagt de betrouwbaarheidscores van overlappende kaders in plaats van ze te elimineren, waardoor het flexibeler is voor het detecteren van gedeeltelijk overlappende objecten.
Balans tussen Nauwkeurigheid en Snelheid in NMS
Het kiezen van de juiste IoU-drempel is cruciaal:
- Hogere drempels (bijv. 0,6 - 0,7): agressievere filtering, waarbij alleen de meest betrouwbare kaders behouden blijven maar mogelijk enkele geldige detecties worden gemist;
- Lagere drempels (bijv. 0,3 - 0,4): behoudt meer overlappende kaders, wat nuttig kan zijn in drukke scènes maar het aantal fout-positieven kan verhogen.
Het gebruik van geoptimaliseerde implementaties, zoals de ingebouwde NMS-functies van TensorFlow of OpenCV, kan de verwerking versnellen voor toepassingen in real-time.
Non-Max Suppression is een essentiële techniek in objectdetectie om overbodige begrenzingskaders te verwijderen en de nauwkeurigheid van het model te verbeteren. Standaard NMS elimineert efficiënt dubbele detecties, terwijl Soft-NMS het proces verfijnt door de vertrouwensscores aan te passen in plaats van direct te verwijderen. Door het nauwkeurig afstellen van IoU-drempels kan de juiste balans worden gevonden tussen detectienauwkeurigheid en rekenefficiëntie.
1. Wat is het belangrijkste doel van Non-Max Suppression (NMS) bij objectdetectie?
2. Hoe bepaalt standaard NMS welke begrenzingskaders onderdrukt moeten worden?
3. Wat is het belangrijkste verschil tussen standaard NMS en Soft-NMS?
Bedankt voor je feedback!