Een gids voor 2021 voor semantische segmentatie

Bronknooppunt: 872271

Intro

Deep learning is zeer succesvol geweest bij het werken met afbeeldingen als data en bevindt zich momenteel in een fase waarin het beter werkt dan mensen bij meerdere use-cases. De belangrijkste problemen die mensen met computervisie willen oplossen, zijn beeldclassificatie, objectdetectie en segmentatie in toenemende mate van moeilijkheid.

In de eenvoudige oude taak van beeldclassificatie zijn we alleen geรฏnteresseerd in het verkrijgen van de labels van alle objecten die in een afbeelding aanwezig zijn. Bij objectdetectie komen we nog een stap verder en proberen we met behulp van bounding boxes te weten wat alle objecten in een afbeelding aanwezig zijn, op welke locatie de objecten aanwezig zijn. Beeldsegmentatie tilt het naar een nieuw niveau door nauwkeurig de exacte grens van de objecten in de afbeelding te achterhalen.

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

In dit artikel zullen we dit concept van beeldsegmentatie doornemen, de relevante use-cases bespreken, verschillende neurale netwerkarchitecturen die betrokken zijn bij het bereiken van de resultaten, metrieken en datasets om te verkennen.

Wat is beeldsegmentatie

We weten dat een afbeelding niets anders is dan een verzameling pixels. Beeldsegmentatie is het proces waarbij elke pixel in een afbeelding die tot een bepaalde klasse behoort, wordt geclassificeerd en kan daarom worden beschouwd als een classificatieprobleem per pixel. Er zijn twee soorten segmentatietechnieken

Source http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
  1. Semantische segmentatie : - Semantische segmentatie is het proces waarbij elke pixel die bij een bepaald label hoort, wordt geclassificeerd. Het verschilt niet tussen verschillende instanties van hetzelfde object. Als er bijvoorbeeld 2 katten in een afbeelding staan, geeft semantische segmentatie hetzelfde label aan alle pixels van beide katten
  2. Instantiesegmentatie : - Instantiesegmentatie verschilt van semantische segmentatie in de zin dat het een uniek label geeft aan elk exemplaar van een bepaald object in de afbeelding. Zoals te zien is in de afbeelding hierboven, krijgen alle 3 de honden verschillende kleuren toegewezen, dwz verschillende labels. Met semantische segmentatie zouden ze allemaal dezelfde kleur hebben gekregen.

Dus we komen nu op het punt waar we dit soort algoritme nodig hebben

Use-cases van beeldsegmentatie

Handschrift herkenning :- Junjo et al hebben laten zien hoe semantische segmentatie wordt gebruikt om woorden en regels uit handgeschreven documenten te extraheren 2019 onderzoekspaper om handgeschreven tekens te herkennen

bron

Google portretmodus : - Er zijn veel use-cases waarbij het absoluut essentieel is om voorgrond en achtergrond te scheiden. In de portretmodus van Google kunnen we bijvoorbeeld de achtergrond wazig zien terwijl de voorgrond ongewijzigd blijft om een โ€‹โ€‹cool effect te geven

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

YouTube-verhalen : - Google heeft onlangs een functie YouTube-verhalen uitgebracht voor makers van inhoud om verschillende achtergronden te laten zien tijdens het maken van verhalen.

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

Virtuele make-up : - Het aanbrengen van virtuele lip-stick is nu mogelijk met behulp van beeldsegmentatie

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

4. virtueel passen : - Virtueel passen van kleding is een interessante functie die beschikbaar was in winkels met gespecialiseerde hardware die een 3D-model creรซert. Maar met deep learning en beeldsegmentatie kan hetzelfde worden verkregen met alleen een 2D-afbeelding

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

Visueel zoeken naar afbeeldingen : - Het idee van het segmenteren van kleding wordt ook gebruikt in algoritmen voor het ophalen van afbeeldingen in e-commerce. Met Pinterest / Amazon kun je bijvoorbeeld elke afbeelding uploaden en verwante, vergelijkbaar uitziende producten krijgen door een afbeelding te zoeken op basis van het segmenteren van het doekgedeelte

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

Zelfrijdende auto's : - Zelfrijdende auto's hebben een volledig begrip van hun omgeving nodig tot op pixel perfect niveau. Daarom wordt beeldsegmentatie gebruikt om rijstroken en andere noodzakelijke informatie te identificeren

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

Nanonets helpt Fortune 500-bedrijven betere klantervaringen op schaal mogelijk te maken met behulp van semantische segmentatie.

Methoden en technieken

Vรณรณr de komst van deep learning werden klassieke machine learning-technieken zoals SVM, Random Forest en K-means Clustering gebruikt om het probleem van beeldsegmentatie op te lossen. Maar zoals met de meeste beeldgerelateerde probleemstellingen, heeft deep learning veel beter gewerkt dan de bestaande technieken en is het nu een norm geworden bij het omgaan met semantische segmentatie. Laten we eens kijken naar de technieken die worden gebruikt om het probleem op te lossen

Volledig convolutioneel netwerk

De algemene architectuur van een CNN bestaat uit enkele convolutionele en poolinglagen, gevolgd door enkele volledig verbonden lagen aan het einde. De paper van Fully Convolutional Network, uitgebracht in 2014, stelt dat de laatste volledig verbonden laag kan worden beschouwd als een 1 ร— 1 convolutie die de hele regio beslaat.

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

Daarom kunnen de laatste dichte lagen worden vervangen door een convolutielaag die hetzelfde resultaat bereikt. Maar het voordeel hiervan is nu dat de grootte van de invoer niet meer hoeft te worden vastgesteld. Bij het gebruik van dichte lagen is de grootte van de invoer beperkt en daarom, wanneer een invoer met een andere grootte moet worden geleverd, moet het formaat worden aangepast. Maar door een dichte laag te vervangen door convolutie, bestaat deze beperking niet.

Ook wanneer een grotere afbeelding wordt geleverd als invoer, zal de geproduceerde uitvoer een feature map zijn en niet alleen een klasse-uitvoer zoals voor een afbeelding met normale invoergrootte. Ook het geobserveerde gedrag van de uiteindelijke feature map vertegenwoordigt de heatmap van de vereiste klasse, dwz de positie van het object wordt gemarkeerd in de feature map. Aangezien de output van de feature map een heatmap is van het vereiste object, is het geldige informatie voor ons use-case van segmentatie.

Aangezien de feature map die is verkregen op de uitvoerlaag een downsampling is vanwege de set uitgevoerde convoluties, zouden we deze willen up-samplen met behulp van een interpolatietechniek. Bilineaire up-sampling werkt, maar de paper stelt voor om aangeleerde up-sampling met deconvolutie te gebruiken, die zelfs een niet-lineaire up-sampling kan leren.

Het down-sampling-gedeelte van het netwerk wordt een encoder genoemd en het up-sampling-gedeelte een decoder. Dit is een patroon dat we in veel architecturen zullen zien, dwz de grootte verkleinen met een encoder en vervolgens opwaarderen met een decoder. In een ideale wereld zouden we niet door middel van pooling de steekproef willen verkleinen en overal dezelfde grootte willen behouden, maar dat zou leiden tot een enorm aantal parameters en zou rekenkundig niet haalbaar zijn.

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

Hoewel de verkregen outputresultaten behoorlijk waren, is de waargenomen output ruw en niet glad. De reden hiervoor is verlies van informatie op de laatste objectlaag als gevolg van 32 keer downsamplen met convolutielagen. Nu wordt het erg moeilijk voor het netwerk om 32x upsampling te doen door deze kleine informatie te gebruiken. Deze architectuur heet FCN-32

Om dit probleem aan te pakken, stelde de paper twee andere architecturen FCN-2, FCN-16 voor. In FCN-8 wordt informatie uit de vorige pooling-laag gebruikt samen met de laatste feature map en daarom is het nu de taak van het netwerk om 16x up sampling te leren, wat beter is in vergelijking met FCN-16. FCN-32 probeert het nog beter te maken door informatie op te nemen uit nog een eerdere poollaag.

BIJ

U-net bouwt bovenop het volledig convolutionele netwerk van bovenaf. Het werd gebouwd voor medische doeleinden om tumoren in de longen of de hersenen te vinden. Het bestaat ook uit een encoder die het invoerbeeld downsamplet naar een feature map en de decoder die de feature map up-samplet om de beeldgrootte in te voeren met behulp van aangeleerde deconvolutielagen.

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

De belangrijkste bijdrage van de U-Net-architectuur zijn de snelkoppelingen. We zagen hierboven in FCN dat sinds we een afbeelding downsamplen als onderdeel van de encoder, we veel informatie verloren hebben die niet gemakkelijk kan worden hersteld in het encodergedeelte. FCN probeert dit aan te pakken door informatie uit de poolinglagen te halen vรณรณr de laatste objectlaag.

U-Net stelt een nieuwe aanpak voor om dit informatieverliesprobleem op te lossen. Het stelt voor om informatie naar elke opwaartse bemonsteringslaag in de decoder te sturen vanaf de corresponderende neerwaartse bemonsteringslaag in de encoder, zoals te zien is in de bovenstaande afbeelding, waardoor fijnere informatie wordt vastgelegd terwijl de berekening ook laag blijft. Aangezien de lagen aan het begin van de encoder meer informatie zouden hebben, zouden ze de up-sampling-werking van de decoder versterken door fijne details te leveren die overeenkomen met de invoerbeelden, waardoor de resultaten aanzienlijk worden verbeterd. De paper suggereerde ook het gebruik van een nieuwe verliesfunctie die we hieronder zullen bespreken.

DiepLab

Deeplab van een groep onderzoekers van Google heeft een groot aantal technieken voorgesteld om de bestaande resultaten te verbeteren en een fijnere output te krijgen tegen lagere computerkosten. De 3 belangrijkste verbeteringen die als onderdeel van het onderzoek worden voorgesteld, zijn

1) Atrale windingen
2) Atrous Spatial Piramidal Pooling
3) Gebruik van voorwaardelijke willekeurige velden voor het verbeteren van de uiteindelijke output
Laten we dit allemaal bespreken

Atrous Convolutie

Een van de grootste problemen met de FCN-benadering is de buitensporige inkrimping als gevolg van opeenvolgende pooling-operaties. Als gevolg van een reeks pooling wordt het invoerbeeld met 32x gedownsampled, dat opnieuw wordt gesampled om het segmentatieresultaat te krijgen. Downsampling met 32x resulteert in een verlies van informatie, wat erg cruciaal is voor het verkrijgen van fijne output in een segmentatietaak. Ook deconvolutie naar een hogere sample met 32x is een dure reken- en geheugenbewerking omdat er extra parameters betrokken zijn bij het vormen van een aangeleerde steekproef.

Het artikel stelt het gebruik van Atrous-convolutie of de hole-convolutie of gedilateerde convolutie voor, wat helpt om een โ€‹โ€‹grote context te begrijpen met behulp van hetzelfde aantal parameters.

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

Gedilateerde convolutie werkt door de grootte van het filter te vergroten door nullen (gaten genoemd) toe te voegen om de kloof tussen parameters op te vullen. Het aantal gaten / nullen dat tussen de filterparameters wordt ingevuld, wordt aangeduid met een term dilatatiesnelheid. Als de snelheid gelijk is aan 1, is het niets anders dan de normale convolutie. Als de snelheid gelijk is aan 2, wordt een nul tussen elke andere parameter ingevoegd, waardoor het filter eruitziet als een 5 ร— 5 convolutie. Nu heeft het de capaciteit om de context van 5 ร— 5 convolutie te krijgen terwijl het 3 ร— 3 convolutieparameters heeft. Evenzo gaat voor tarief 3 het receptieve veld naar 7 ร— 7.

In Deeplab worden de laatste pooling-lagen vervangen door stap 1 in plaats van 2, waardoor de bemonsteringsfrequentie op slechts 8x blijft. Vervolgens wordt een reeks verschrikkelijke windingen toegepast om de grotere context vast te leggen. Voor training wordt het met de output gelabelde masker 8x gedownsampled om elke pixel te vergelijken. Om hieruit af te leiden, wordt bilineaire opwaartse bemonstering gebruikt om uitvoer van dezelfde grootte te produceren die fatsoenlijke resultaten oplevert tegen lagere reken- / geheugenkosten, aangezien bilineaire opwaartse bemonstering geen parameters nodig heeft in tegenstelling tot deconvolutie voor opwaartse bemonstering.

ASPP

Ruimtelijke piramidale pooling is een concept dat in SPPNet is geรฏntroduceerd om informatie op meerdere schaal van een functiekaart vast te leggen. Vรณรณr de introductie van SPP worden invoerbeelden met verschillende resoluties geleverd en worden de berekende feature maps samen gebruikt om de multi-scale informatie te verkrijgen, maar dit kost meer berekening en tijd. Met Spatial Pyramidal Pooling kan informatie op meerdere schaal worden vastgelegd met een enkele invoerafbeelding.

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

Met de SPP-module produceert het netwerk 3 uitgangen met de afmetingen 1 ร— 1 (dwz GAP), 2 ร— 2 en 4 ร— 4. Deze waarden worden aaneengeschakeld door ze om te zetten in een 1d-vector, waardoor informatie op meerdere schalen wordt vastgelegd. Een ander voordeel van het gebruik van SPP is dat invoerafbeeldingen van elke grootte kunnen worden geleverd.

ASPP neemt het concept van het samensmelten van informatie van verschillende schalen en past het toe op Atrous-windingen. De input wordt geconvolueerd met verschillende dilatatiesnelheden en de outputs hiervan zijn samengesmolten.

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

Zoals te zien is, is de ingang geconvolueerd met 3 x 3 filters met dilatatiesnelheden 6, 12, 18 en 24 en zijn de uitgangen aan elkaar gekoppeld omdat ze van dezelfde grootte zijn. Een 1 ร— 1 convolutie-uitgang wordt ook toegevoegd aan de gefuseerde uitgang. Om ook de globale informatie te geven, wordt de GAP-uitvoer ook hierboven toegevoegd na up-sampling. De gefuseerde uitvoer van 3 ร— 3 gevarieerde gedilateerde uitgangen, 1 ร— 1 en GAP-uitgang wordt door 1 ร— 1 convolutie geleid om bij het vereiste aantal kanalen te komen.

Aangezien het vereiste beeld dat moet worden gesegmenteerd, elke grootte kan hebben in de invoer, helpt de informatie op meerdere schaal van ASPP bij het verbeteren van de resultaten.

De output verbeteren met CRF

Pooling is een operatie die helpt bij het verminderen van het aantal parameters in een neuraal netwerk, maar het brengt ook een eigenschap van onveranderlijkheid met zich mee. Invariantie is de kwaliteit van een neuraal netwerk dat niet wordt beรฏnvloed door kleine vertalingen in de invoer. Vanwege deze eigenschap verkregen door pooling is de segmentatie-output die wordt verkregen door een neuraal netwerk grof en zijn de grenzen niet concreet gedefinieerd.

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

Om hiermee om te gaan stelt het artikel het gebruik van grafisch model CRF voor. Voorwaardelijk willekeurig veld voert een nabewerkingsstap uit en probeert de geproduceerde resultaten te verbeteren om de grenzen van de vormer te definiรซren. Het werkt door een pixel niet alleen te classificeren op basis van het label, maar ook op basis van andere pixellabels. Zoals te zien is in de bovenstaande figuur, wordt de grove grens geproduceerd door het neurale netwerk verfijnder na het passeren van CRF.

Deeplab-v3 introduceerde batchnormalisatie en voorgestelde dilatatiesnelheid vermenigvuldigd met (1,2,4) binnen elke laag in een Resnet-blok. Ook het toevoegen van functies op afbeeldingsniveau aan de ASPP-module die werd besproken in de bovenstaande discussie over ASPP, werd voorgesteld als onderdeel van dit artikel

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

Deeplab-v3 + stelde voor om een โ€‹โ€‹decoder te gebruiken in plaats van gewoon bilineaire up-sampling 16x. De decoder neemt een hint van de decoder die wordt gebruikt door architecturen zoals U-Net, die informatie uit encoderlagen halen om de resultaten te verbeteren. De output van de encoder wordt 4x up-bemonsterd met behulp van bilineaire up-bemonstering en aaneengeschakeld met de functies van de encoder, die opnieuw 4x wordt gesampled na het uitvoeren van een 3x3 convolutie. Deze benadering levert betere resultaten op dan een directe 16x up-sampling. Ook wordt voorgesteld om gemodificeerde Xception-architectuur te gebruiken in plaats van Resnet als onderdeel van de encoder en in diepte scheidbare convoluties worden nu gebruikt bovenop Atrous-convoluties om het aantal berekeningen te verminderen.

Wereldwijd convolutienetwerk

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

Semantische segmentatie omvat het gelijktijdig uitvoeren van twee taken

i) Classificatie
ii) Lokalisatie

De classificatienetwerken zijn gemaakt om onveranderlijk te zijn voor vertaling en rotatie, waardoor geen belang wordt gehecht aan locatie-informatie, terwijl de lokalisatie het verkrijgen van nauwkeurige details met betrekking tot de locatie inhoudt. Deze twee taken zijn dus inherent tegenstrijdig. De meeste segmentatie-algoritmen hechten meer belang aan lokalisatie, dwz de tweede in de bovenstaande figuur, en verliezen zo de globale context uit het oog. In dit werk stelt de auteur een manier voor om ook belang te hechten aan de classificatietaak en tegelijkertijd de lokalisatie-informatie niet te verliezen

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

De auteur stelt voor om dit te bereiken door grote kernels als onderdeel van het netwerk te gebruiken, waardoor dichte verbindingen en dus meer informatie mogelijk worden. Dit wordt bereikt met behulp van een GCN-blok zoals te zien is in de bovenstaande figuur. GCN-blok kan worden gezien als akxk convolutiefilter waarbij k een getal groter dan 3 kan zijn. Om het aantal parameters te verminderen wordt het akxk-filter verder opgesplitst in 1 xk en kx 1, kx1 en 1xk blokken die vervolgens worden opgeteld. Dus door de waarde k te verhogen, wordt een grotere context vastgelegd.

Daarnaast stelt de auteur een Boundary Refinement-blok voor dat vergelijkbaar is met een restblok dat wordt gezien in Resnet, bestaande uit een snelkoppelingsverbinding en een resterende verbinding die worden samengevat om het resultaat te krijgen. Er wordt opgemerkt dat het hebben van een Boundary Refinement-blok resulteerde in het verbeteren van de resultaten op de grens van segmentatie.

De resultaten toonden aan dat het GCN-blok de classificatienauwkeurigheid van pixels dichter bij het midden van het object verbeterde, wat de verbetering aangeeft die wordt veroorzaakt door het vastleggen van lange-afstandscontext, terwijl het grensverfijningsblok de nauwkeurigheid van pixels dichter bij de grens heeft verbeterd.

Zie meer dan eens - KSAC voor semantische segmentatie

De Deeplab-familie gebruikt ASPP om meerdere receptieve velden informatie vast te leggen met verschillende atrische convolutiesnelheden. Hoewel ASPP aanzienlijk nuttig is geweest bij het verbeteren van de segmentatie van resultaten, zijn er enkele inherente problemen die worden veroorzaakt door de architectuur. Er wordt geen informatie gedeeld over de verschillende parallelle lagen in ASPP, waardoor de generalisatiekracht van de kernels in elke laag wordt beรฏnvloed. Omdat elke laag ook geschikt is voor verschillende sets trainingsmonsters (kleinere objecten naar kleinere atro-frequenties en grotere objecten naar grotere atro-snelheden), zou de hoeveelheid gegevens voor elke parallelle laag minder zijn, waardoor de algehele generaliseerbaarheid zou worden beรฏnvloed. Ook het aantal parameters in het netwerk neemt lineair toe met het aantal parameters en kan dus tot overfitting leiden.

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

Om al deze problemen aan te pakken, stelt de auteur een nieuwe netwerkstructuur voor, genaamd Kernel-Sharing Atrous Convolution (KSAC). Zoals te zien is in de bovenstaande afbeelding, wordt in plaats van een andere kernel voor elke parallelle laag ASPP een enkele kernel gedeeld, waardoor de generalisatiemogelijkheden van het netwerk worden verbeterd. Door KSAC te gebruiken in plaats van ASPP wordt 62% van de parameters opgeslagen wanneer dilatatiesnelheden van 6,12 en 18 worden gebruikt.

Een ander voordeel van het gebruik van een KSAC-structuur is dat het aantal parameters onafhankelijk is van het aantal gebruikte dilatatiesnelheden. Zo kunnen we zoveel mogelijk tarieven toevoegen zonder de modelgrootte te vergroten. ASPP geeft de beste resultaten met tarieven 6,12,18 maar de nauwkeurigheid neemt af met 6,12,18,24, wat wijst op mogelijke overfitting. Maar de nauwkeurigheid van KSAC verbetert nog steeds aanzienlijk, wat wijst op de verbeterde generalisatiemogelijkheden.

Deze kernel-sharing-techniek kan ook worden gezien als een vergroting van de feature-ruimte, aangezien dezelfde kernel over meerdere snelheden wordt toegepast. Net als hoe input augmentation betere resultaten geeft, zou functievergroting die in het netwerk wordt uitgevoerd, de representatiemogelijkheden van het netwerk moeten helpen verbeteren.

Videosegmentatie

Voor use cases zoals zelfrijdende auto's, robotica etc. is er behoefte aan realtime segmentatie op de geobserveerde video. De architecturen die tot nu toe zijn besproken, zijn min of meer ontworpen voor nauwkeurigheid en niet voor snelheid. Dus als ze per frame op een video worden toegepast, komt het resultaat met een zeer lage snelheid.

In het algemeen is er in een video ook veel overlap in scรจnes over opeenvolgende frames die kunnen worden gebruikt voor het verbeteren van de resultaten en snelheid die niet in beeld komen als de analyse per frame wordt uitgevoerd. Laten we met behulp van deze aanwijzingen architecturen bespreken die specifiek zijn ontworpen voor video's

STFCN

Spatio-Temporal FCN stelt voor om FCN samen met LSTM te gebruiken voor videosegmentatie. We weten al hoe FCN kan worden gebruikt om functies te extraheren voor het segmenteren van een afbeelding. LSTM zijn een soort neurale netwerken die in de loop van de tijd opeenvolgende informatie kunnen vastleggen. STFCN combineert de kracht van FCN met LSTM om zowel ruimtelijke als tijdelijke informatie vast te leggen

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

Zoals te zien is in de bovenstaande figuur, bestaat STFCN uit een FCN, Spatio-temporele module gevolgd door deconvolutie. De feature map geproduceerd door een FCN wordt naar de Spatio-Temporal Module gestuurd die ook een input heeft van de module van het vorige frame. De module die op beide ingangen is gebaseerd, legt naast de ruimtelijke informatie ook de temporele informatie vast en stuurt deze door, die up-bemonsterd wordt tot de oorspronkelijke grootte van de afbeelding met behulp van deconvolutie, vergelijkbaar met hoe het wordt gedaan in FCN

Aangezien zowel FCN als LSTM samenwerken als onderdeel van STFCN, is het netwerk end-to-end trainbaar en presteert het beter dan single frame segmentatiebenaderingen. Er zijn vergelijkbare benaderingen waarbij LSTM wordt vervangen door GRU, maar het concept is hetzelfde als het vastleggen van zowel ruimtelijke als temporele informatie

Semantische video-CNN's via Representation Warping

Dit artikel stelt het gebruik van optische stroom over aangrenzende frames voor als extra input om de segmentatieresultaten te verbeteren

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

De voorgestelde aanpak kan als plug-in in elke standaardarchitectuur worden opgenomen. Het belangrijkste ingrediรซnt dat in het spel is, is de NetWarp-module. Om de segmentatiekaart te berekenen, wordt de optische stroom tussen het huidige frame en het vorige frame berekend, dwz Ft, en wordt deze door een FlowCNN geleid om ฮ› (Ft) te krijgen. Dit proces wordt Flow Transformation genoemd. Deze waarde wordt doorgegeven via een warp-module die ook als invoer de feature map van een tussenliggende laag neemt, berekend door het netwerk te passeren. Dit geeft een warped feature map die vervolgens wordt gecombineerd met de tussenliggende feature map van de huidige laag en het hele netwerk wordt end-to-end getraind. Deze architectuur behaalde SOTA-resultaten op CamVid en Cityscapes videobenchmark-datasets.

Clockwork Convnets voor videosemantische segmentatie

Dit artikel stelt voor om de uitvoersnelheid van een neuraal netwerk voor segmentatietaken op video's te verbeteren door gebruik te maken van het feit dat semantische informatie in een video langzaam verandert in vergelijking met informatie op pixelniveau. Dus de informatie in de laatste lagen verandert in een veel langzamer tempo in vergelijking met de beginlagen. De krant suggereert verschillende tijden

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

De bovenstaande figuur geeft de vergelijking van de mate van verandering weer voor een middenlaagpool4 en een diepe laag fc7. Aan de linkerkant zien we dat aangezien er veel verandering is over de frames, beide lagen een verandering laten zien, maar de verandering voor pool4 is groter. Aan de rechterkant zien we dat er niet veel verandert over de frames heen. Daarom vertoont pool4 een marginale verandering, terwijl fc7 bijna geen verandering laat zien.

Het onderzoek maakt gebruik van dit concept en suggereert dat in gevallen waar er niet veel van een verandering tussen de frames is, het niet nodig is om de features / outputs opnieuw te berekenen en dat de gecachte waarden van het vorige frame kunnen worden gebruikt. Aangezien de mate van verandering varieert met lagen, kunnen verschillende klokken worden ingesteld voor verschillende sets lagen. Als de klok tikt, worden de nieuwe outputs berekend, anders worden de resultaten in de cache gebruikt. De snelheid van kloktikken kan statisch worden vastgesteld of kan dynamisch worden geleerd

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

Semantische segmentatie van video met lage latentie

Dit artikel verbetert bovenop de bovenstaande discussie door adaptief de frames te selecteren om de segmentatiekaart te berekenen of om het resultaat in de cache te gebruiken in plaats van een vaste timer of een heuristiek te gebruiken.

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

De paper stelt voor om het netwerk op te splitsen in 2 delen, low level features en high level features. De kosten voor het berekenen van functies op laag niveau in een netwerk zijn veel lager in vergelijking met hogere functies. Het onderzoek suggereert om de netwerkfuncties op laag niveau te gebruiken als een indicator van de verandering in de segmentatiekaart. In hun waarnemingen vonden ze een sterke correlatie tussen verandering van kenmerken op laag niveau en de verandering van de segmentatiekaart. Dus om te begrijpen of het nodig is om te berekenen of de hogere kenmerken moeten worden berekend, wordt het lagere kenmerkverschil over 2 frames gevonden en vergeleken als het een bepaalde drempel overschrijdt. Dit hele proces wordt geautomatiseerd door een klein neuraal netwerk dat tot taak heeft lagere kenmerken van twee frames te nemen en een voorspelling te doen of hogere kenmerken al dan niet moeten worden berekend. Aangezien de netwerkbeslissing is gebaseerd op de invoerframes, is de genomen beslissing dynamisch vergeleken met de bovenstaande benadering.

Segmentatie voor puntenwolken

Gegevens die afkomstig zijn van een sensor zoals lidar, worden opgeslagen in een indeling die Point Cloud wordt genoemd. Puntenwolk is niets anders dan een verzameling ongeordende set van 3D-gegevenspunten (of een willekeurige dimensie). Het is een schaarse weergave van de scรจne in 3D en CNN kan in zo'n geval niet direct worden toegepast. Ook elke architectuur die is ontworpen om met puntenwolken om te gaan, moet er rekening mee houden dat het een ongeordende set is en daarom veel mogelijke permutaties kan hebben. Het netwerk moet dus permutatie-invariant zijn. Ook de punten die in de puntenwolk zijn gedefinieerd, kunnen worden beschreven door de afstand ertussen. Dus dichterbij gelegen punten bevatten over het algemeen nuttige informatie die nuttig is voor segmentatietaken

Puntnet

PointNet is een belangrijk artikel in de geschiedenis van onderzoek naar puntenwolken met behulp van deep learning om de taken van classificatie en segmentatie op te lossen. Laten we de architectuur van Pointnet bestuderen

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

De invoer van het netwerk voor n punten is een matrix van nx 3. nx 3-matrix wordt toegewezen aan nx 64 met behulp van een gedeelde multi-perceptronlaag (volledig verbonden netwerk) die vervolgens wordt toegewezen aan nx 64 en vervolgens aan nx 128 en nx 1024. Max pooling wordt toegepast om een โ€‹โ€‹1024 vector te krijgen die wordt geconverteerd naar k output door MLP's met de maten 512, 256 en k te passeren. Ten slotte worden de uitvoer van de k-klasse geproduceerd, vergelijkbaar met elk classificatienetwerk.

Classificatie heeft alleen betrekking op de globale functies, maar voor segmentatie zijn ook lokale functies nodig. Dus de lokale features van de tussenlaag op nx 64 worden aaneengeschakeld met globale features om een โ€‹โ€‹Anx 1088-matrix te krijgen die door mlp van 512 en 256 wordt gestuurd om naar nx 256 te gaan en dan door MLP's van 128 en m om m uitvoerklassen te geven voor elk punt in puntenwolk.

Het netwerk omvat ook een invoertransformatie en kenmerktransformatie als onderdeel van het netwerk waarvan de taak is om de vorm van de invoer niet te veranderen, maar invariantie toe te voegen aan affiene transformaties, dwz vertaling, rotatie enz.

A-CNN

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

A-CNN stelt het gebruik van ringvormige convoluties voor om ruimtelijke informatie vast te leggen. We weten van CNN dat convolutie-operaties de lokale informatie vastleggen die essentieel is om het beeld te begrijpen. A-CNN bedacht een nieuwe convolutie genaamd Annular convolution die wordt toegepast op buurtpunten in een puntenwolk.

De architectuur neemt nx 3 punten als invoer en vindt daarvoor normalen die worden gebruikt voor het ordenen van punten. Een deelsteekproef van punten wordt genomen met behulp van het FPS-algoritme, wat resulteert in ni x 3 punten. Op deze ringvormige convolutie wordt toegepast om te vergroten tot 128 afmetingen. Ringvormige convolutie wordt uitgevoerd op de buurtpunten die worden bepaald met behulp van een KNN-algoritme.

Een andere reeks van de bovenstaande bewerkingen wordt uitgevoerd om de afmetingen te vergroten tot 256. Vervolgens wordt een mlp toegepast om de afmetingen te veranderen in 1024 en wordt pooling toegepast om een โ€‹โ€‹globale vector van 1024 te krijgen die lijkt op een puntenwolk. Dit hele deel wordt beschouwd als de encoder. Voor classificatie wordt de globale output van de encoder door mlp gestuurd om c class outputs te krijgen. Voor segmentatietaken worden zowel de globale als de lokale kenmerken als vergelijkbaar beschouwd met PointCNN en worden ze vervolgens door een MLP geleid om m klasse-uitgangen voor elk punt te krijgen.

Metriek

Laten we de statistieken bespreken die doorgaans worden gebruikt om de resultaten van een model te begrijpen en te evalueren.

Pixel nauwkeurigheid

Pixelnauwkeurigheid is de meest elementaire statistiek die kan worden gebruikt om de resultaten te valideren. De nauwkeurigheid wordt verkregen door de verhouding tussen correct geclassificeerde pixels en totaal aantal pixels te nemen

Nauwkeurigheid = (TP + TN) / (TP + TN + FP + FN)

Het grootste nadeel van het gebruik van een dergelijke techniek is dat het resultaat er misschien goed uitziet als de ene klasse de andere overmeestert. Stel dat de achtergrondklasse 90% van het invoerbeeld beslaat, we kunnen een nauwkeurigheid van 90% krijgen door elke pixel gewoon als achtergrond te classificeren

Kruispunt over Unie

IOU wordt gedefinieerd als de verhouding tussen de kruising van grondwaarheid en voorspelde segmentatie-output over hun vereniging. Als we voor meerdere klassen rekenen, wordt de IOU van elke klasse berekend en wordt hun gemiddelde genomen. Het is een betere metriek in vergelijking met pixelnauwkeurigheid, alsof elke pixel als achtergrond wordt gegeven in een invoer van 2 klassen, de IOU-waarde is (90/100 + 0/100) / 2 dwz 45% IOU, wat een betere weergave geeft in vergelijking met 90 % nauwkeurigheid.

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

Frequentie gewogen IOU

Dit is een uitbreiding op de gemiddelde IOU die we hebben besproken en die wordt gebruikt om klassenonbalans te bestrijden. Als een klasse het grootste deel van de afbeeldingen in een dataset domineert, zoals bijvoorbeeld achtergrond, moet deze worden verzwaard in vergelijking met andere klassen. Dus in plaats van het gemiddelde van alle klasseresultaten te nemen, wordt een gewogen gemiddelde genomen op basis van de frequentie van de klasseregio in de dataset.

F1-score

De metriek die in de volksmond wordt gebruikt bij de classificatie F1 Score kan ook worden gebruikt voor segmentatietaken en om om te gaan met klassenonevenwichtigheid.

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

Gemiddelde precisie

Het gebied onder de curve Precisie - Terugroepactie voor een gekozen drempel-IOU-gemiddelde over verschillende klassen wordt gebruikt voor het valideren van de resultaten.

Verliesfuncties

De verliesfunctie wordt gebruikt om het neurale netwerk naar optimalisatie te begeleiden. Laten we een paar populaire verliesfuncties bespreken voor semantische segmentatietaken.

Cross entropieverlies

Een eenvoudig gemiddelde van cross-entropie classificatieverlies voor elke pixel in de afbeelding kan als een algemene functie worden gebruikt. Maar dit lijdt weer als gevolg van klassenonbalans die FCN voorstelt te corrigeren met behulp van klassengewichten

UNet probeert dit te verbeteren door meer gewicht te geven aan de pixels nabij de grens die deel uitmaken van de grens in vergelijking met de binnenste pixels, aangezien dit het netwerk meer doet focussen op het identificeren van grenzen en geen grove output geeft.

Focaal verlies

Focaal verlies is ontworpen om het netwerk te laten focussen op harde voorbeelden door meer gewichtsleeftijd te geven en ook om de extreme klasseonbalans die wordt waargenomen in enkeltraps objectdetectoren aan te pakken. Hetzelfde kan ook worden toegepast bij semantische segmentatietaken

Verlies van dobbelstenen

De dobbelsteenfunctie is niets anders dan de F1-score. Deze verliesfunctie probeert rechtstreeks de F1-score te optimaliseren. Evenzo kan de directe IOU-score ook worden gebruikt om optimalisatie uit te voeren

Tversky-verlies

Het is een variant van het verlies van dobbelstenen die een andere gewichtsleeftijd geeft dan FN en FP

Hausdorff afstand

Het is een techniek die wordt gebruikt om gelijkenis te meten tussen grenzen van grondwaarheid en voorspelde. Het wordt berekend door de maximale afstand te bepalen van elk punt in de ene grens tot het dichtstbijzijnde punt in de andere. Directe vermindering van de functie voor grensverlies is een recente trend en het is aangetoond dat het betere resultaten geeft, vooral in gebruikssituaties zoals medische beeldsegmentatie, waar het identificeren van de exacte grens een sleutelrol speelt.

Het voordeel van het gebruik van een grensverlies in vergelijking met een regionaal verlies zoals IOU of Dice Loss is dat het niet wordt beรฏnvloed door klassenonbalans, aangezien niet de hele regio in aanmerking wordt genomen voor optimalisatie, alleen de grens wordt in aanmerking genomen.

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

De twee termen die hier worden beschouwd, gelden voor twee grenzen, namelijk de grondwaarheid en de outputvoorspelling.

LabelMe :-

Hulpmiddel voor beeldannotatie geschreven in python.
Ondersteunt annotatie van polygonen.
Open source en gratis.
Draait op Windows, Mac, Ubuntu of via Anaconda, Docker
Koppeling :- https://github.com/wkentaro/labelme

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

Computer Vision-annotatietool: -

Video- en beeldannotatietool ontwikkeld door Intel
Gratis en online beschikbaar
Draait op Windows, Mac en Ubuntu
Koppeling :- https://github.com/opencv/cvat

Vgg-afbeeldingsannotator: -

Gratis open source beeldannotatietool
Eenvoudige html-pagina <200kb en kan offline worden uitgevoerd
Ondersteunt annotaties van polygonen en punten.
Koppeling :- https://github.com/ox-vgg/via

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

Rectlabel: -

Betaalde annotatietool voor Mac
Kan kern-ML-modellen gebruiken om de afbeeldingen vooraf te annoteren
Ondersteunt polygonen, kubieke bezier, lijnen en punten
Koppeling :- https://github.com/ryouchinsa/Rectlabel-support

Etikettendoos: -

Betaalde annotatietool
Ondersteunt een pengereedschap voor snellere en nauwkeurige annotaties
Koppeling :- https://labelbox.com/product/image-segmentation

datasets

Laten we als onderdeel van deze sectie verschillende populaire en diverse datasets bespreken die openbaar beschikbaar zijn en die kunnen worden gebruikt om met training te beginnen.

Pascal-context

Deze dataset is een uitbreiding van de Pascal VOC 2010-dataset en gaat verder dan de originele dataset door annotaties te leveren voor de hele scรจne en heeft meer dan 400 klassen van real-world data.

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

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

COCO-gegevensset

De COCO-stuff-dataset heeft 164 afbeeldingen van de originele COCO-dataset met annotaties op pixelniveau en is een algemene benchmark-dataset. Het omvat 172 klassen: 80 ding klassen, 91 dingen klassen en 1 klasse 'ongelabeld'

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

Koppeling :- http://cocodataset.org/

Dataset stadsgezichten

Deze dataset bestaat uit segmentatie grondwaarheden voor wegen, rijstroken, voertuigen en objecten op de weg. De dataset bevat 30 klassen en 50 steden verzameld over verschillende milieu- en weersomstandigheden. Heeft ook een videodataset met fijn geannoteerde afbeeldingen die kunnen worden gebruikt voor videosegmentatie. KITTI en CamVid zijn vergelijkbare soorten datasets die kunnen worden gebruikt voor het trainen van zelfrijdende auto's.

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

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

Bevat dataset

De dataset is gemaakt als onderdeel van een uitdaging om tumorlaesies te identificeren op basis van CT-scans van de lever. De dataset bevat 130 CT-scans van trainingsgegevens en 70 CT-scans van testgegevens.

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

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

CCP-gegevensset

Cloth Co-Parsing is een dataset die is gemaakt als onderdeel van onderzoekspaper Clothing Co-Parsing by Joint Image Segmentation and Labelling. De dataset bevat 1000+ afbeeldingen met annotaties op pixelniveau voor in totaal 59 tags.

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

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

Pratheepan-gegevensset

Een dataset gemaakt voor de taak van huidsegmentatie op basis van afbeeldingen van Google met 32 โ€‹โ€‹gezichtsfoto's en 46 familiefoto's

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

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

Inria-labels voor luchtfoto's

Een dataset van luchtsegmentatiekaarten gemaakt op basis van afbeeldingen uit het publieke domein. Heeft een dekking van 810 km2 en heeft XNUMX klassen bouwen en niet bouwen.

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

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

S3DIS

Deze dataset bevat de puntenwolken van zes grootschalige binnendelen in 3 gebouwen met meer dan 70000 afbeeldingen.

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

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

Samengevat

We hebben een taxonomie van verschillende algoritmen besproken die kunnen worden gebruikt voor het oplossen van de use-case van semantische segmentatie, of het nu gaat om afbeeldingen, video's of puntenwolken, en ook hun bijdragen en beperkingen. We hebben ook gekeken naar de manieren om de resultaten en de datasets te evalueren om ermee aan de slag te gaan. Dit zou een uitgebreid begrip moeten geven van semantische segmentatie als onderwerp in het algemeen.

Ga aan de slag met om een โ€‹โ€‹lijst met meer bronnen voor semantische segmentatie te krijgen https://github.com/mrgloom/awesome-semantic-segmentation.

Verder lezen


Mogelijk bent u geรฏnteresseerd in onze laatste berichten over:

update:
Verder leesmateriaal toegevoegd.

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

Tijdstempel:

Meer van AI en machine learning