Gekissimo.net - Opi ansaitsemaan rahaa webilläsi Internetissä!

Miten keskimääräinen tarkkuus (mAP) toimii objektien tunnistuksessa?

Seuraava artikkeli auttaa sinua: Miten keskimääräinen tarkkuus (mAP) toimii objektien tunnistuksessa?

Objektintunnistusmallit yrittävät havaita kuvissa tärkeiden asioiden olemassaolon ja luokitella ne. Tilastoa, joka tunnetaan nimellä Average Precision (AP), käytetään arvioimaan kohteen tunnistus- ja lokalisointimenetelmän tehokkuutta (ja keskimääräistä keskimääräistä tarkkuutta). Kaikkien luokkien tarkkuuspisteet eivät täsmää keskimääräiseen tarkkuuspisteeseen. Kun palautusarvot ovat välillä 0 – 1, keskimääräinen tarkkuusarvo lasketaan. Tämä artikkeli keskittyy keskimääräisen keskimääräisen tarkkuuden selittämiseen kohteen havaitsemisen yhteydessä. Tässä artikkelissa käsiteltävät aiheet ovat seuraavat.

Sisällysluettelo

  1. Mikä on Precision-Recall -käyrä?
  2. Mikä on keskimääräinen tarkkuus (AP)?
  3. mAP:n käyttö arviointimittarina

Aloitetaan mAP:n perusteista, joka on Precision-Recall -käyrä.

Mikä on Precision-Recall -käyrä?

ROC-AUC-käyrä (vastaanottimen toimintakäyrä) kuvaa luokitusmallin suorituskyvyn yleisiä luokittelutasoja. Samoin IoU-kynnyksillä on tarkkuuspalautuskäyrä, joka kuvaa tarkkuuden ja muistamisen välistä kompromissia.

Tarkkuus on mitta “kuinka usein mallinne ennustaa oikein, kun se arvaa?” Palauttaminen on mittari, joka kysyy: “Onko mallinne arvannut joka kerta, kun sen olisi pitänyt arvata?” Harkitse seuraavaa kuvaa, joka sisältää kymmenen hedelmää. Malli, jolla on suuri tarkkuus mutta huono muisti, löytää vain yhden näistä 10:stä, mutta tunnistaa sen oikein “hedelmäksi” (vain yksi kymmenestä hedelmästä on löydetty).

Mallit, joissa on luottamuskomponentti, voivat vaihtaa tarkkuuden muistamiseen muuttamalla ennusteen tekemiseen vaadittavaa luottamusta. Toisin sanoen, jos malli on tilanteessa, jossa väärien positiivisten tulosten välttäminen (jota sanotaan hedelmää, kun se oli vihannes) on tärkeämpää kuin väärien negatiivisten välttäminen, se voi nostaa luottamuskynnystä kannustaen mallia tuottamaan vain erittäin tarkkoja ennusteita. sen kattavuuden vähentämisen kustannuksella (palautus).

Tarkkuus-palautuskäyrä on prosessi, jossa visualisoidaan mallin tarkkuus ja muistaminen mallin luottamuskynnyksen funktiona. Se laskee alamäkeen, koska luottamuksen heikkeneessä tuotetaan enemmän ennusteita, jotka auttavat muistamaan, ja vähemmän tarkkoja ennusteita, jotka vähentävät tarkkuutta.

🔥 Empfohlen:  Kuinka sähköinen kirja toimii markkinoinnin muunnostyökaluna
Analytics India -lehti

Ensisijainen ero ROC-käyrien ja tarkkuus-palautuskäyrien välillä on, että tosi-negatiivisten löydösten lukumäärää ei oteta huomioon PRC:n laskennassa.

Analytics India -lehti

Etsitkö täydellistä arkistoa tietotieteessä käytettävistä Python-kirjastoista, katso tästä.

Mikä on keskimääräinen tarkkuus (AP)?

Average Precisionin (AP) tavoitteena on arvioida ilmaisimen tarkkuus koko palautusalueella. Tämän seurauksena se pitää parempana lähestymistapoja, joiden tarkkuus on koko palautusalueella, verrattuna ilmaisimiin, joiden Recall-Precision-käyrät ovat lähempänä oikeaa yläkulmaa.

Toisin sanoen AP vertaa ilmaisimien yleistä suorituskykyä mieluummin kuin niiden korkeinta kykyä/suorituskykyä. Muita parametreja, kuten IoU, hämmennysmatriisia (tosi positiivinen, väärä positiivinen, väärä negatiivinen), tarkkuus ja palautus, käytetään AP:n muodostamiseen.

Jos ennustetun rajoituslaatikon luokkatunniste ja maanpinnan totuuden rajoituslaatikon luokkatunniste ovat samat ja niiden välinen IoU on suurempi kuin kynnysarvo, ennusteen sanotaan olevan tarkka.

Laskemme seuraavat kolme metriikkaa perustotuuden IoU-, kynnys- ja luokkatunnisteiden sekä ennustettujen rajausruutujen perusteella.

  • Tosi positiivista: Malli ennusti rajoituslaatikon olemassaolon tietyssä paikassa (positiivinen), ja se oli oikein (tosi)
  • Väärä positiivinen: Malli ennusti rajaavan laatikon olemassaolon tietyssä paikassa (positiivinen), mutta se oli virheellinen (väärä)
  • Väärä negatiivinen: Malli ennusti rajauslaatikon tietyssä paikassa, mutta oli virheellinen (väärä), mikä osoitti, että kyseisessä paikassa oli maanpinnan totuuden rajaava laatikko.
  • Todellinen negatiivinen: Malli ennusti rajoituslaatikon, mutta se oli virheellinen (tosi). Tämä liittyy taustaan, alueeseen ilman rajoitusruutuja, eikä sitä käytetä lopullisessa mittauslaskelmassa.

Matematiikka mAP:n takana

PR-käyrän alla olevaa pinta-alaa käytetään AP:n määrittämiseen. Keskimääräinen keskimääräinen tarkkuus (mAP) on yleinen mittari, jota käytetään kohteen tunnistusmallin tarkkuuden arvioimiseen. Kohteen havaitsemisen mAP on kaikkien laskettujen AP:iden keskiarvo. Keskimääräinen tarkkuus ilmaistaan ​​matemaattisesti seuraavasti:

Missä,

p = tarkkuus

r = muistaminen

Vastaavasti kaava keskimääräiselle keskimääräiselle tarkkuudelle.

mAP:n käyttö arviointimittarina

Tässä artikkelissa käytetään mukautettuja tietoja, jotka sisältävät kahden koneoppimismallin ennustaman luokan ennustepisteitä ja perustotuusarvoja. Pidä näitä kahta luokkaa “positiivisina” ja “negatiivisina”. Mukautettu tarkkuus-palautuskäyrä rakennetaan visualisoimaan tarkkuuden ja palauttamisen kompromissi.

🔥 Empfohlen:  IG-algoritmi vuonna 2023: Kuinka Instagram-algoritmi toimii?

Tuodaan tarvittavat kirjastot.

import numpy as np tuo pandat pd:nä osoitteesta sklearn.metrics import precision_score, return_score tuonti matplotlib.pyplot as plt

Tietojen luominen

Kuten keskusteltu, luodaan kaksi erilaista tietojoukkoa, jotka sisältävät binaaridataa.

y_true_class1 = [“positive”, “negative”, “positive”, “negative”, “positive”, “positive”, “positive”, “negative”, “positive”, “negative”,”positive”, “negative”, “positive”, “positive”]
pred_scores_class1 = [0.72, 0.38, 0.55, 0.64, 0.55, 0.91, 0.75, 0.28, 0.88, 0.35, 0.76, 0.8, 0.47, 0.68]

y_true_class2 = [“negative”, “positive”, “positive”, “negative”, “negative”, “positive”, “positive”, “positive”, “negative”, “positive”, “negative”, “positive”, “negative”, “negative”]
pred_scores_class2 = [0.32, 0.97, 0.45, 0.17, 0.25, 0.99, 0.55, 0.33, 0.35, 0.85, 0.62, 0.54, 0.39, 0.69]

Aseta kynnysarvo 0,2-0,9 askeleella 0,05.

kynnykset = np.arange(aloitus=0,2, lopetus=0,9, askel=0,05)

Määritä tarkkuus-palautuskäyrä

Koska tarkkuus ja muistaminen ovat tärkeitä, on olemassa tarkkuus-palautuskäyrä, joka näyttää kompromissin tarkkuus- ja palautusarvojen välillä eri kynnyksillä. Tämä käyrä auttaa määrittämään sopivan kynnyksen molempien mittausten optimoimiseksi.

Tarkkuus-palautuskäyrä vaatii seuraavat syötteet:

  • Totuuden leimat.
  • Ennuste pisteet
  • Kynnysarvo ennustepisteiden muuntamiseksi tunnisteiksi.

def precision_recall_curve(y_true, pred_scores, thresholds): precisions = []
muistaa = []

kynnysarvolle kynnyksissä: y_pred = [“positive” if score >= threshold else “negative” for score in pred_scores]

tarkkuus = precision_score(y_true=y_true, y_pred=y_pred, pos_label=”positiivinen”) muistutus = return_score(y_true=y_true, y_pred=y_pred, pos_label=”positiivinen”) precisions.append(precision) recursionscall) return(precision precisionscall. , muistelee

Laske ensimmäisten tietojoukkojen keskimääräiset tarkkuuspisteet.

tarkkuudet, palauttaa = precision_recall_curve(y_true=y_true_class1, pred_scores=pred_scores_class1, thresholds=thresholds) plt.plot(recalls, precisions, linewidth=2, color=”red”, zorder=0)”pltize.call fontlabel”, zorder=0)” 12, fontweight=”bold”) plt.ylabel(“Precision”, fontsize=12, fontweight=”bold”) plt.title(“Tarkkuus-Recall Curve”, fontsize=15, fontweight=”bold”) plt.show () tarkkuudet.append(1) muistuttaa.append(0) precisions = np.array(tarkkuus) palauttaa = np.array(recalls) avg_precision_class1 = np.sum((recalls[:-1] – muistelee[1:]) * tarkkuudet[:-1]) tulosta(‘============================================’) print(‘Keskimääräinen tarkkuuspistemäärä:’,np.round(keskimääräinen_tarkkuusluokka1,2))

Analytics India -lehti
Analytics India -lehti

Tästä saatiin keskimääräinen tarkkuuspistemäärä 0,86, mikä on hyvä ja tarkkuus-palautuskäyrässä voitiin havaita, että alkukynnysarvoilla palautus oli alhainen ja tarkkuus oli korkea, mikä on huono ja muilla kynnyksillä tarkkuus ei ylittänyt 0,86. Tästä voitiin päätellä, että kompromissi tasapainotettiin tarkkuudella 0,86 ja takaisinveto 0,68.

🔥 Empfohlen:  Ovatko merkkitutkimukset laillisia? Rehellinen ja testattu arvostelumme

Laske keskimääräiset tarkkuuspisteet toisille tietojoukoille

tarkkuudet_2, muistutukset_2 = tarkkuus_recall_curve(y_true=y_true_class2, pred_scores=pred_scores_class2, thresholds=thresholds) plt.plot(recalls_2, precisions_2, pltzorlderx, linewidth=2, color=”0″ 12, fontweight=”bold”) plt.ylabel(“Precision”, fontsize=12, fontweight=”bold”) plt.title(“Tarkkuus-Recall Curve”, fontsize=15, fontweight=”bold”) plt.show () tarkkuudet_2.append(1) palauttaa_2.append(0) tarkkuudet_2 = np.array(tarkkuus_2) muistuttaa_2 = np.array(recalls_2) avg_precision_class2 = np.sum((recalls_2)[:-1] – muistuttaa_2[1:]) * tarkkuudet_2[:-1]) tulosta(‘============================================’) print(‘Keskimääräinen tarkkuuspistemäärä:’,np.round(keskimääräinen_tarkkuusluokka2,2))

Analytics India -lehti
Analytics India -lehti

Tästä saatiin keskimääräinen tarkkuuspistemäärä 0,83, mikä on hyvä ja tarkkuus-palautuskäyrässä voitiin havaita, että alkuperäisillä kynnysarvoilla takaisinkutsu oli alhainen ja tarkkuus korkea, mikä on huonoa ja äkillinen takaisinkutsujen kasvu, mutta tarkkuus oli vakaa.

Kartan laskeminen

num_labels= 2 mAP = (keskimääräinen_tarkkuusluokka2 + keskim._tarkkuusluokka1)/tarrojen_määrä print(‘Keskimääräinen tarkkuuspistemäärä:’,np.round(mAP,3))

Analytics India -lehti

Binaaridataa sisältävän tietojoukon keskimääräinen tarkkuuspistemäärä on 0,836, joka saadaan ottamalla keskimääräisen tarkkuuden keskiarvo.

Johtopäätös

Intersection of Union (IoU) -kynnys vaikuttaa AP-metriikkaan. Käytettäessä AP:tä kohteen havaitsemisen arviointitoimenpiteenä, IoU-kynnyksen valitsemisesta tulee mielivaltainen menettely. Tämän artikkelin avulla olemme ymmärtäneet kohteiden havaitsemisen keskimääräisen tarkkuuden ja keskimääräisen tarkkuuden arviointimitat.

Viitteet