Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 10.3 KB

File metadata and controls

179 lines (101 loc) · 10.3 KB

Objektgjenkjenning

Bildklassifiseringsmodellene vi har jobbet med så langt tar et bilde og gir et kategorisk resultat, som klassen 'nummer' i et MNIST-problem. Men i mange tilfeller ønsker vi ikke bare å vite at et bilde viser objekter – vi vil også kunne bestemme deres nøyaktige plassering. Dette er nettopp poenget med objektgjenkjenning.

Objektgjenkjenning

Bilde fra YOLO v2 nettside

En naiv tilnærming til objektgjenkjenning

Anta at vi ønsket å finne en katt på et bilde. En veldig naiv tilnærming til objektgjenkjenning ville være følgende:

  1. Del opp bildet i et antall fliser.
  2. Kjør bildklassifisering på hver flis.
  3. De flisene som gir tilstrekkelig høy aktivering kan anses å inneholde det aktuelle objektet.

Naiv objektgjenkjenning

Bilde fra Øvingsnotatbok

Denne tilnærmingen er imidlertid langt fra ideell, fordi den bare lar algoritmen lokalisere objektets avgrensningsboks veldig unøyaktig. For mer presis lokalisering må vi kjøre en form for regresjon for å forutsi koordinatene til avgrensningsboksene – og for det trenger vi spesifikke datasett.

Regresjon for objektgjenkjenning

Dette blogginnlegget gir en flott og enkel introduksjon til å oppdage former.

Datasett for objektgjenkjenning

Du kan komme over følgende datasett for denne oppgaven:

  • PASCAL VOC – 20 klasser
  • COCO – Common Objects in Context. 80 klasser, avgrensningsbokser og segmenteringsmasker

COCO

Objektgjenkjenningsmetrikker

Intersection over Union

Mens det er enkelt å måle hvor godt algoritmen presterer for bildklassifisering, må vi for objektgjenkjenning måle både korrektheten av klassen og presisjonen til den utledede plasseringen av avgrensningsboksen. For sistnevnte bruker vi den såkalte Intersection over Union (IoU), som måler hvor godt to bokser (eller to vilkårlige områder) overlapper.

IoU

Figur 2 fra dette utmerkede blogginnlegget om IoU

Ideen er enkel – vi deler området for overlapp mellom to figurer med området for deres union. For to identiske områder vil IoU være 1, mens for helt adskilte områder vil det være 0. Ellers vil det variere fra 0 til 1. Vi vurderer vanligvis bare de avgrensningsboksene der IoU er over en viss verdi.

Gjennomsnittlig presisjon

Anta at vi ønsker å måle hvor godt en gitt klasse av objekter $C$ blir gjenkjent. For å måle dette bruker vi Gjennomsnittlig presisjon-metrikker, som beregnes slik:

  1. Vurder presisjon-recall-kurven som viser nøyaktigheten avhengig av en deteksjonsterskelverdi (fra 0 til 1).
  2. Avhengig av terskelen vil vi få flere eller færre objekter oppdaget i bildet, og ulike verdier for presisjon og recall.
  3. Kurven vil se slik ut:

Bilde fra NeuroWorkshop

Gjennomsnittlig presisjon for en gitt klasse $C$ er området under denne kurven. Mer presist deles recall-aksen vanligvis inn i 10 deler, og presisjonen gjennomsnittliggjøres over alle disse punktene:

$$ AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) $$

AP og IoU

Vi vurderer kun de deteksjonene der IoU er over en viss verdi. For eksempel, i PASCAL VOC-datasettet antas vanligvis $\mbox{IoU Threshold} = 0.5$, mens i COCO måles AP for ulike verdier av $\mbox{IoU Threshold}$.

Bilde fra NeuroWorkshop

Gjennomsnittlig presisjon – mAP

Hovedmetrikken for objektgjenkjenning kalles Gjennomsnittlig presisjon, eller mAP. Det er verdien av gjennomsnittlig presisjon, gjennomsnittlig over alle objektklasser, og noen ganger også over $\mbox{IoU Threshold}$. Prosessen for å beregne mAP er beskrevet i detalj i dette blogginnlegget), og også her med kodeeksempler.

Ulike tilnærminger til objektgjenkjenning

Det finnes to brede klasser av algoritmer for objektgjenkjenning:

  • Region Proposal Networks (R-CNN, Fast R-CNN, Faster R-CNN). Hovedideen er å generere Regions of Interests (ROI) og kjøre CNN over dem, på jakt etter maksimal aktivering. Det ligner litt på den naive tilnærmingen, med unntak av at ROI-er genereres på en mer intelligent måte. En av de største ulempene med slike metoder er at de er trege, fordi vi trenger mange passeringer av CNN-klassifiseringen over bildet.
  • One-pass (YOLO, SSD, RetinaNet)-metoder. I disse arkitekturene designer vi nettverket til å forutsi både klasser og ROI-er i én passering.

R-CNN: Region-Based CNN

R-CNN bruker Selective Search for å generere en hierarkisk struktur av ROI-regioner, som deretter sendes gjennom CNN-funksjonsekstraktorer og SVM-klassifisatorer for å bestemme objektklassen, og lineær regresjon for å bestemme avgrensningsboks-koordinater. Offisiell artikkel

RCNN

Bilde fra van de Sande et al. ICCV’11

RCNN-1

Bilder fra denne bloggen

F-RCNN – Fast R-CNN

Denne tilnærmingen ligner på R-CNN, men regioner defineres etter at konvolusjonslagene er blitt brukt.

FRCNN

Bilde fra den offisielle artikkelen, arXiv, 2015

Faster R-CNN

Hovedideen med denne tilnærmingen er å bruke et nevralt nettverk til å forutsi ROI-er – såkalte Region Proposal Network. Artikkel, 2016

FasterRCNN

Bilde fra den offisielle artikkelen

R-FCN: Region-Based Fully Convolutional Network

Denne algoritmen er enda raskere enn Faster R-CNN. Hovedideen er følgende:

  1. Vi henter ut funksjoner ved hjelp av ResNet-101.
  2. Funksjonene behandles av Position-Sensitive Score Map. Hvert objekt fra $C$ klasser deles inn i $k\times k$ regioner, og vi trener på å forutsi deler av objekter.
  3. For hver del fra $k\times k$ regioner stemmer alle nettverkene på objektklasser, og objektklassen med flest stemmer blir valgt.

r-fcn bilde

Bilde fra offisiell artikkel

YOLO – You Only Look Once

YOLO er en sanntids én-pass-algoritme. Hovedideen er følgende:

  • Bildet deles inn i $S\times S$ regioner.
  • For hver region forutsier CNN $n$ mulige objekter, avgrensningsboks-koordinater og confidence=sannsynlighet * IoU.

YOLO

Bilde fra offisiell artikkel

Andre algoritmer

✍️ Øvelser: Objektgjenkjenning

Fortsett læringen i følgende notatbok:

ObjectDetection.ipynb

Konklusjon

I denne leksjonen tok du en rask gjennomgang av alle de ulike måtene objektgjenkjenning kan utføres på!

🚀 Utfordring

Les gjennom disse artiklene og notatbøkene om YOLO og prøv dem selv:

Gjennomgang og selvstudium