|
|
||
|---|---|---|
| .. | ||
| lab | ||
| README.md | ||
| SemanticSegmentationPytorch.ipynb | ||
| SemanticSegmentationTF.ipynb | ||
README.md
Segmentering
Vi har tidigare lÀrt oss om objektigenkÀnning, som gör det möjligt att lokalisera objekt i en bild genom att förutsÀga deras begrÀnsningsramar. Men för vissa uppgifter behöver vi inte bara begrÀnsningsramar, utan ocksÄ mer exakt objektlokalisering. Denna uppgift kallas segmentering.
Quiz före förelÀsningen
Segmentering kan ses som pixelklassificering, dÀr vi för varje pixel i bilden mÄste förutsÀga dess klass (bakgrund Àr en av klasserna). Det finns tvÄ huvudsakliga segmenteringsalgoritmer:
- Semantisk segmentering anger endast pixelklassen och gör ingen skillnad mellan olika objekt av samma klass.
- Instancesegmentering delar upp klasser i olika instanser.
Vid instancesegmentering Àr dessa fÄr olika objekt, men vid semantisk segmentering representeras alla fÄr av en och samma klass.
Bild frÄn denna bloggpost
Det finns olika neurala arkitekturer för segmentering, men de har alla samma struktur. PÄ sÀtt och vis liknar det den autoencoder du tidigare lÀrt dig om, men istÀllet för att dekonstruera den ursprungliga bilden Àr vÄrt mÄl att dekonstruera en mask. En segmenteringsnÀtverk har följande delar:
- Encoder extraherar funktioner frÄn inmatningsbilden.
- Decoder omvandlar dessa funktioner till maskbilden, med samma storlek och antal kanaler som motsvarar antalet klasser.
Bild frÄn denna publikation
Vi bör sÀrskilt nÀmna förlustfunktionen som anvÀnds för segmentering. NÀr vi anvÀnder klassiska autoencoders behöver vi mÀta likheten mellan tvÄ bilder, och vi kan anvÀnda medelkvadratfel (MSE) för att göra det. Vid segmentering representerar varje pixel i mÄlmaskbilden klassnumret (one-hot-kodad lÀngs den tredje dimensionen), sÄ vi behöver anvÀnda förlustfunktioner specifika för klassificering - korsentropiförlust, genomsnittligt över alla pixlar. Om masken Àr binÀr anvÀnds binÀr korsentropiförlust (BCE).
â One-hot-kodning Ă€r ett sĂ€tt att koda en klassetikett till en vektor med lĂ€ngd som motsvarar antalet klasser. Ta en titt pĂ„ denna artikel om denna teknik.
Segmentering för medicinsk bildbehandling
I denna lektion kommer vi att se segmentering i praktiken genom att trÀna nÀtverket att kÀnna igen mÀnskliga nevi (Àven kÀnda som födelsemÀrken) pÄ medicinska bilder. Vi kommer att anvÀnda PH2-databasen med dermoskopibilder som bildkÀlla. Denna datamÀngd innehÄller 200 bilder av tre klasser: typisk nevus, atypisk nevus och melanom. Alla bilder innehÄller ocksÄ en motsvarande mask som markerar nevusen.
â Denna teknik Ă€r sĂ€rskilt lĂ€mplig för denna typ av medicinsk bildbehandling, men vilka andra verkliga tillĂ€mpningar kan du förestĂ€lla dig?
Bild frÄn PH2-databasen
Vi kommer att trÀna en modell för att segmentera vilken nevus som helst frÄn dess bakgrund.
âïž Ăvningar: Semantisk segmentering
Ăppna nedanstĂ„ende notebooks för att lĂ€ra dig mer om olika semantiska segmenteringsarkitekturer, öva pĂ„ att arbeta med dem och se dem i praktiken.
Quiz efter förelÀsningen
Slutsats
Segmentering Àr en mycket kraftfull teknik för bildklassificering, som gÄr bortom begrÀnsningsramar till pixelnivÄklassificering. Det Àr en teknik som anvÀnds inom medicinsk bildbehandling, bland andra tillÀmpningar.
đ Utmaning
Kroppssegmentering Àr bara en av de vanliga uppgifterna vi kan utföra med bilder av mÀnniskor. Andra viktiga uppgifter inkluderar skelettdetektion och posedetektion. Prova OpenPose-biblioteket för att se hur posedetektion kan anvÀndas.
Granskning & SjÀlvstudier
Denna Wikipedia-artikel erbjuder en bra översikt över de olika tillÀmpningarna av denna teknik. LÀr dig mer pÄ egen hand om subdomÀnerna instancesegmentering och panoptisk segmentering inom detta omrÄde.
Uppgift
I detta labb, prova segmentering av mÀnniskokroppar med Segmentation Full Body MADS Dataset frÄn Kaggle.