Non-Maximaalinen Suppressio (NMS)
Pyyhkäise näyttääksesi valikon
Objektintunnistusmallit ennustavat usein useita päällekkäisiä rajauslaatikoita samalle objektille. Tämä johtuu siitä, että mallit skannaavat kuvaa eri mittakaavoissa ja kohdissa, mikä johtaa päällekkäisiin ennusteisiin. Non-Max Suppression (NMS) on olennainen jälkikäsittelyvaihe, joka tarkentaa näitä havaintoja valitsemalla olennaisimmat rajauslaatikot ja poistamalla tarpeettomat.
Miksi useita päällekkäisiä laatikoita syntyy
Objektintunnistimet ennustavat useita rajauslaatikoita yhdelle objektille seuraavista syistä:
- Ankkurilaatikot: jotkin mallit, kuten Faster R-CNN ja YOLO, käyttävät ennalta määriteltyjä erikokoisia ankkurilaatikoita, mikä johtaa useisiin havaintoihin samasta objektista;
- Liukuva ikkuna -menetelmät: jotkin tunnistusmenetelmät skannaavat kuvaa pienissä osissa, mikä aiheuttaa toistuvia havaintoja objektista päällekkäisillä alueilla;
- Korkeat luottamuspisteet: malli antaa jokaiselle ennusteelle luottamuspisteen, ja samankaltaiset ennusteet korkealla luottamuksella voivat olla merkittävästi päällekkäisiä.
Jos näitä päällekkäisiä laatikoita ei suodateta, ne voivat heikentää objektintunnistuksen suorituskykyä lisäämällä laskennallista monimutkaisuutta ja tekemällä objektien lukumääristä epäluotettavia.
Kuinka Non-Max Suppression toimii
NMS:ää käytetään poistamaan päällekkäiset havainnot ja säilyttämään luottamustasoltaan vahvin rajauslaatikko. Menettely etenee seuraavasti:
- Pisteytyksen järjestäminen: järjestä kaikki ennustetut rajauslaatikot laskevaan järjestykseen niiden luottamuspisteiden perusteella;
- Parhaan laatikon valinta: valitse korkein pistemäärä saanut laatikko ja lisää se lopulliseen havaintolistaan;
- IoU-laskenta: laske Intersection Over Union (IoU) valitun laatikon ja kaikkien jäljellä olevien laatikoiden välillä;
- Kynnysarvon soveltaminen: poista (suppress) laatikot, joiden IoU ylittää asetetun kynnysarvon (esim. 0.5), koska ne todennäköisesti kuvaavat samaa kohdetta;
- Toisto: jatka tätä prosessia seuraavaksi korkeimman pistemäärän laatikolle, kunnes kaikki laatikot on käsitelty.
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: Älykkäämpi vaihtoehto
Tavallinen NMS poistaa kaikki päällekkäiset laatikot, joiden IoU ylittää tietyn kynnysarvon, mikä voi joskus johtaa hyödyllisten havaintojen menetykseen. Soft-NMS parantaa tätä vähentämällä päällekkäisten laatikoiden luottamuspisteitä poistamisen sijaan. Tämä mahdollistaa joustavamman suppressioprosessin ja voi parantaa havaintotarkkuutta tiheissä kohdeympäristöissä.
Keskeiset erot tavallisen NMS:n ja Soft-NMS:n välillä:
- Tavallinen NMS: poistaa päällekkäiset laatikot, joiden IoU ylittää kynnysarvon;
- Soft-NMS: vähentää päällekkäisten laatikoiden luottamuspisteitä poistamisen sijaan, mikä tekee siitä joustavamman osittain peittyneiden kohteiden tunnistamiseen.
Tarkkuuden ja nopeuden tasapainottaminen NMS:ssä
Oikean IoU-kynnysarvon valinta on ratkaisevaa:
- Korkeammat kynnysarvot (esim. 0.6 - 0.7): aggressiivisempi suodatus, jolloin säilytetään vain luotettavimmat laatikot, mutta osa oikeista havainnoista voi jäädä pois;
- Matala kynnysarvo (esim. 0.3 - 0.4): säilyttää enemmän päällekkäisiä laatikoita, mikä voi olla hyödyllistä ruuhkaisissa kohtauksissa, mutta voi lisätä vääriä positiivisia havaintoja.
Optimoitujen toteutusten, kuten TensorFlow'n tai OpenCV:n sisäänrakennettujen NMS-funktioiden käyttö voi nopeuttaa käsittelyä reaaliaikasovelluksissa.
Non-Max Suppression on olennainen tekniikka objektintunnistuksessa, jolla poistetaan päällekkäiset rajauslaatikot ja parannetaan mallin tarkkuutta. Standardi NMS poistaa tehokkaasti päällekkäiset havainnot, kun taas Soft-NMS hienosäätää prosessia säätämällä luottamuspisteitä poistamisen sijaan. Säätelemällä IoU-kynnyksiä voidaan löytää sopiva tasapaino tunnistustarkkuuden ja laskennallisen tehokkuuden välillä.
1. Mikä on Non-Max Suppression (NMS):n päätarkoitus objektintunnistuksessa?
2. Miten standardi NMS määrittää, mitkä rajauslaatikot poistetaan?
3. Mikä on keskeinen ero standardin NMS:n ja Soft-NMS:n välillä?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme