Ikke-maks-undertrykkelse (NMS)
Objektdetektionsmodeller forudsiger ofte flere overlappende afgrænsningsbokse for det samme objekt. Dette sker, fordi modeller scanner et billede i forskellige skalaer og positioner, hvilket fører til redundante forudsigelser. Non-Max Suppression (NMS) er et afgørende efterbehandlingsskridt, der forfiner disse detektioner ved at udvælge de mest relevante afgrænsningsbokse og kassere unødvendige.

Hvorfor opstår flere overlappende bokse
Objektdetektorer forudsiger flere afgrænsningsbokse for et enkelt objekt på grund af:
- Anchor-bokse: nogle modeller, såsom Faster R-CNN og YOLO, anvender foruddefinerede anchor-bokse i forskellige størrelser, hvilket fører til flere detektioner af det samme objekt;
- Sliding window-metoder: nogle detektionsmetoder scanner et billede i små områder, hvilket medfører gentagne detektioner af et objekt i overlappende områder;
- Høje konfidensscore: modellen tildeler konfidensscore til hver forudsigelse, og lignende forudsigelser med høj konfidens kan overlappe betydeligt.
Hvis disse redundante bokse ikke filtreres, kan de påvirke objektdetektionens ydeevne negativt ved at øge den beregningsmæssige kompleksitet og gøre objektoptællinger upålidelige.
Sådan fungerer Non-Max Suppression
NMS anvendes til at fjerne dublerede detektioner, mens den mest sikre afgrænsningsboks bevares. Processen følger disse trin:
- Score-sortering: arranger alle forudsagte afgrænsningsbokse i faldende rækkefølge baseret på deres tillidsscorer;
- Valg af bedste boks: vælg boksen med den højeste score og tilføj den til den endelige liste over detektioner;
- IoU-beregning: beregn Intersection Over Union (IoU) mellem den valgte boks og alle resterende bokse;
- Tærskelværdi: undertryk (fjern) bokse, der har en IoU over en fastsat tærskelværdi (f.eks. 0,5), da de sandsynligvis repræsenterer det samme objekt;
- Gentag: fortsæt denne proces for den næste højest scorende boks, indtil alle bokse er behandlet.
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: Et smartere alternativ
Standard NMS fjerner alle overlappende bokse over en bestemt IoU-tærskel, hvilket nogle gange kan eliminere nyttige detektioner. Soft-NMS forbedrer dette ved at nedjustere tillidsscorerne for overlappende bokse i stedet for at fjerne dem helt. Denne metode muliggør en mere glidende undertrykkelsesproces og kan forbedre detektionspræstationen i tætte objektscenarier.
Centrale forskelle mellem Standard NMS og Soft-NMS:
- Standard NMS: fjerner overlappende bokse over IoU-tærsklen;
- Soft-NMS: reducerer tillidsscorerne for overlappende bokse i stedet for at eliminere dem, hvilket gør den mere fleksibel til detektion af delvist tildækkede objekter.
Afvejning mellem nøjagtighed og hastighed i NMS
Valg af den rette IoU-tærskel er afgørende:
- Højere tærskler (f.eks. 0,6 - 0,7): mere aggressiv filtrering, hvor kun de mest sikre bokse bevares, men nogle gyldige detektioner kan gå tabt;
- Lavere tærskler (f.eks. 0,3 - 0,4): bevarer flere overlappende bokse, hvilket kan være nyttigt i tætpakkede scener, men kan øge antallet af falske positiver.
Brug af optimerede implementeringer, såsom TensorFlow eller OpenCV's indbyggede NMS-funktioner, kan hjælpe med at øge hastigheden for realtidsapplikationer.
Non-Max Suppression er en vigtig teknik inden for objektdetektion til at fjerne overflødige afgrænsningsbokse og forbedre modellens nøjagtighed. Standard NMS eliminerer effektivt duplikerede detektioner, mens Soft-NMS forfiner processen ved at justere tillidsscorer i stedet for at fjerne dem direkte. Ved at finjustere IoU-tærskler kan man opnå den rette balance mellem detektionsnøjagtighed og beregningseffektivitet.
1. Hvad er hovedformålet med Non-Max Suppression (NMS) i objektdetektion?
2. Hvordan afgør standard NMS, hvilke afgrænsningsbokse der skal undertrykkes?
3. Hvad er den væsentligste forskel mellem standard NMS og Soft-NMS?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 3.45
Ikke-maks-undertrykkelse (NMS)
Stryg for at vise menuen
Objektdetektionsmodeller forudsiger ofte flere overlappende afgrænsningsbokse for det samme objekt. Dette sker, fordi modeller scanner et billede i forskellige skalaer og positioner, hvilket fører til redundante forudsigelser. Non-Max Suppression (NMS) er et afgørende efterbehandlingsskridt, der forfiner disse detektioner ved at udvælge de mest relevante afgrænsningsbokse og kassere unødvendige.

Hvorfor opstår flere overlappende bokse
Objektdetektorer forudsiger flere afgrænsningsbokse for et enkelt objekt på grund af:
- Anchor-bokse: nogle modeller, såsom Faster R-CNN og YOLO, anvender foruddefinerede anchor-bokse i forskellige størrelser, hvilket fører til flere detektioner af det samme objekt;
- Sliding window-metoder: nogle detektionsmetoder scanner et billede i små områder, hvilket medfører gentagne detektioner af et objekt i overlappende områder;
- Høje konfidensscore: modellen tildeler konfidensscore til hver forudsigelse, og lignende forudsigelser med høj konfidens kan overlappe betydeligt.
Hvis disse redundante bokse ikke filtreres, kan de påvirke objektdetektionens ydeevne negativt ved at øge den beregningsmæssige kompleksitet og gøre objektoptællinger upålidelige.
Sådan fungerer Non-Max Suppression
NMS anvendes til at fjerne dublerede detektioner, mens den mest sikre afgrænsningsboks bevares. Processen følger disse trin:
- Score-sortering: arranger alle forudsagte afgrænsningsbokse i faldende rækkefølge baseret på deres tillidsscorer;
- Valg af bedste boks: vælg boksen med den højeste score og tilføj den til den endelige liste over detektioner;
- IoU-beregning: beregn Intersection Over Union (IoU) mellem den valgte boks og alle resterende bokse;
- Tærskelværdi: undertryk (fjern) bokse, der har en IoU over en fastsat tærskelværdi (f.eks. 0,5), da de sandsynligvis repræsenterer det samme objekt;
- Gentag: fortsæt denne proces for den næste højest scorende boks, indtil alle bokse er behandlet.
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: Et smartere alternativ
Standard NMS fjerner alle overlappende bokse over en bestemt IoU-tærskel, hvilket nogle gange kan eliminere nyttige detektioner. Soft-NMS forbedrer dette ved at nedjustere tillidsscorerne for overlappende bokse i stedet for at fjerne dem helt. Denne metode muliggør en mere glidende undertrykkelsesproces og kan forbedre detektionspræstationen i tætte objektscenarier.
Centrale forskelle mellem Standard NMS og Soft-NMS:
- Standard NMS: fjerner overlappende bokse over IoU-tærsklen;
- Soft-NMS: reducerer tillidsscorerne for overlappende bokse i stedet for at eliminere dem, hvilket gør den mere fleksibel til detektion af delvist tildækkede objekter.
Afvejning mellem nøjagtighed og hastighed i NMS
Valg af den rette IoU-tærskel er afgørende:
- Højere tærskler (f.eks. 0,6 - 0,7): mere aggressiv filtrering, hvor kun de mest sikre bokse bevares, men nogle gyldige detektioner kan gå tabt;
- Lavere tærskler (f.eks. 0,3 - 0,4): bevarer flere overlappende bokse, hvilket kan være nyttigt i tætpakkede scener, men kan øge antallet af falske positiver.
Brug af optimerede implementeringer, såsom TensorFlow eller OpenCV's indbyggede NMS-funktioner, kan hjælpe med at øge hastigheden for realtidsapplikationer.
Non-Max Suppression er en vigtig teknik inden for objektdetektion til at fjerne overflødige afgrænsningsbokse og forbedre modellens nøjagtighed. Standard NMS eliminerer effektivt duplikerede detektioner, mens Soft-NMS forfiner processen ved at justere tillidsscorer i stedet for at fjerne dem direkte. Ved at finjustere IoU-tærskler kan man opnå den rette balance mellem detektionsnøjagtighed og beregningseffektivitet.
1. Hvad er hovedformålet med Non-Max Suppression (NMS) i objektdetektion?
2. Hvordan afgør standard NMS, hvilke afgrænsningsbokse der skal undertrykkes?
3. Hvad er den væsentligste forskel mellem standard NMS og Soft-NMS?
Tak for dine kommentarer!