En 2021 guide til semantisk segmentering

Kildeknude: 872271

Intro

Deep learning har været meget vellykket, når man arbejder med billeder som data og er i øjeblikket på et stadie, hvor det fungerer bedre end mennesker på flere use-cases. De vigtigste problemer, som mennesker har været interesseret i at løse med computersyn, er billedklassificering, objektdetektering og segmentering i stigende rækkefølge efter deres sværhedsgrad.

I den almindelige gamle opgave med billedklassificering er vi bare interesserede i at få etiketterne på alle de objekter, der er til stede i et billede. I objektdetektion kommer vi et skridt videre og forsøger at vide, sammen med hvad alle objekter, der er til stede i et billede, det sted, hvor objekterne er til stede ved hjælp af afgrænsningsfelter. Billedsegmentering tager det til et nyt niveau ved at forsøge at finde ud af nøjagtigt den nøjagtige grænse for objekterne i billedet.

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

I denne artikel vil vi gennemgå dette koncept for billedsegmentering, diskutere de relevante use-cases, forskellige neurale netværksarkitekturer, der er involveret i at opnå de resultater, metrikker og datasæt, der skal udforskes.

Hvad er billedsegmentering

Vi ved, at et billede ikke er andet end en samling af pixels. Billedsegmentering er processen med at klassificere hver pixel i et billede, der tilhører en bestemt klasse, og kan derfor opfattes som et klassifikationsproblem pr. pixel. Der er to typer segmenteringsteknikker

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Semantisk segmentering :- Semantisk segmentering er processen med at klassificere hver pixel, der tilhører en bestemt etiket. Det er ikke forskelligt på tværs af forskellige forekomster af det samme objekt. For eksempel hvis der er 2 katte i et billede, giver semantisk segmentering samme etiket til alle pixels på begge katte
  2. Forekomstsegmentering :- Forekomstsegmentering adskiller sig fra semantisk segmentering i den forstand, at det giver en unik etiket til hver forekomst af et bestemt objekt i billedet. Som det kan ses på billedet ovenfor, er alle 3 hunde tildelt forskellige farver, dvs. forskellige mærker. Med semantisk segmentering ville de alle være blevet tildelt den samme farve.

Så vi kommer nu til det punkt, hvor vi har brug for denne form for en algoritme

Use-cases af billedsegmentering

Håndskriftsgenkendelse :- Junjo et alle demonstrerede, hvordan semantisk segmentering bliver brugt til at udtrække ord og linjer fra håndskrevne dokumenter i deres 2019 forsknings papir at genkende håndskrevne tegn

Kilde

Google portrættilstand :- Der er mange use-cases, hvor det er helt essentielt at adskille forgrund fra baggrund. For eksempel i Googles portrættilstand kan vi se baggrunden sløret, mens forgrunden forbliver uændret for at give en cool effekt

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

YouTube-historier :- Google har for nylig udgivet en funktion YouTube-historier til indholdsskabere for at vise forskellige baggrunde, mens de opretter historier.

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

Virtuel make-up :- Påføring af virtuel læbestift er nu muligt ved hjælp af billedsegmentering

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

4. Virtuel prøve-på :- Virtuel prøvning af tøj er en interessant funktion, som var tilgængelig i butikker ved hjælp af specialiseret hardware, som skaber en 3d-model. Men med deep learning og billedsegmentering kan det samme opnås ved blot at bruge et 2d-billede

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

Visuel billedsøgning :- Ideen om at segmentere tøjet bruges også i billedhentningsalgoritmer i e-handel. For eksempel giver Pinterest/Amazon dig mulighed for at uploade et hvilket som helst billede og få relaterede lignende produkter ved at lave en billedsøgning baseret på segmentering af stofdelen

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

Selvkørende biler :- Selvkørende biler har brug for en fuldstændig forståelse af deres omgivelser til et pixel perfekt niveau. Derfor bruges billedsegmentering til at identificere baner og anden nødvendig information

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

Nanonets hjælper Fortune 500-virksomheder med at muliggøre bedre kundeoplevelser i stor skala ved hjælp af semantisk segmentering.

Metoder og teknikker

Før fremkomsten af ​​deep learning blev klassiske maskinlæringsteknikker som SVM, Random Forest, K-means Clustering brugt til at løse problemet med billedsegmentering. Men som med de fleste billedrelaterede problemformuleringer har dyb læring fungeret meget bedre end de eksisterende teknikker og er blevet en norm nu, når man beskæftiger sig med semantisk segmentering. Lad os gennemgå de teknikker, der bliver brugt til at løse problemet

Fuldt konvolutionerende netværk

Den generelle arkitektur af et CNN består af få foldnings- og poollag efterfulgt af få fuldt forbundne lag i slutningen. Avisen fra Fully Convolutional Network udgivet i 2014 hævder, at det endelige fuldt forbundne lag kan opfattes som en 1×1 foldning, der dækker hele regionen.

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

Derfor kan de endelige tætte lag erstattes af et foldningslag, der opnår det samme resultat. Men nu er fordelen ved at gøre dette, at størrelsen af ​​input ikke længere skal rettes. Når der involveres tætte lag, er størrelsen af ​​input begrænset, og når en anden størrelse input skal tilvejebringes, skal den derfor ændres. Men ved at erstatte et tæt lag med foldning, eksisterer denne begrænsning ikke.

Når en større billedstørrelse leveres som input, vil outputtet også være et funktionskort og ikke kun et klasseoutput som for et billede i normal inputstørrelse. Også den observerede adfærd af det endelige funktionskort repræsenterer varmekortet for den påkrævede klasse, dvs. objektets position er fremhævet i featurekortet. Da outputtet af funktionskortet er et varmekort af det påkrævede objekt, er det gyldig information til vores brugssag med segmentering.

Da featurekortet opnået ved outputlaget er en nedsamplet på grund af det udførte sæt af foldninger, vil vi ønske at up-sample det ved hjælp af en interpolationsteknik. Bilineær op-sampling virker, men papiret foreslår at bruge indlært sampling med dekonvolution, som endda kan lære en ikke-lineær op-sampling.

Nedsamplingsdelen af ​​netværket kaldes en koder, og den opadgående samplingsdel kaldes en dekoder. Dette er et mønster, vi vil se i mange arkitekturer, dvs. at reducere størrelsen med encoder og derefter opsample med dekoder. I en ideel verden ville vi ikke ønske at nedsætte prøven ved hjælp af pooling og beholde den samme størrelse hele vejen igennem, men det ville føre til en enorm mængde parametre og ville være beregningsmæssigt umuligt at gennemføre.

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

Selvom de opnåede outputresultater har været anstændige, er det observerede output groft og ikke jævnt. Årsagen til dette er tab af information på det sidste funktionslag på grund af nedsampling 32 gange ved brug af foldningslag. Nu bliver det meget svært for netværket at lave 32x upsampling ved at bruge denne lille information. Denne arkitektur kaldes FCN-32

For at løse dette problem foreslog papiret 2 andre arkitekturer FCN-16, FCN-8. I FCN-16 bruges information fra det tidligere pooling lag sammen med det endelige feature map, og derfor er netværkets opgave nu at lære 16x up sampling, hvilket er bedre sammenlignet med FCN-32. FCN-8 forsøger at gøre det endnu bedre ved at inkludere oplysninger fra endnu et tidligere poolinglag.

Unet

U-net bygger oven på det fuldt konvolutionerende netværk fra oven. Den blev bygget til medicinske formål for at finde tumorer i lungerne eller hjernen. Den består også af en koder, som nedsampler inputbilledet til et funktionskort, og dekoderen, som opsampler featurekortet for at indlæse billedstørrelse ved hjælp af indlærte dekonvolutionslag.

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

U-Net-arkitekturens hovedbidrag er genvejsforbindelserne. Vi så ovenfor i FCN, at siden vi nedsampler et billede som en del af indkoderen, mistede vi en masse information, som ikke let kan gendannes i indkoderdelen. FCN forsøger at løse dette ved at tage information fra pooling-lag før det sidste feature-lag.

U-Net foreslår en ny tilgang til at løse dette problem med tab af information. Den foreslår at sende information til hvert op-samplingslag i dekoderen fra det tilsvarende ned-samplingslag i koderen, som det kan ses i figuren ovenfor, og dermed indfange finere information, samtidig med at beregningen holdes lav. Da lagene i begyndelsen af ​​koderen ville have mere information, ville de styrke dekoderens op-sampling-operation ved at give fine detaljer svarende til inputbillederne og dermed forbedre resultaterne meget. Papiret foreslog også brug af en ny tabsfunktion, som vi vil diskutere nedenfor.

DeepLab

Deeplab fra en gruppe forskere fra Google har foreslået en lang række teknikker til at forbedre de eksisterende resultater og få finere output til lavere beregningsomkostninger. De 3 vigtigste forbedringer foreslået som en del af forskningen er

1) Atruse viklinger
2) Atrous Spatial Pyramidal Pooling
3) Betinget brug af tilfældige felter til at forbedre det endelige output
Lad os diskutere alle disse

Atrus Convolution

Et af de største problemer med FCN-tilgangen er den overdrevne nedskæring på grund af på hinanden følgende pooling-operationer. På grund af serier af pooling nedsamples inputbilledet med 32x, hvilket igen opsamples for at få segmenteringsresultatet. Nedsampling med 32x resulterer i tab af information, hvilket er meget afgørende for at få fint output i en segmenteringsopgave. Også dekonvolution til opsampling med 32x er en beregnings- og hukommelsesdyr operation, da der er yderligere parametre involveret i at danne en indlært sampling.

Papiret foreslår brugen af ​​Atrous-foldning eller hulfoldning eller dilateret foldning, som hjælper med at få en forståelse af store sammenhænge ved hjælp af det samme antal parametre.

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

Dilateret foldning virker ved at øge størrelsen af ​​filteret ved at tilføje nuller (kaldet huller) for at udfylde hullet mellem parametre. Antallet af huller/nuller, der er udfyldt mellem filterparametrene, kaldes en term dilatationshastighed. Når hastigheden er lig med 1, er det intet andet end den normale foldning. Når hastigheden er lig med 2, indsættes et nul mellem hver anden parameter, hvilket får filteret til at ligne en 5×5 foldning. Nu har den kapacitet til at få konteksten af ​​5×5 foldning, mens den har 3×3 foldningsparametre. Tilsvarende for rate 3 går det receptive felt til 7×7.

I Deeplab udskiftes de sidste pooling-lag for at have skridt 1 i stedet for 2, hvorved nedsamplingshastigheden holdes på kun 8x. Derefter anvendes en række grusomme viklinger for at fange den større sammenhæng. Til træning bliver den output-mærkede maske nedsamplet med 8x for at sammenligne hver pixel. For at udlede, bruges bilineær up-sampling til at producere output af samme størrelse, hvilket giver anstændige nok resultater til lavere beregnings-/hukommelsesomkostninger, da bilineær up-sampling ikke behøver nogen parametre i modsætning til deconvolution for up-sampling.

ASPP

Spatial Pyramidal Pooling er et koncept introduceret i SPPNet for at fange multi-skala information fra et feature map. Før introduktionen af ​​SPP leveres inputbilleder i forskellige opløsninger, og de beregnede funktionskort bruges sammen for at få multi-skala information, men dette tager mere beregning og tid. Med Spatial Pyramidal Pooling kan multi-skala information fanges med et enkelt inputbillede.

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

Med SPP-modulet producerer netværket 3 udgange med dimensionerne 1×1(dvs. GAP), 2×2 og 4×4. Disse værdier er sammenkædet ved at konvertere til en 1d-vektor, således at der fanges information på flere skalaer. En anden fordel ved at bruge SPP er, at inputbilleder af enhver størrelse kan leveres.

ASPP tager konceptet med at fusionere information fra forskellige skalaer og anvender det på Atrous-foldninger. Indgangen er foldet med forskellige dilatationshastigheder, og udgangene af disse er smeltet sammen.

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

Som det kan ses, er inputtet foldet med 3×3 filtre med dilatationshastigheder 6, 12, 18 og 24, og udgangene er kædet sammen, da de er af samme størrelse. En 1×1 foldningsudgang tilføjes også til den smeltede udgang. For også at give den globale information tilføjes GAP-outputtet også til ovenstående efter up-sampling. Det sammensmeltede output fra 3×3 varierede dilaterede udgange, 1×1 og GAP-output sendes gennem 1×1 foldning for at nå det nødvendige antal kanaler.

Da det krævede billede, der skal segmenteres, kan være af enhver størrelse i inputtet, hjælper multiskalainformationen fra ASPP med at forbedre resultaterne.

Forbedring af output med CRF

Pooling er en operation, der hjælper med at reducere antallet af parametre i et neuralt netværk, men det bringer også en egenskab af invarians med sig. Invarians er kvaliteten af ​​et neuralt netværk, der ikke påvirkes af små oversættelser i input. På grund af denne egenskab opnået med pooling er segmenteringsoutput opnået af et neuralt netværk groft, og grænserne er ikke konkret defineret.

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

For at håndtere dette foreslår papiret brug af grafisk model CRF. Conditional Random Field driver et efterbehandlingstrin og forsøger at forbedre de producerede resultater for at definere shaper-grænser. Det fungerer ved at klassificere en pixel baseret ikke kun på dens etiket, men også baseret på andre pixeletiketter. Som det kan ses af ovenstående figur, bliver den grove grænse produceret af det neurale netværk mere raffineret efter at have passeret gennem CRF.

Deeplab-v3 introducerede batch-normalisering og foreslog dilatationshastighed ganget med (1,2,4) inde i hvert lag i en Resnet-blok. Også tilføjelse af billedniveaufunktioner til ASPP-modulet, som blev diskuteret i ovenstående diskussion om ASPP, blev foreslået som en del af dette papir

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

Deeplab-v3+ foreslog at have en dekoder i stedet for almindelig bilineær sampling 16x. Dekoderen tager et hint fra den dekoder, der bruges af arkitekturer som U-Net, som tager information fra koderlag for at forbedre resultaterne. Encoder-outputtet opsamples 4x ved hjælp af bilineær up-sampling og sammenkædet med funktionerne fra encoder, som igen opsamples 4x efter at have udført en 3×3-foldning. Denne tilgang giver bedre resultater end en direkte 16x større prøveudtagning. Også modificeret Xception-arkitektur foreslås brugt i stedet for Resnet som en del af encoder, og dybdegående adskillelige foldninger bruges nu oven på Atrous foldninger for at reducere antallet af beregninger.

Global Convolution Network

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

Semantisk segmentering involverer udførelse af to opgaver samtidigt

i) Klassificering
ii) Lokalisering

Klassifikationsnetværkene er skabt til at være invariante over for oversættelse og rotation, hvilket giver ingen betydning for lokaliseringsinformation, hvorimod lokaliseringen involverer at få nøjagtige detaljer om placeringen. Derfor er disse to opgaver i sagens natur modstridende. De fleste segmenteringsalgoritmer lægger større vægt på lokalisering, dvs. den anden i ovenstående figur og mister dermed den globale kontekst af syne. I dette værk foreslår forfatteren en måde at tillægge klassifikationsopgaven betydning, samtidig med at lokaliseringsinformationen ikke går tabt

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

Forfatteren foreslår at opnå dette ved at bruge store kerner som en del af netværket, hvilket muliggør tætte forbindelser og dermed mere information. Dette opnås ved hjælp af en GCN-blok, som det kan ses i ovenstående figur. GCN blok kan opfattes som akxk foldningsfilter, hvor k kan være et tal større end 3. For at reducere antallet af parametre opdeles akxk filter yderligere i 1 xk og kx 1, kx1 og 1xk blokke, som derefter summeres. Ved at øge værdien k fanges derved større sammenhæng.

Derudover foreslår forfatteren en Boundary Refinement-blok, som ligner en restblok, der ses i Resnet, bestående af en genvejsforbindelse og en restforbindelse, som summeres for at få resultatet. Det er observeret, at det at have en Boundary Refinement-blok resulterede i at forbedre resultaterne ved segmenteringsgrænsen.

Resultaterne viste, at GCN-blok forbedrede klassificeringsnøjagtigheden af ​​pixels tættere på midten af ​​objektet, hvilket indikerer forbedringen forårsaget af optagelse af lang rækkevidde kontekst, mens Boundary Refinement-blok hjalp med at forbedre nøjagtigheden af ​​pixels tættere på grænsen.

Se mere end én gang – KSAC for semantisk segmentering

Deeplab-familien bruger ASPP til at få flere modtagelige felter til at fange information ved hjælp af forskellige atrous foldningshastigheder. Selvom ASPP har været væsentligt nyttigt til at forbedre segmenteringen af ​​resultater, er der nogle iboende problemer forårsaget på grund af arkitekturen. Der er ingen information delt på tværs af de forskellige parallelle lag i ASPP, hvilket påvirker generaliseringskraften af ​​kernerne i hvert lag. Da hvert lag også henvender sig til forskellige sæt træningsprøver (mindre objekter til mindre atroushastighed og større objekter til større atroushastigheder), ville mængden af ​​data for hvert parallelt lag være mindre og dermed påvirke den overordnede generaliserbarhed. Også antallet af parametre i netværket stiger lineært med antallet af parametre og kan dermed føre til overfitting.

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

For at håndtere alle disse problemer foreslår forfatteren en ny netværksstruktur kaldet Kernel-Sharing Atrous Convolution (KSAC). Som det kan ses i ovenstående figur, i stedet for at have en anden kerne for hvert parallelt lag er ASPP, deles en enkelt kerne på tværs, hvilket forbedrer netværkets generaliseringsevne. Ved at bruge KSAC i stedet for ASPP gemmes 62% af parametrene, når der anvendes dilatationsrater på 6,12 og 18.

En anden fordel ved at bruge en KSAC-struktur er, at antallet af parametre er uafhængige af antallet af anvendte dilatationshastigheder. Således kan vi tilføje så mange priser som muligt uden at øge modelstørrelsen. ASPP giver de bedste resultater med rater 6,12,18, men nøjagtigheden falder med 6,12,18,24, hvilket indikerer mulig overpasning. Men KSAC-nøjagtigheden forbedres stadig betydeligt, hvilket indikerer den forbedrede generaliseringsevne.

Denne kernedelingsteknik kan også ses som en forøgelse af funktionsområdet, da den samme kerne anvendes over flere hastigheder. På samme måde som inputforøgelse giver bedre resultater, bør funktionsforøgelse udført i netværket hjælpe med at forbedre netværkets repræsentationsevne.

Videosegmentering

Til brugssager som selvkørende biler, robotter etc. er der behov for realtidssegmentering på den observerede video. De hidtil diskuterede arkitekturer er stort set designet til nøjagtighed og ikke til hastighed. Så hvis de anvendes på en per-frame basis på en video, ville resultatet komme med meget lav hastighed.

Generelt i en video er der også en masse overlap i scener på tværs af på hinanden følgende billeder, som kunne bruges til at forbedre resultaterne og hastigheden, som ikke kommer ind i billedet, hvis analysen udføres på en per-frame basis. Lad os ved hjælp af disse signaler diskutere arkitekturer, der er specielt designet til videoer

STFCN

Spatio-Temporal FCN foreslår at bruge FCN sammen med LSTM til at lave videosegmentering. Vi er allerede klar over, hvordan FCN kan bruges til at udtrække funktioner til at segmentere et billede. LSTM er en slags neurale netværk, som kan fange sekventiel information over tid. STFCN kombinerer kraften i FCN med LSTM til at fange både den geografiske information og den tidsmæssige information

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

Som det kan ses af ovenstående figur, består STFCN af et FCN, Spatio-temporal modul efterfulgt af deconvolution. Funktionskortet produceret af et FCN sendes til Spatio-Temporal Module, som også har input fra den forrige frames modul. Modulet, der er baseret på begge disse input, fanger den tidsmæssige information ud over den rumlige information og sender den på tværs, som er opsamplet til den originale størrelse af billedet ved hjælp af dekonvolution svarende til, hvordan det gøres i FCN

Da både FCN og LSTM arbejder sammen som en del af SFCN, kan netværket trænes fra ende til ende og overgår enkeltframe-segmenteringstilgange. Der er lignende tilgange, hvor LSTM erstattes af GRU, men konceptet er det samme med at fange både den rumlige og tidsmæssige information

Semantiske video-CNN'er gennem repræsentationsforvridning

Dette papir foreslår brugen af ​​optisk flow på tværs af tilstødende rammer som et ekstra input for at forbedre segmenteringsresultaterne

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

Den foreslåede tilgang kan tilsluttes enhver standardarkitektur som et plug-in. Den vigtigste ingrediens, der er på spil, er NetWarp-modulet. For at beregne segmenteringskortet beregnes det optiske flow mellem den aktuelle ramme og den foregående ramme, dvs. Ft og føres gennem en FlowCNN for at få Λ(Ft). Denne proces kaldes Flow Transformation. Denne værdi sendes gennem et warp-modul, som også tager som input funktionskortet for et mellemlag beregnet ved at passere gennem netværket. Dette giver et skævt trækkort, som derefter kombineres med det mellemliggende trækkort for det aktuelle lag, og hele netværket trænes ende til ende. Denne arkitektur opnåede SOTA-resultater på CamVid og Cityscapes video benchmark datasæt.

Clockwork Convnets til videosemantisk segmentering

Dette papir foreslår at forbedre hastigheden for udførelse af et neuralt netværk til segmenteringsopgaver på videoer ved at udnytte det faktum, at semantisk information i en video ændrer sig langsomt sammenlignet med pixelniveauinformation. Så informationen i de sidste lag ændres i et meget langsommere tempo sammenlignet med de begyndende lag. Avisen foreslår forskellige tidspunkter

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

Ovenstående figur repræsenterer ændringshastigheden sammenligning for en mellemniveau lag pool4 og et dybt lag fc7. Til venstre ser vi, at da der er mange ændringer på tværs af rammerne, viser begge lagene en ændring, men ændringen for pool4 er højere. Til højre ser vi, at der ikke er meget forandring på tværs af rammerne. Derfor viser pulje4 marginal ændring, mens fc7 viser næsten ingen ændring.

Forskningen udnytter dette koncept og foreslår, at i tilfælde, hvor der ikke er meget af en ændring på tværs af rammerne, er der ikke behov for at beregne funktionerne/outputterne igen, og de cachelagrede værdier fra den forrige frame kan bruges. Da ændringshastigheden varierer med lag, kan forskellige ure indstilles til forskellige sæt lag. Når uret tikker, beregnes de nye output, ellers bruges de cachelagrede resultater. Hastigheden af ​​urticks kan være statisk fast eller kan læres dynamisk

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

Videosemantisk segmentering med lav latens

Dette papir forbedrer oven på ovenstående diskussion ved adaptivt at vælge rammerne til at beregne segmenteringskortet eller bruge det cachelagrede resultat i stedet for at bruge en fast timer eller en heuristik.

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

Papiret foreslår at opdele netværket i 2 dele, funktioner på lavt niveau og funktioner på højt niveau. Omkostningerne ved at beregne funktioner på lavt niveau i et netværk er meget mindre sammenlignet med højere funktioner. Forskningen tyder på at bruge netværksfunktionerne på lavt niveau som en indikator for ændringen i segmenteringskortet. I deres observationer fandt de en stærk sammenhæng mellem ændring af funktioner på lavt niveau og ændring af segmenteringskort. Så for at forstå, om der er behov for at beregne, om de højere funktioner er nødvendige for at blive beregnet, findes den lavere egenskabsforskel på tværs af 2 rammer og sammenlignes, hvis den krydser en bestemt tærskel. Hele denne proces er automatiseret af et lille neuralt netværk, hvis opgave er at tage lavere funktioner af to frames og give en forudsigelse om, hvorvidt højere funktioner skal beregnes eller ej. Da netværksbeslutningen er baseret på inputframes, er den trufne beslutning dynamisk sammenlignet med ovenstående tilgang.

Segmentering for punktskyer

Data, der kommer fra en sensor såsom lidar, lagres i et format kaldet Point Cloud. Punktsky er intet andet end en samling af uordnet sæt af 3d-datapunkter (eller en hvilken som helst dimension). Det er en sparsom gengivelse af scenen i 3d, og CNN kan ikke anvendes direkte i et sådant tilfælde. Også enhver arkitektur designet til at håndtere punktskyer bør tage i betragtning, at det er et uordnet sæt og derfor kan have mange mulige permutationer. Så netværket bør være permutationsinvariant. Også de punkter, der er defineret i punktskyen, kan beskrives ved afstanden mellem dem. Så tættere punkter indeholder generelt nyttig information, som er nyttig til segmenteringsopgaver

PointNet

PointNet er et vigtigt papir i historien om forskning i punktskyer, der bruger dyb læring til at løse opgaverne med klassificering og segmentering. Lad os studere Pointnets arkitektur

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

Input af netværket for n punkter er en nx 3 matrix. nx 3 matrix er afbildet til nx 64 ved hjælp af et delt multi-perceptron lag (fuldt forbundet netværk), som derefter afbildes til nx 64 og derefter til nx 128 og nx 1024. Max pooling anvendes for at få en 1024 vektor, som konverteres til k output ved at passere gennem MLP'er med størrelserne 512, 256 og k. Til sidst produceres k-klasse output svarende til ethvert klassifikationsnetværk.

Klassificering omhandler kun de globale funktioner, men segmentering kræver også lokale funktioner. Så de lokale funktioner fra mellemlaget ved nx 64 er sammenkædet med globale funktioner for at få anx 1088 matrix, som sendes gennem mlp på 512 og 256 for at komme til nx 256 og derefter gennem MLP'er på 128 og m for at give m outputklasser for hvert punkt i punktsky.

Netværket involverer også en inputtransformation og featuretransformation som en del af netværket, hvis opgave er ikke at ændre formen på input, men tilføje invarians til affine transformationer, dvs. translation, rotation osv.

A-CNN

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

A-CNN foreslår brugen af ​​ringformede viklinger til at fange rumlig information. Vi ved fra CNN, at foldningsoperationer fanger den lokale information, som er afgørende for at få en forståelse af billedet. A-CNN udtænkte en ny foldning kaldet ringformet foldning, som anvendes på nabopunkter i en punktsky.

Arkitekturen tager som input nx 3 punkter og finder normaler for dem, som bruges til rækkefølge af punkter. En delprøve af punkter tages ved hjælp af FPS-algoritmen, hvilket resulterer i ni x 3 punkter. På disse ringformede foldninger anvendes til at øge til 128 dimensioner. Ringformet foldning udføres på nabopunkterne, som bestemmes ved hjælp af en KNN-algoritme.

Et andet sæt af ovenstående operationer udføres for at øge dimensionerne til 256. Derefter anvendes en mlp for at ændre dimensionerne til 1024 og pooling anvendes for at få en 1024 global vektor svarende til point-cloud. Hele denne del betragtes som encoderen. Til klassificering sendes koderens globale output gennem mlp for at få c-klasse output. Til segmenteringsopgaver anses både de globale og lokale funktioner for at ligne PointCNN og sendes derefter gennem en MLP for at få m klasseoutput for hvert punkt.

Metrics

Lad os diskutere de målinger, der generelt bruges til at forstå og evaluere resultaterne af en model.

Pixel nøjagtighed

Pixel nøjagtighed er den mest grundlæggende metrik, som kan bruges til at validere resultaterne. Nøjagtighed opnås ved at tage forholdet mellem korrekt klassificerede pixels i forhold til det samlede antal pixels

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

Den største ulempe ved at bruge en sådan teknik er, at resultatet kan se godt ud, hvis den ene klasse overmander den anden. Lad os sige, at baggrundsklassen dækker 90 % af inputbilledet, vi kan få en nøjagtighed på 90 % ved blot at klassificere hver pixel som baggrund

Kryds over Union

IOU er defineret som forholdet mellem skæringspunktet mellem jordsandhed og forudsagte segmenteringsoutput over deres forening. Hvis vi beregner for flere klasser, beregnes IOU for hver klasse, og deres middelværdi tages. Det er en bedre metrisk sammenlignet med pixel nøjagtighed, som hvis hver pixel er givet som baggrund i en 2-klasse input, er IOU-værdien (90/100+0/100)/2 dvs. 45% IOU, hvilket giver en bedre repræsentation sammenlignet med 90 % nøjagtighed.

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

Frekvensvægtet IOU

Dette er en udvidelse af gennemsnitlig IOU, som vi diskuterede og bruges til at bekæmpe klasseubalance. Hvis en klasse dominerer det meste af billederne i et datasæt som for eksempel baggrund, skal det tynges i forhold til andre klasser. I stedet for at tage gennemsnittet af alle klasseresultaterne, tages der således et vægtet gennemsnit baseret på frekvensen af ​​klasseregionen i datasættet.

F1 score

Metrikken, der populært bruges i klassifikationen F1 Score, kan bruges til segmenteringsopgaver samt til at håndtere klasseubalance.

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

Gennemsnitlig præcision

Areal under præcision – genkaldskurven for et valgt tærskel IOU-gennemsnit over forskellige klasser bruges til at validere resultaterne.

Tabsfunktioner

Tabsfunktionen bruges til at guide det neurale netværk mod optimering. Lad os diskutere et par populære tabsfunktioner til semantiske segmenteringsopgaver.

Krydsentropitab

Simpelt gennemsnit af krydsentropiklassificeringstab for hver pixel i billedet kan bruges som en samlet funktion. Men dette lider igen på grund af klasseubalance, som FCN foreslår at rette op på ved hjælp af klassevægte

UNet forsøger at forbedre dette ved at give mere vægt-alder til pixels nær grænsen, som er en del af grænsen sammenlignet med indre pixels, da dette får netværket til at fokusere mere på at identificere grænser og ikke give et groft output.

Fokalt tab

Focal loss blev designet til at få netværket til at fokusere på hårde eksempler ved at give mere vægt-alder og også til at håndtere ekstrem klasseubalance observeret i enkelttrins objektdetektorer. Det samme kan også anvendes i semantiske segmenteringsopgaver

Tab af terninger

Terningfunktionen er intet andet end F1-score. Denne tabsfunktion forsøger direkte at optimere F1-score. På samme måde kan direkte IOU-score også bruges til at køre optimering

Tversky tab

Det er en variant af terningtab, som giver forskellig vægtalder til FN og FP

Hausdorff afstand

Det er en teknik, der bruges til at måle lighed mellem grænser for grundsandhed og forudsagt. Det beregnes ved at finde ud af den maksimale afstand fra ethvert punkt i den ene grænse til det nærmeste punkt i den anden. Direkte reduktion af grænsetabsfunktionen er en nylig tendens og har vist sig at give bedre resultater, især i brugssager som medicinsk billedsegmentering, hvor identifikation af den nøjagtige grænse spiller en nøglerolle.

Fordelen ved at bruge et grænsetab sammenlignet med et regionbaseret tab som IOU eller Dice Loss er, at det er upåvirket af klasseubalance, da hele regionen ikke tages i betragtning til optimering, kun grænsen tages i betragtning.

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

De to udtryk, der tages i betragtning her, er for to grænser, dvs. grundsandheden og outputforudsigelsen.

LabelMe :-

Billedanmærkningsværktøj skrevet i python.
Understøtter polygonannotering.
Open Source og gratis.
Kører på Windows, Mac, Ubuntu eller via Anaconda, Docker
Link :- https://github.com/wkentaro/labelme

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

Computer Vision Annotation Tool:

Video- og billedannoteringsværktøj udviklet af Intel
Gratis og tilgængelig online
Kører på Windows, Mac og Ubuntu
Link :- https://github.com/opencv/cvat

Vgg billedannotator :-

Gratis open source billedannoteringsværktøj
Simpel html-side < 200kb og kan køre offline
Understøtter polygonannotering og punkter.
Link :- https://github.com/ox-vgg/via

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

Rectlabel:-

Betalt annoteringsværktøj til Mac
Kan bruge kerne ML-modeller til at pre-annotere billederne
Understøtter polygoner, cubic-bezier, linjer og punkter
Link :- https://github.com/ryouchinsa/Rectlabel-support

Labelbox:-

Betalt annoteringsværktøj
Understøtter penværktøj til hurtigere og præcis annotering
Link :- https://labelbox.com/product/image-segmentation

datasæt

Lad os som en del af dette afsnit diskutere forskellige populære og forskellige datasæt, der er tilgængelige i offentligheden, som man kan bruge til at komme i gang med træning.

Pascal kontekst

Dette datasæt er en udvidelse af Pascal VOC 2010-datasættet og går ud over det originale datasæt ved at give annoteringer til hele scenen og har 400+ klasser af data fra den virkelige verden.

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

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

COCO datasæt

COCO-datasættet har 164 billeder af det originale COCO-datasæt med annoteringer på pixelniveau og er et almindeligt benchmark-datasæt. Det dækker 172 klasser: 80 tingklasser, 91 tingklasser og 1 klasse 'umærket'

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

Link :- http://cocodataset.org/

Bybilleder Datasæt

Dette datasæt består af segmentering af grundsandheder for veje, baner, køretøjer og objekter på vejen. Datasættet indeholder 30 klasser og af 50 byer samlet over forskellige miljø- og vejrforhold. Har også et videodatasæt med fint kommenterede billeder, som kan bruges til videosegmentering. KITTI , CamVid er lignende slags datasæt, som kan bruges til træning af selvkørende biler.

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

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

Lits Datasæt

Datasættet blev oprettet som en del af en udfordring for at identificere tumorlæsioner fra lever-CT-scanninger. Datasættet indeholder 130 CT-scanninger af træningsdata og 70 CT-scanninger af testdata.

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

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

CCP datasæt

Cloth Co-Parsing er et datasæt, der er skabt som en del af forskningspapiret Clothing Co-Parsing by Joint Image Segmentation and Labeling. Datasættet indeholder mere end 1000 billeder med annoteringer på pixelniveau for i alt 59 tags.

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

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

Pratheepan datasæt

Et datasæt oprettet til opgaven med hudsegmentering baseret på billeder fra google indeholdende 32 ansigtsbilleder og 46 familiebilleder

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

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

Inria Aerial Image Labeling

Et datasæt med segmenteringskort fra luften, der er oprettet ud fra billeder i det offentlige domæne. Har en dækning på 810 km2 og har XNUMX klasser bygning og ikke-bygning.

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

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

S3DIS

Dette datasæt indeholder punktskyerne af seks indendørs dele i stor skala i 3 bygninger med over 70000 billeder.

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

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

Resumé

Vi har diskuteret en taksonomi af forskellige algoritmer, som kan bruges til at løse brugssagen af ​​semantisk segmentering, hvad enten det er på billeder, videoer eller punktskyer, og også deres bidrag og begrænsninger. Vi kiggede også igennem måderne til at evaluere resultaterne og datasættene for at komme i gang. Dette skulle give en omfattende forståelse af semantisk segmentering som et emne generelt.

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

Yderligere læsning


Du kan være interesseret i vores seneste indlæg om:

Update:
Tilføjet yderligere læsestof.

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

Tidsstempel:

Mere fra AI og maskinindlæring