Non-maks Undertrykking (NMS)
Objektdeteksjonsmodeller forutsier ofte flere overlappende avgrensningsbokser for det samme objektet. Dette skjer fordi modellene skanner et bilde i ulike skalaer og posisjoner, noe som fører til redundante prediksjoner. Non-Max Suppression (NMS) er et avgjørende etterbehandlingssteg som forbedrer disse deteksjonene ved å velge de mest relevante avgrensningsboksene og forkaste unødvendige.

Hvorfor oppstår flere overlappende bokser
Objektdetektorer forutsier flere avgrensningsbokser for ett enkelt objekt på grunn av:
- Ankerbokser: noen modeller, som Faster R-CNN og YOLO, bruker forhåndsdefinerte ankerbokser i ulike størrelser, noe som fører til flere deteksjoner av samme objekt;
- Sliding window-metoder: enkelte deteksjonsmetoder skanner et bilde i små regioner, noe som gir gjentatte deteksjoner av et objekt i overlappende områder;
- Høye konfidensscore: modellen tildeler konfidensscore til hver prediksjon, og lignende prediksjoner med høy konfidens kan overlappe betydelig.
Hvis disse redundante boksene ikke filtreres, kan de påvirke ytelsen til objektdeteksjon negativt ved å øke beregningskompleksiteten og gjøre objekttellinger upålitelige.
Hvordan Non-Max Suppression fungerer
NMS brukes for å fjerne dupliserte deteksjoner samtidig som den mest pålitelige avgrensningsboksen beholdes. Prosessen følger disse trinnene:
- Sortering etter score: arranger alle predikerte avgrensningsbokser i synkende rekkefølge basert på deres konfidensscore;
- Valg av beste boks: velg boksen med høyest score og legg den til i den endelige listen over deteksjoner;
- IoU-beregning: beregn Intersection Over Union (IoU) mellom den valgte boksen og alle gjenværende bokser;
- Terskelverdi: undertrykk (fjern) bokser som har en IoU over en satt terskelverdi (f.eks. 0.5), siden de sannsynligvis representerer det samme objektet;
- Gjenta: fortsett denne prosessen for neste boks med høyest score til alle bokser 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 bokser over en viss IoU-terskel, noe som noen ganger kan eliminere nyttige deteksjoner. Soft-NMS forbedrer dette ved å redusere konfidensscoren til overlappende bokser i stedet for å fjerne dem helt. Denne metoden gir en jevnere undertrykkelsesprosess og kan forbedre deteksjonsytelsen i tette objektscenarier.
Viktige forskjeller mellom standard NMS og Soft-NMS:
- Standard NMS: fjerner overlappende bokser over IoU-terskelen;
- Soft-NMS: reduserer konfidensscoren til overlappende bokser i stedet for å eliminere dem, noe som gjør den mer fleksibel for deteksjon av delvis tildekkede objekter.
Balansering av nøyaktighet og hastighet i NMS
Valg av riktig IoU-terskel er avgjørende:
- Høyere terskler (f.eks. 0.6 - 0.7): mer aggressiv filtrering, kun de mest pålitelige boksene beholdes, men noen gyldige deteksjoner kan gå tapt;
- Lavere terskler (f.eks. 0.3 - 0.4): flere overlappende bokser beholdes, noe som kan være nyttig i overfylte scener, men kan øke antall falske positiver.
Bruk av optimaliserte implementasjoner, som TensorFlow eller OpenCVs innebygde NMS-funksjoner, kan bidra til å øke hastigheten på prosesseringen for sanntidsapplikasjoner.
Non-Max Suppression er en viktig teknikk innen objektdeteksjon for å fjerne overflødige avgrensningsbokser og forbedre modellens nøyaktighet. Standard NMS eliminerer effektivt dupliserte deteksjoner, mens Soft-NMS forbedrer prosessen ved å justere konfidensscore i stedet for å fjerne dem helt. Ved å finjustere IoU-grenseverdier kan man oppnå riktig balanse mellom deteksjonsnøyaktighet og beregningseffektivitet.
1. Hva er hovedformålet med Non-Max Suppression (NMS) i objektdeteksjon?
2. Hvordan avgjør standard NMS hvilke avgrensningsbokser som skal undertrykkes?
3. Hva er hovedforskjellen mellom standard NMS og Soft-NMS?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.45
Non-maks Undertrykking (NMS)
Sveip for å vise menyen
Objektdeteksjonsmodeller forutsier ofte flere overlappende avgrensningsbokser for det samme objektet. Dette skjer fordi modellene skanner et bilde i ulike skalaer og posisjoner, noe som fører til redundante prediksjoner. Non-Max Suppression (NMS) er et avgjørende etterbehandlingssteg som forbedrer disse deteksjonene ved å velge de mest relevante avgrensningsboksene og forkaste unødvendige.

Hvorfor oppstår flere overlappende bokser
Objektdetektorer forutsier flere avgrensningsbokser for ett enkelt objekt på grunn av:
- Ankerbokser: noen modeller, som Faster R-CNN og YOLO, bruker forhåndsdefinerte ankerbokser i ulike størrelser, noe som fører til flere deteksjoner av samme objekt;
- Sliding window-metoder: enkelte deteksjonsmetoder skanner et bilde i små regioner, noe som gir gjentatte deteksjoner av et objekt i overlappende områder;
- Høye konfidensscore: modellen tildeler konfidensscore til hver prediksjon, og lignende prediksjoner med høy konfidens kan overlappe betydelig.
Hvis disse redundante boksene ikke filtreres, kan de påvirke ytelsen til objektdeteksjon negativt ved å øke beregningskompleksiteten og gjøre objekttellinger upålitelige.
Hvordan Non-Max Suppression fungerer
NMS brukes for å fjerne dupliserte deteksjoner samtidig som den mest pålitelige avgrensningsboksen beholdes. Prosessen følger disse trinnene:
- Sortering etter score: arranger alle predikerte avgrensningsbokser i synkende rekkefølge basert på deres konfidensscore;
- Valg av beste boks: velg boksen med høyest score og legg den til i den endelige listen over deteksjoner;
- IoU-beregning: beregn Intersection Over Union (IoU) mellom den valgte boksen og alle gjenværende bokser;
- Terskelverdi: undertrykk (fjern) bokser som har en IoU over en satt terskelverdi (f.eks. 0.5), siden de sannsynligvis representerer det samme objektet;
- Gjenta: fortsett denne prosessen for neste boks med høyest score til alle bokser 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 bokser over en viss IoU-terskel, noe som noen ganger kan eliminere nyttige deteksjoner. Soft-NMS forbedrer dette ved å redusere konfidensscoren til overlappende bokser i stedet for å fjerne dem helt. Denne metoden gir en jevnere undertrykkelsesprosess og kan forbedre deteksjonsytelsen i tette objektscenarier.
Viktige forskjeller mellom standard NMS og Soft-NMS:
- Standard NMS: fjerner overlappende bokser over IoU-terskelen;
- Soft-NMS: reduserer konfidensscoren til overlappende bokser i stedet for å eliminere dem, noe som gjør den mer fleksibel for deteksjon av delvis tildekkede objekter.
Balansering av nøyaktighet og hastighet i NMS
Valg av riktig IoU-terskel er avgjørende:
- Høyere terskler (f.eks. 0.6 - 0.7): mer aggressiv filtrering, kun de mest pålitelige boksene beholdes, men noen gyldige deteksjoner kan gå tapt;
- Lavere terskler (f.eks. 0.3 - 0.4): flere overlappende bokser beholdes, noe som kan være nyttig i overfylte scener, men kan øke antall falske positiver.
Bruk av optimaliserte implementasjoner, som TensorFlow eller OpenCVs innebygde NMS-funksjoner, kan bidra til å øke hastigheten på prosesseringen for sanntidsapplikasjoner.
Non-Max Suppression er en viktig teknikk innen objektdeteksjon for å fjerne overflødige avgrensningsbokser og forbedre modellens nøyaktighet. Standard NMS eliminerer effektivt dupliserte deteksjoner, mens Soft-NMS forbedrer prosessen ved å justere konfidensscore i stedet for å fjerne dem helt. Ved å finjustere IoU-grenseverdier kan man oppnå riktig balanse mellom deteksjonsnøyaktighet og beregningseffektivitet.
1. Hva er hovedformålet med Non-Max Suppression (NMS) i objektdeteksjon?
2. Hvordan avgjør standard NMS hvilke avgrensningsbokser som skal undertrykkes?
3. Hva er hovedforskjellen mellom standard NMS og Soft-NMS?
Takk for tilbakemeldingene dine!