En 2021-guide til semantisk segmentering

Kilde node: 872271

Intro

Dyp læring har vært veldig vellykket når man arbeider med bilder som data og er for tiden på et stadium der det fungerer bedre enn mennesker på flere brukssaker. De viktigste problemene som mennesker har vært interessert i å løse med datasyn er bildeklassifisering, gjenkjenning av objekter og segmentering i økende rekkefølge av deres vanskeligheter.

I den vanlige gamle oppgaven med bildeklassifisering er vi bare interessert i å få etikettene til alle objektene som er tilstede i et bilde. I gjenstandsdeteksjon kommer vi et skritt videre og prøver å vite sammen med hva alle objekter som er tilstede i et bilde, stedet der objektene er til stede ved hjelp av avgrensningsbokser. Bildesegmentering tar det til et nytt nivå ved å prøve å finne ut nøyaktig den eksakte grensen til objektene i bildet.

Kilde http://cs224d.stanford.edu/index.html

I denne artikkelen vil vi gå gjennom dette konseptet med bildesegmentering, diskutere relevante brukssaker, forskjellige nevrale nettverksarkitekturer involvert i å oppnå resultatene, beregninger og datasett å utforske.

Hva er bildesegmentering

Vi vet at et bilde ikke er noe annet enn en samling piksler. Bildesegmentering er prosessen med å klassifisere hver piksel i et bilde som tilhører en bestemt klasse og kan derfor betraktes som et klassifiseringsproblem per piksel. Det er to typer segmenteringsteknikker

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Semantisk segmentering : - Semantisk segmentering er prosessen med å klassifisere hver piksel som tilhører en bestemt etikett. Det er ikke forskjellig på tvers av forskjellige forekomster av det samme objektet. For eksempel hvis det er to katter i et bilde, gir semantisk segmentering samme etikett til alle pikslene til begge kattene
  2. Instanssegmentering : - Instanssegmentering skiller seg fra semantisk segmentering i den forstand at den gir en unik etikett til hver forekomst av et bestemt objekt i bildet. Som det fremgår av bildet tildeles alle tre hunder forskjellige farger, dvs. forskjellige etiketter. Med semantisk segmentering ville alle ha fått samme farge.

Så vi vil nå komme til det punktet hvor vi trenger denne typen algoritme

Brukstilfeller av bildesegmentering

Håndskriftgjenkjenning : - Junjo et all demonstrerte hvordan semantisk segmentering brukes til å trekke ut ord og linjer fra håndskrevne dokumenter i deres 2019 forskningspapir å gjenkjenne håndskrevne tegn

kilde

Google portrettmodus : - Det er mange brukstilfeller der det er helt essensielt å skille forgrunnen fra bakgrunnen. For eksempel i Googles portrettmodus kan vi se bakgrunnen uskarpt mens forgrunnen forblir uendret for å gi en kul effekt

Kilde: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

YouTube-historier : - Google ga nylig ut en YouTube-historie for innholdsskapere for å vise forskjellige bakgrunner mens de opprettet historier.

Kilde: - https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

Virtuell sminke : - Å bruke virtuell leppestift er mulig nå ved hjelp av bildesegmentering

Kilde: - https://www.theverge.com/2017/3/16/14946086/sephora-virtual-assistant-ios-app-update-ar-makeup

4. virtuell prøve : - Virtuell prøving av klær er en interessant funksjon som var tilgjengelig i butikker ved hjelp av spesialutstyr som lager en 3d-modell. Men med dyp læring og bildesegmentering kan det samme oppnås med bare et 2d-bilde

Kilde: - https://arxiv.org/pdf/1807.07688.pdf

Visuelt bildesøk : - Ideen om å segmentere klær blir også brukt i algoritmer for bildegjenfinning i e-handel. For eksempel lar Pinterest / Amazon deg laste opp hvilket som helst bilde og få relaterte lignende produkter ved å gjøre et bildesøk basert på segmentering av tøydelen

Kilde: - https://github.com/paucarre/tiefvision

Selvbilende biler : - Selvkjørende biler trenger full forståelse av omgivelsene til et perfekt pixelnivå. Derfor brukes bildesegmentering til å identifisere baner og annen nødvendig informasjon

Kilde: - https://medium.com/intro-to-artificial-intelligence/semantic-segmentation-udaitys-self-driving-car-engineer-nanodegree-c01eb6eaf9d

Nanonets hjelper fortune 500-selskaper med å gi bedre kundeopplevelser i stor skala ved hjelp av Semantic Segmentation.

Metoder og teknikker

Før advent av dyp læring ble klassiske maskinlæringsteknikker som SVM, Random Forest, K-means Clustering brukt til å løse problemet med bildesegmentering. Men som med de fleste bilderelaterte problemstillinger, har dyp læring fungert bedre enn de eksisterende teknikkene og har blitt en norm nå når det gjelder semantisk segmentering. La oss se på teknikkene som brukes til å løse problemet

Fullstendig konvoluttnettverk

Den generelle arkitekturen til et CNN består av få konvolusjons- og poolingslag etterfulgt av få fullt koblede lag på slutten. Papiret til Fully Convolutional Network utgitt i 2014 argumenterer for at det endelige fullt tilkoblede laget kan tenkes å gjøre en 1 × 1-konvolusjon som dekker hele regionen.

Kilde: - https://arxiv.org/abs/1411.4038

Derfor kan de endelige tette lagene erstattes av et konvolusjonslag som oppnår samme resultat. Men nå er fordelen med å gjøre dette størrelsen på inngangen ikke trenger å bli løst lenger. Når du involverer tette lag, er størrelsen på inngangen begrenset, og når en annen størrelse inngang må leveres, må den endres. Men ved å erstatte et tett lag med konvolusjon, eksisterer denne begrensningen ikke.

Også når en større størrelse på bildet er gitt som inngang, vil den produserte utgangen være et funksjonskart og ikke bare en klasseutgang som for et vanlig bilde med inngangsstørrelse. Også den observerte oppførselen til det endelige funksjonskartet representerer varmekartet til den nødvendige klassen, dvs. objektets posisjon er uthevet i funksjonskartet. Siden utdataene fra funksjonskartet er et varmekart over det nødvendige objektet, er det gyldig informasjon for vårt brukstilfelle av segmentering.

Siden funksjonskartet som er oppnådd ved utgangslaget, er en samplet ned på grunn av settet med utførte kramper, vil vi prøveeksemplere det ved hjelp av en interpolasjonsteknikk. Bilinear up sampling fungerer, men papiret foreslår å bruke lært up sampling med deconvolution som til og med kan lære en ikke-lineær up sampling.

Nedsamplingsdelen av nettverket kalles en koder og den opp samplingsdelen kalles en dekoder. Dette er et mønster vi vil se i mange arkitekturer, dvs. redusere størrelsen med koderen og deretter opp sampling med dekoderen. I en ideell verden ville vi ikke ønske å nedprøve ved hjelp av pooling og holde samme størrelse hele veien, men det ville føre til en enorm mengde parametere og ville være beregningsmessig gjennomførbar.

Kilde: - https://arxiv.org/abs/1411.4038

Selv om resultatene som er oppnådd har vært anstendige, er den observerte produksjonen grov og ikke jevn. Årsaken til dette er tap av informasjon ved det endelige funksjonslaget på grunn av nedprøving 32 ganger ved bruk av konvolusjonslag. Nå blir det veldig vanskelig for nettverket å gjøre 32 ganger sampling ved å bruke denne lille informasjonen. Denne arkitekturen kalles FCN-32

For å løse dette problemet foreslo papiret to andre arkitekturer FCN-2, FCN-16. I FCN-8 brukes informasjon fra forrige poolinglag sammen med det endelige funksjonskartet, og nå er nettverkets oppgave å lære 16x opp sampling som er bedre sammenlignet med FCN-16. FCN-32 prøver å gjøre det enda bedre ved å inkludere informasjon fra et forrige poolinglag til.

Unet

U-net bygger på toppen av det fullt konvolusjonsnettverket ovenfra. Den ble bygget for medisinske formål for å finne svulster i lungene eller hjernen. Den består også av en koder som nedeksemplerer inngangsbildet til et funksjonskart og dekoderen som opp sampler funksjonskartet for å legge inn bildestørrelse ved bruk av lærte dekonvolusjonslag.

Kilde: - https://arxiv.org/abs/1505.04597

Hovedbidraget til U-Net-arkitekturen er snarveisforbindelsene. Vi så ovenfor i FCN at siden vi nedprøver et bilde som en del av koderen, mistet vi mye informasjon som ikke lett kan gjenopprettes i koderdelen. FCN prøver å ta tak i dette ved å ta informasjon fra lagringslag før det endelige funksjonslaget.

U-Net foreslår en ny tilnærming for å løse dette informasjonstapsproblemet. Det foreslås å sende informasjon til hvert opp samplingslag i dekoder fra det tilsvarende ned samplingslaget i koderen som kan sees i figuren ovenfor, og dermed fange finere informasjon samtidig som beregningen holdes lav. Siden lagene i begynnelsen av koderen ville ha mer informasjon, ville de styrke oppsamplingsoperasjonen til dekoderen ved å gi fine detaljer som tilsvarer inngangsbildene og dermed forbedre resultatene mye. Avisen foreslo også bruk av en ny tapfunksjon som vi vil diskutere nedenfor.

DeepLab

Deeplab fra en gruppe forskere fra Google har foreslått en rekke teknikker for å forbedre de eksisterende resultatene og få finere produksjon til lavere beregningskostnader. De tre viktigste forbedringene som er foreslått som en del av forskningen er

1) Atrous innviklinger
2) Atrous Spatial Pyramidal Pooling
3) Betinget tilfeldig feltbruk for å forbedre den endelige produksjonen
La oss diskutere om alle disse

Atrous konvolusjon

Et av de største problemene med FCN-tilnærmingen er overdreven nedbemanning på grunn av sammenhengende pooling-operasjoner. På grunn av serier av samleprøve blir inngangsbildet nede samplet med 32 ganger, som igjen blir samplet for å få segmenteringsresultatet. Nedprøving med 32 ganger resulterer i tap av informasjon, noe som er veldig viktig for å få fine resultater i en segmenteringsoppgave. Dekonvolusjon til opp prøve med 32 ganger er også en beregning og minne kostbar operasjon siden det er flere parametere involvert i å danne en opplært sampling.

Papiret foreslår bruk av Atrous-konvolusjon eller hullkonvolusjon eller utvidet konvolusjon som hjelper til med å få en forståelse av stor kontekst ved bruk av samme antall parametere.

Source:- https://www.mdpi.com/1424-8220/19/24/5361/htm

Dilatert konvolusjon fungerer ved å øke størrelsen på filteret ved å legge til nuller (kalt hull) for å fylle gapet mellom parametrene. Antall hull / nuller fylt ut mellom filterparametrene kalles med en term utvidningshastighet. Når hastigheten er lik 1, er det ingenting annet enn den normale konvolusjonen. Når hastigheten er lik 2, settes det inn en null mellom hver annen parameter, slik at filteret ser ut som en 5 × 5-konvolusjon. Nå har den kapasiteten til å få sammenheng med 5 × 5-konvolusjon mens den har 3 × 3-konvolusjonsparametere. Tilsvarende for hastighet 3 går det mottakelige feltet til 7 × 7.

I Deeplab erstattes de siste poolinglagene for å ha trinn 1 i stedet for 2, og holder dermed samplingshastigheten nede til bare 8 ganger. Deretter blir en serie av fryktinngytende kramper brukt for å fange den større konteksten. For trening samples utgangsmerket maske med 8 ganger for å sammenligne hver piksel. For slutning brukes bilinear up sampling til å produsere output av samme størrelse som gir anstendig nok resultater til lavere beregnings- / minnekostnader siden bilinear up sampling ikke trenger noen parametere i motsetning til dekonvolusjon for up sampling.

ASPP

Spatial Pyramidal Pooling er et konsept introdusert i SPPNet for å fange informasjon i flere mål fra et funksjonskart. Før introduksjonen av SPP leveres inngangsbilder med forskjellige oppløsninger, og de beregnede funksjons kartene brukes sammen for å få informasjon om flere mål, men dette tar mer beregning og tid. Med Spatial Pyramidal Pooling kan flerskala informasjon fanges med et enkelt inngangsbilde.

Kilde: - http://kaiminghe.com/eccv14sppnet/index.html

Med SPP-modulen produserer nettverket 3 utganger med dimensjonene 1 × 1 (dvs. GAP), 2 × 2 og 4 × 4. Disse verdiene blir sammenkoblet ved å konvertere til en 1d-vektor og dermed fange informasjon i flere skalaer. En annen fordel ved å bruke SPP er at du kan legge inn bilder i alle størrelser.

ASPP tar konseptet med å smelte sammen informasjon fra forskjellige skalaer og bruker den på Atrous convolutions. Inngangen er innblandet med forskjellige utvidelseshastigheter, og utgangene til disse er smeltet sammen.

Kilde: - http://liangchiehchen.com/projects/DeepLab.html

Som det fremgår er inngangen innblandet med 3 × 3 filtre med utvidelseshastighetene 6, 12, 18 og 24, og utgangene sammenkobles siden de har samme størrelse. En 1 × 1-konvoluttutgang legges også til den smeltede utgangen. For å også gi global informasjon blir GAP-utgangen også lagt til ovenfor etter prøvetaking. Den sammensmeltede utgangen på 3 × 3 varierte utvidede utganger, 1 × 1 og GAP-utgang føres gjennom 1 × 1 konvolusjon for å komme til det nødvendige antall kanaler.

Siden det nødvendige bildet som skal segmenteres, kan være av hvilken som helst størrelse i inngangen, hjelper flerskalainformasjonen fra ASPP med å forbedre resultatene.

Forbedre produksjonen med CRF

Pooling er en operasjon som hjelper til med å redusere antall parametere i et nevralt nettverk, men det gir også en variasjonseiendom sammen med den. Invariance er kvaliteten på et nevralt nettverk som ikke påvirkes av små oversettelser i input. På grunn av denne egenskapen oppnådd med pooling er segmenteringsutgangen som er oppnådd av et nevralt nettverk grov og grensene er ikke konkret definert.

Kilde: - http://liangchiehchen.com/projects/DeepLab.html

For å håndtere dette foreslår artikkelen bruk av grafisk modell CRF. Betinget tilfeldig felt driver et etterbehandlingstrinn og prøver å forbedre resultatene som produseres for å definere formgrenser. Det fungerer ved å klassifisere en piksel basert ikke bare på etiketten, men også basert på andre pikseletiketter. Som det fremgår av figuren ovenfor blir den grove grensen produsert av nevrale nettverk mer raffinert etter å ha passert gjennom CRF.

Deeplab-v3 introduserte batchnormalisering og antydet utvidelsesgrad multiplisert med (1,2,4) inne i hvert lag i en Resnet-blokk. Å legge til bildefunksjoner i ASPP-modulen som ble diskutert i diskusjonen ovenfor om ASPP ble foreslått som en del av denne artikkelen

Kilde: - https://arxiv.org/pdf/1706.05587.pdf

Deeplab-v3 + foreslo å ha en dekoder i stedet for vanlig bilinær opp sampling 16x. Dekoderen tar et hint fra dekoderen som brukes av arkitekturer som U-Net, som tar informasjon fra kodelag for å forbedre resultatene. Koderutgangen blir samplet 4x ved hjelp av bilinear up sampling og sammenkoblet med funksjonene fra koderen som igjen er samplet 4x etter å ha utført en 3 × 3-konvolusjon. Denne tilnærmingen gir bedre resultater enn en direkte prøvetaking på 16 ganger. Også modifisert Xception-arkitektur foreslås brukt i stedet for Resnet som en del av koderen, og dybdeskillelige konvolusjoner brukes nå på toppen av Atrous-viklinger for å redusere antall beregninger.

Globalt konvolusjonsnettverk

Kilde: - https://arxiv.org/pdf/1703.02719.pdf

Semantisk segmentering innebærer å utføre to oppgaver samtidig

i) Klassifisering
ii) Lokalisering

Klassifiseringsnettverkene er opprettet for å være uforanderlige i forhold til oversettelse og rotasjon, og gir dermed ingen betydning for lokaliseringsinformasjon, mens lokaliseringen innebærer å få nøyaktige detaljer for stedet. Derfor er disse to oppgavene motstridende. De fleste segmenteringsalgoritmer gir lokalisering mer betydning, dvs. den andre i figuren ovenfor, og mister dermed global kontekst av syne. I dette arbeidet foreslår forfatteren en måte å legge vekt på klassifiseringsoppgaven samtidig som den ikke mister lokaliseringsinformasjonen

Kilde: - https://arxiv.org/pdf/1703.02719.pdf

Forfatteren foreslår å oppnå dette ved å bruke store kjerner som en del av nettverket og dermed muliggjøre tette forbindelser og dermed mer informasjon. Dette oppnås ved hjelp av en GCN-blokk som kan sees i figuren ovenfor. GCN-blokk kan betraktes som akxk-konvolusjonsfilter hvor k kan være et tall større enn 3. For å redusere antall parametere blir akxk-filteret delt opp i 1 xk og kx 1, kx1 og 1xk blokker som deretter oppsummeres. Dermed fanges større kontekst ved å øke verdien k.

I tillegg foreslår forfatteren en Boundary Refinement-blokk som ligner på en restblokk sett i Resnet bestående av en snarveiforbindelse og en restforbindelse som oppsummeres for å få resultatet. Det observeres at å ha en grensefinanseringsblokk resulterte i å forbedre resultatene ved segmenteringsgrensen.

Resultatene viste at GCN-blokken forbedret klassifiseringsnøyaktigheten til piksler nærmere sentrum av objektet, noe som indikerer forbedringen forårsaket på grunn av fangst av lang rekkevidde, mens Boundary Refinement-blokk hjalp til med å forbedre nøyaktigheten til piksler nærmere grensen.

Se mer enn en gang - KSAC for semantisk segmentering

Deeplab-familien bruker ASPP for å ha flere mottakelige felt som fanger informasjon ved hjelp av forskjellige fryktelige konvolusjonshastigheter. Selv om ASPP har vært betydelig nyttig for å forbedre segmenteringen av resultatene, er det noen iboende problemer forårsaket på grunn av arkitekturen. Det er ingen informasjon som deles på tvers av de forskjellige parallelle lagene i ASPP, noe som påvirker generaliseringskraften til kjernene i hvert lag. Siden hvert lag henvender seg til forskjellige sett med treningsprøver (mindre gjenstander til mindre atrous hastighet og større objekter til større atrous hastigheter), vil datamengden for hvert parallelle lag være mindre og dermed påvirke den generelle generaliserbarheten. Antallet parametere i nettverket øker også lineært med antall parametere og kan dermed føre til overmontering.

Kilde: - https://arxiv.org/pdf/1908.09443.pdf

For å håndtere alle disse problemene foreslår forfatteren en ny nettverksstruktur kalt Kernel-Sharing Atrous Convolution (KSAC). Som det kan sees i figuren ovenfor, i stedet for å ha en annen kjerne for hvert parallelle lag er ASPP, deles en enkelt kjerne over og forbedrer nettverksgeneraliseringsevnen. Ved å bruke KSAC i stedet for ASPP lagres 62% av parametrene når dilatasjonshastigheter på 6,12 og 18 brukes.

En annen fordel ved å bruke en KSAC-struktur er at antall parametere er uavhengig av antall utvidelseshastigheter som brukes. Dermed kan vi legge til så mange priser som mulig uten å øke modellstørrelsen. ASPP gir best resultat med priser 6,12,18, men nøyaktigheten reduseres med 6,12,18,24, noe som indikerer mulig overmontering. Men KSAC-nøyaktighet forbedres fortsatt betydelig, noe som indikerer forbedret generaliseringsevne.

Denne kjernedelingsteknikken kan også sees på som en forstørrelse i funksjonsområdet, siden den samme kjernen brukes over flere hastigheter. I likhet med hvordan inngangsforstørrelse gir bedre resultater, bør funksjonforstørrelse utført i nettverket bidra til å forbedre representasjonsevnen til nettverket.

Videosegmentering

For brukstilfeller som selvkjørende biler, roboter etc. er det behov for sanntidssegmentering av den observerte videoen. Arkitekturene som er diskutert så langt er ganske mye designet for nøyaktighet og ikke for hastighet. Så hvis de brukes per ramme på en video, vil resultatet komme i veldig lav hastighet.

Generelt sett er det i en video mye overlapping i scener på tvers av påfølgende rammer som kan brukes til å forbedre resultatene og hastigheten som ikke kommer inn i bildet hvis analysen gjøres per ramme. La oss bruke disse signalene og diskutere arkitekturer som er spesielt designet for videoer

STFCN

Spatio-Temporal FCN foreslår å bruke FCN sammen med LSTM for å gjøre videosegmentering. Vi er allerede klar over hvordan FCN kan brukes til å trekke ut funksjoner for segmentering av et bilde. LSTM er et slags nevrale nettverk som kan fange sekvensiell informasjon over tid. STFCN kombinerer kraften til FCN med LSTM for å fange både romlig informasjon og tidsinformasjon

Kilde: - https://arxiv.org/abs/1608.05971

Som det fremgår av figuren ovenfor, består STFCN av en FCN, Spatio-temporal module etterfulgt av dekonvolusjon. Funksjonskartet produsert av et FCN sendes til Spatio-Temporal Module som også har en inngang fra forrige rammes modul. Modulen basert på begge disse inngangene fanger opp tidsinformasjonen i tillegg til den romlige informasjonen og sender den over som er samplet til den opprinnelige størrelsen på bildet ved hjelp av avvikling som ligner på hvordan det gjøres i FCN

Siden både FCN og LSTM jobber sammen som en del av STFCN, kan nettverket trekkes mot slutten og utkonkurrerer en enkel rammesegmentering. Det er lignende tilnærminger der LSTM erstattes av GRU, men konseptet er det samme å fange både romlig og tidsmessig informasjon

Semantiske video-CNN gjennom Representasjonssvinging

Denne artikkelen foreslår bruk av optisk flyt over tilstøtende rammer som en ekstra inngang for å forbedre segmenteringsresultatene

Kilde: - https://arxiv.org/abs/1708.03088

Den foreslåtte tilnærmingen kan brukes til hvilken som helst standardarkitektur som en plugin-modul. Den viktigste ingrediensen som er i spill er NetWarp-modulen. For å beregne segmenteringskartet beregnes den optiske strømmen mellom gjeldende ramme og forrige ramme, dvs. Ft og føres gjennom en FlowCNN for å få Λ (Ft). Denne prosessen kalles flytransformasjon. Denne verdien sendes gjennom en varpmodul som også tar som inngang funksjonskartet til et mellomlag beregnet ved å passere gjennom nettverket. Dette gir et skjevt funksjonskart som deretter kombineres med det mellomliggende funksjonskartet for det gjeldende laget, og hele nettverket blir trent fra ende til annen. Denne arkitekturen oppnådde SOTA-resultater på CamVid og Cityscapes datasett for videorekord.

Clockwork konvergerer for videosemantisk segmentering

Denne artikkelen foreslår å forbedre gjennomføringshastigheten til et nevralt nettverk for segmenteringsoppgave på videoer ved å utnytte det faktum at semantisk informasjon i en video endres sakte sammenlignet med informasjon på pikselnivå. Så informasjonen i de endelige lagene endres i et mye lavere tempo sammenlignet med begynnelselagene. Papiret foreslår forskjellige tider

Kilde: - https://arxiv.org/abs/1608.03609

Ovennevnte figur representerer endringshastighetssammenligning for et mellomnivå lag pool4 og et dypt lag fc7. Til venstre ser vi at siden det er mye endring på tvers av rammene, viser begge lagene en endring, men endringen for pool4 er høyere. Til høyre ser vi at det ikke er mye endring på tvers av rammene. Derfor viser pool4 marginale endringer, mens fc7 viser nesten ingen endring.

Forskningen benytter dette konseptet og antyder at i tilfeller der det ikke er mye av en endring på tvers av rammene, er det ikke behov for å beregne funksjonene / utgangene igjen, og de bufrede verdiene fra forrige ramme kan brukes. Siden endringshastigheten varierer med lag, kan forskjellige klokker stilles inn for forskjellige lag. Når klokken tikker, beregnes de nye utgangene, ellers brukes de bufrede resultatene. Hastigheten på klokker kan være statisk fast eller kan læres dynamisk

Kilde: - https://arxiv.org/abs/1608.03609

Lav latens video semantisk segmentering

Denne artikkelen forbedres på toppen av ovennevnte diskusjon ved å velge rammene for å beregne segmenteringskartet eller bruke det bufrede resultatet i stedet for å bruke en fast tidtaker eller en heuristikk.

Kilde: - https://arxiv.org/abs/1804.00389

Oppgaven foreslår å dele nettverket i to deler, funksjoner på lavt nivå og funksjoner på høyt nivå. Kostnadene ved å beregne funksjoner på lavt nivå i et nettverk er mye mindre sammenlignet med høyere funksjoner. Forskningen antyder å bruke nettfunksjonene på lavt nivå som en indikator på endringen i segmenteringskart. I sine observasjoner fant de sterk sammenheng mellom endring av funksjoner på lavt nivå og endring av segmenteringskart. Så for å forstå om det er behov for å beregne om det er behov for å beregne de høyere funksjonene, blir forskjellen på lavere funksjoner over to rammer funnet og sammenlignet hvis den krysser en bestemt terskel. Hele denne prosessen automatiseres av et lite nevralt nettverk som har som oppgave å ta lavere funksjoner i to bilder og gi en prediksjon om høyere funksjoner skal beregnes eller ikke. Siden beslutningen om nettverket er basert på inngangsrammene, er beslutningen som tas dynamisk sammenlignet med fremgangsmåten ovenfor.

Segmentering for punktskyer

Data som kommer fra en sensor som lidar lagres i et format som kalles Point Cloud. Punktsky er ikke annet enn en samling av uordnet sett med 3d datapunkter (eller en hvilken som helst dimensjon). Det er en sparsom representasjon av scenen i 3d og CNN kan ikke brukes direkte i et slikt tilfelle. Også enhver arkitektur designet for å håndtere punktskyer bør ta i betraktning at det er et uordnet sett og dermed kan ha mange mulige permutasjoner. Så nettverket skal være permutasjons invariant. Også punktene som er definert i punktskyen kan beskrives av avstanden mellom dem. Så nærmere punkter generelt har nyttig informasjon som er nyttig for segmenteringsoppgaver

PointNet

PointNet er et viktig papir i historien om forskning på punktskyer ved hjelp av dyp læring for å løse oppgavene til klassifisering og segmentering. La oss studere arkitekturen til Pointnet

Kilde: - https://arxiv.org/abs/1612.00593

Inngang av nettverket for n poeng er en nx 3 matrise. nx 3-matrisen er kartlagt til nx 64 ved hjelp av et delt multi-perseptronlag (fullt tilkoblet nettverk) som deretter blir kartlagt til nx 64 og deretter til nx 128 og nx 1024. Maks pooling brukes for å få en 1024-vektor som blir konvertert til k utganger ved å passere gjennom MLP-er med størrelsene 512, 256 og k. Endelig produseres k-klassens utganger som alle klassifiseringsnettverk.

Klassifisering handler bare om de globale funksjonene, men segmentering trenger også lokale funksjoner. Så de lokale funksjonene fra mellomlaget på nx 64 er sammenkoblet med globale funksjoner for å få angst 1088 matrise som sendes gjennom mlp på 512 og 256 for å komme til nx 256, og selv om MLP er på 128 og m for å gi m utgangsklasser for hvert punkt i punktsky.

Også nettverket involverer en inngangstransformasjon og funksjonstransformasjon som en del av nettverket hvis oppgave er å ikke endre formen på inngangen, men legge til invarians i affine transformasjoner, dvs. oversettelse, rotasjon etc.

A-CNN

Kilde: - https://arxiv.org/abs/1904.08017

A-CNN foreslår bruk av ringformede krøller for å fange romlig informasjon. Vi vet fra CNN at konvolusjonsoperasjoner fanger opp lokal informasjon som er viktig for å få en forståelse av bildet. A-CNN utviklet en ny konvolusjon kalt Annular convolution som brukes på nabolagspunkter i en punktsky.

Arkitekturen tar som inngang nx 3 poeng og finner normaler for dem som brukes til å bestille punkter. Et underprøve av poeng er tatt ved hjelp av FPS-algoritmen som resulterer i ni x 3 poeng. På disse ringformede konvolusjoner brukes for å øke til 128 dimensjoner. Ringformet konvolusjon utføres på nabolagspunktene som bestemmes ved hjelp av en KNN-algoritme.

Et annet sett med de ovennevnte operasjonene blir utført for å øke dimensjonene til 256. Deretter påføres en mlp for å endre dimensjonene til 1024 og pooling blir brukt for å få en 1024 global vektor som ligner på point-cloud. Hele denne delen regnes som koderen. For klassifisering sendes koderenes globale utgang gjennom mlp for å få c-klasses utganger. For segmenteringsoppgaven anses både de globale og lokale funksjonene som ligner på PointCNN, og blir deretter ført gjennom en MLP for å få m-klasses utganger for hvert punkt.

Metrics

La oss diskutere beregningene som vanligvis brukes til å forstå og evaluere resultatene av en modell.

Pikselnøyaktighet

Pikselnøyaktighet er den mest grunnleggende beregningen som kan brukes til å validere resultatene. Nøyaktighet oppnås ved å ta forholdet mellom riktig klassifiserte piksler og totalt antall piksler

Nøyaktighet = (TP + TN) / (TP + TN + FP + FN)

Den største ulempen ved å bruke en slik teknikk er at resultatet kan se bra ut hvis den ene klassen overmanner den andre. Si for eksempel at bakgrunnsklassen dekker 90% av inngangsbildet, vi kan få en nøyaktighet på 90% ved å bare klassifisere hver piksel som bakgrunn

Kryss over union

IOU er definert som forholdet mellom skjæringspunktet mellom bakkesannhet og forutsagte segmenteringsutganger over deres forening. Hvis vi beregner for flere klasser, beregnes IOU for hver klasse og gjennomsnittet blir tatt. Det er en bedre beregning sammenlignet med pikselnøyaktighet, som om hver piksel er gitt som bakgrunn i en 2-klassers inngang. IOU-verdien er (90/100 + 0/100) / 2, dvs. 45% IOU, som gir en bedre representasjon sammenlignet med 90. % nøyaktighet.

Kilde: - https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection

Frekvensveid IOU

Dette er en utvidelse over gjennomsnittlig IOU som vi diskuterte og brukes til å bekjempe ubalanse i klassen. Hvis en klasse dominerer det meste av bildene i et datasett som for eksempel bakgrunn, må den veies ned sammenlignet med andre klasser. I stedet for å ta gjennomsnittet av alle klasseresultatene, blir et vektet gjennomsnitt tatt ut fra frekvensen til klasseområdet i datasettet.

F1-poengsum

Målingen populært brukt i klassifisering F1 Score kan også brukes til segmenteringsoppgaver for å håndtere ubalanse i klassen.

Kilde: - https://en.wikipedia.org/wiki/F1_score

Gjennomsnittlig presisjon

Areal under Precision - Recall-kurven for et valgt terskel-IOU-gjennomsnitt over forskjellige klasser brukes til å validere resultatene.

Tap funksjoner

Tapfunksjon brukes til å veilede nevrale nettverk mot optimalisering. La oss diskutere noen få populære tapfunksjoner for semantisk segmenteringsoppgave.

Kors entropi tap

Enkelt gjennomsnitt av kryss-entropiklassifiseringstap for hver piksel i bildet kan brukes som en samlet funksjon. Men dette lider igjen på grunn av klassebalanse som FCN foreslår å rette opp ved hjelp av klassevekter

UNet prøver å forbedre dette ved å gi mer vektalder til piksler nær grensen som er en del av grensen sammenlignet med indre piksler, da dette får nettverket til å fokusere mer på å identifisere grenser og ikke gi en grov utgang.

Fokaltap

Fokaltap ble designet for å få nettverket til å fokusere på harde eksempler ved å gi mer vektalder og også for å håndtere ekstrem klasse ubalanse observert i enkelt-trinns objektdetektorer. Det samme kan også brukes i semantiske segmenteringsoppgaver

Terningtap

Terningfunksjon er ingenting annet enn F1-poengsum. Denne tapsfunksjonen prøver direkte å optimalisere F1-poengsummen. Tilsvarende direkte IOU score kan også brukes til å kjøre optimalisering

Tversky Tap

Det er en variant av terningtap som gir forskjellig vektalder til FN og FP

Hausdorff avstand

Det er en teknikk som brukes til å måle likhet mellom grenser for bakkesannhet og forutsagt. Det beregnes ved å finne ut maks avstand fra et hvilket som helst punkt i den ene grensen til det nærmeste punktet i den andre. Å redusere direkte grensetapfunksjonen er en nylig trend og har vist seg å gi bedre resultater, spesielt i brukstilfeller som medisinsk bildesegmentering der identifikasjon av den eksakte grensen spiller en nøkkelrolle.

Fordelen med å bruke et grensetap sammenlignet med et regionbasert tap som IOU eller Dice Loss, er at det ikke påvirkes av klassebalanse siden hele regionen ikke blir vurdert for optimalisering, bare grensen blir vurdert.

Kilde https://en.wikipedia.org/wiki/Hausdorff_distance

De to begrepene som er vurdert her er for to grenser, dvs. bakkesannheten og utgangsforutsigelsen.

LabelMe :-

Bildemerkningsverktøy skrevet i python.
Støtter polygonkommentarer.
Open Source og gratis.
Kjører på Windows, Mac, Ubuntu eller via Anaconda, Docker
Lenke: - https://github.com/wkentaro/labelme

Kilde: - https://github.com/wkentaro/labelme

Computer Vision Annotation Tool: -

Video- og bildeanmerkningsverktøy utviklet av Intel
Gratis og tilgjengelig online
Kjører på Windows, Mac og Ubuntu
Lenke: - https://github.com/opencv/cvat

Vgg-billedkommentar: -

Gratis verktøy for åpen kommentar for bildekoding
Enkel html-side <200 kb og kan kjøres offline
Støtter polygonkommentarer og punkter.
Lenke: - https://github.com/ox-vgg/via

Kilde: - https://github.com/ox-vgg/via

Rektemerke: -

Betalt annoteringsverktøy for Mac
Kan bruke ML-kjernemodeller for å kommentere bildene på forhånd
Støtter polygoner, kubikk-bezier, linjer og punkter
Lenke: - https://github.com/ryouchinsa/Rectlabel-support

Etikettboks: -

Betalt annoteringsverktøy
Støtter pennverktøy for raskere og nøyaktig merknad
Lenke: - https://labelbox.com/product/image-segmentation

datasett

Som en del av denne delen, la oss diskutere forskjellige populære og varierte datasett som er tilgjengelige i offentligheten, og som du kan bruke for å komme i gang med trening.

Pascal Kontekst

Dette datasettet er en utvidelse av Pascal VOC 2010 datasettet og går utover det opprinnelige datasettet ved å gi kommentarer til hele scenen og har 400+ klasser av virkelige data.

Kilde: - https://cs.stanford.edu/~roozbeh/pascal-context/
Kilde: - https://cs.stanford.edu/~roozbeh/pascal-context/

Lenke: - https://cs.stanford.edu/~roozbeh/pascal-context/

COCO datasett

COCO stuff-datasettet har 164 172 bilder av det originale COCO-datasettet med merknader på pikselnivå og er et vanlig referansedatasett. Den dekker 80 klasser: 91 tingklasser, 1 tingklasser og XNUMX klasse 'umerket'

Kilde: - http://cocodataset.org/#home

Lenke: - http://cocodataset.org/

Bylandskap datasett

Dette datasettet består av segmenterte bakkesannheter for veier, kjørefelt, kjøretøy og gjenstander på veien. Datasettet inneholder 30 klasser og 50 byer samlet over forskjellige miljø- og værforhold. Har også et videosett med finkommenterte bilder som kan brukes til videosegmentering. KITTI og CamVid er lignende datasett som kan brukes til å trene selvkjørende biler.

Kilde: - https://www.cityscapes-dataset.com/

Lenke: - https://www.cityscapes-dataset.com/

Lits datasett

Datasettet ble opprettet som en del av en utfordring for å identifisere svulstlesjoner fra lever-CT-skanninger. Datasettet inneholder 130 CT-skanninger av treningsdata og 70 CT-skanninger av testdata.

Kilde: - https://competitions.codalab.org/competitions/17094

Lenke: - https://competitions.codalab.org/competitions/17094

KKP-datasett

Cloth Co-Parsing er et datasett som er opprettet som en del av forskningspapiret Clothing Co-Parsing av Joint Image Segmentation and Labeling. Datasettet inneholder mer enn 1000 bilder med pikselnivåkommentarer for totalt 59 koder.

Kilde: - https://github.com/bearpaw/clothing-co-parsing

Kilde: - https://github.com/bearpaw/clothing-co-parsing

Pratheepan datasett

Et datasett opprettet for oppgaven med hudsegmentering basert på bilder fra google som inneholder 32 ansiktsbilder og 46 familiebilder

Kilde: - http://cs-chan.com/downloads_skin_dataset.html

Lenke: - http://cs-chan.com/downloads_skin_dataset.html

Inria Aerial Image Labelling

Et datasett med segmenteringskart fra luften opprettet fra bilder av offentlig domene. Har en dekning på 810 kvadratkilometer og har 2 klasser bygning og ikke-bygning.

Kilde: - https://project.inria.fr/aerialimagelabeling/
Kilde: - https://project.inria.fr/aerialimagelabeling/

Lenke: - https://project.inria.fr/aerialimagelabeling/

S3DIS

Dette datasettet inneholder punktskyene til seks store skala innendørsdeler i 3 bygninger med over 70000 bilder.

Kilde: - http://buildingparser.stanford.edu/dataset.html

Lenke: - http://buildingparser.stanford.edu/dataset.html

Oppsummering

Vi har diskutert en taksonomi av forskjellige algoritmer som kan brukes til å løse bruken av semantisk segmentering, det være seg på bilder, videoer eller punktskyer, og også deres bidrag og begrensninger. Vi så også gjennom måtene å evaluere resultatene og datasettene for å komme i gang med. Dette skal gi en omfattende forståelse av semantisk segmentering som tema generelt.

For å få en liste over flere ressurser for semantisk segmentering, kom i gang med https://github.com/mrgloom/awesome-semantic-segmentation.

Videre Reading


Du kan være interessert i de siste innleggene våre på:

Oppdatering:
Lagt til ytterligere lesestoff.

Kilde: https://nanonets.com/blog/semantic-image-segmentation-2020/

Tidstempel:

Mer fra AI og maskinlæring