Skip to content

Latest commit

 

History

History
78 lines (45 loc) · 4.83 KB

File metadata and controls

78 lines (45 loc) · 4.83 KB

Segmentering

Vi har tidligere lært om objektdeteksjon, som lar oss lokalisere objekter i et bilde ved å forutsi deres bounding boxes. Men for noen oppgaver trenger vi ikke bare bounding boxes, men også mer presis objektlokalisering. Denne oppgaven kalles segmentering.

Segmentering kan sees på som pikselklassifisering, der vi for hver piksel i bildet må forutsi dens klasse (bakgrunn er en av klassene). Det finnes to hovedtyper segmenteringsalgoritmer:

  • Semantisk segmentering forteller kun pikselklassen og skiller ikke mellom ulike objekter av samme klasse.
  • Instanssegmentering deler klassene inn i forskjellige instanser.

For instanssegmentering er disse sauene forskjellige objekter, men for semantisk segmentering representeres alle sauene av én klasse.

Bilde fra denne bloggposten

Det finnes ulike nevrale arkitekturer for segmentering, men de har alle samme struktur. På en måte ligner det på autoencoderen du har lært om tidligere, men i stedet for å dekonstruere det originale bildet, er målet vårt å dekonstruere en maske. Dermed har et segmenteringsnettverk følgende deler:

  • Encoder trekker ut funksjoner fra inngangsbilde.
  • Decoder transformerer disse funksjonene til maske-bildet, med samme størrelse og antall kanaler som tilsvarer antall klasser.

Bilde fra denne publikasjonen

Vi bør spesielt nevne tapfunksjonen som brukes for segmentering. Når vi bruker klassiske autoencodere, må vi måle likheten mellom to bilder, og vi kan bruke mean square error (MSE) til dette. I segmentering representerer hver piksel i målmaske-bildet klassenumre (one-hot-encoded langs den tredje dimensjonen), så vi må bruke tapfunksjoner spesifikke for klassifisering - kryssentropitap, gjennomsnittlig over alle piksler. Hvis masken er binær, brukes binært kryssentropitap (BCE).

✅ One-hot encoding er en måte å kode en klasseetikett inn i en vektor med lengde lik antall klasser. Ta en titt på denne artikkelen om denne teknikken.

Segmentering for medisinsk bildediagnostikk

I denne leksjonen skal vi se segmentering i praksis ved å trene et nettverk til å gjenkjenne menneskelige nevi (også kjent som føflekker) på medisinske bilder. Vi vil bruke PH2-databasen med dermoskopibilder som bildekilde. Dette datasettet inneholder 200 bilder av tre klasser: typisk nevus, atypisk nevus og melanom. Alle bildene inneholder også en tilsvarende maske som avgrenser nevusen.

✅ Denne teknikken er spesielt egnet for denne typen medisinsk bildediagnostikk, men hvilke andre virkelige applikasjoner kan du se for deg?

navi

Bilde fra PH2-databasen

Vi skal trene en modell til å segmentere enhver nevus fra bakgrunnen.

✍️ Øvelser: Semantisk segmentering

Åpne notatbøkene nedenfor for å lære mer om ulike semantiske segmenteringsarkitekturer, øve på å jobbe med dem og se dem i aksjon.

Konklusjon

Segmentering er en svært kraftig teknikk for bildekategorisering, som går utover bounding boxes til klassifisering på pikselnivå. Det er en teknikk som brukes i medisinsk bildediagnostikk, blant andre applikasjoner.

🚀 Utfordring

Kroppssegmentering er bare én av de vanlige oppgavene vi kan utføre med bilder av mennesker. Andre viktige oppgaver inkluderer skjelettdeteksjon og posisjonsdeteksjon. Prøv ut OpenPose-biblioteket for å se hvordan posisjonsdeteksjon kan brukes.

Gjennomgang & Selvstudium

Denne Wikipedia-artikkelen gir en god oversikt over de ulike applikasjonene av denne teknikken. Lær mer på egen hånd om underområdene instanssegmentering og panoptisk segmentering innen dette feltet.

I denne labben kan du prøve kroppssegmentering ved å bruke Segmentation Full Body MADS Dataset fra Kaggle.