Se verden gennem computer vision med Mapillary

Det crowdsourcet street view billedeprojekt Mapillary har i over et år haft algoritmer kørende, der autogenkender trafikskilte, dette output har fx frivillige i OpenStreetMap lov til at bruge for at forbedre OpenStreetMap.

Mapillary har nu yderligere udvidet dette koncept med genkendelse af flere typer af objekter fra de crowdsourcet billeder. Nu giver Mapillary os et større indblik i, hvad computer vision er for en størrelse. Kort fortalt, så er computer vision et tværfagligt forskningsområde, der drejer sig om at trække meningsfyldte informationer ud fra digitale billeder. Den helt store våde drøm er, at dette skal ske helt automatisk og det kræver så en del machine learning og algoritmer at nå dertil.

Lad os hoppe i og se hvad det er konkret Mapillary lige har sat i værk. Prøv at gå til dette Mapillary billede i Rådhusstræde i København. Klik på det der filterikon oppe og en ny menu dukker op (se billedet nedenfor). Klik på knappen ved “Segmentation” > “Show identified photo features“.

Mapillary filter

Nu dukker en ny menu op (se billedet nedenfor) “Segmentations” med en liste af forskellige typer af objekter som Mapillary har sat deres algoritmer op til at genkende i billederne.

Mapillary filter

Prøv fx at køre din mus over “Manmade Struture” [er primært bygninger] og nu vil der i din Mapillary webside blive markeret, hvad algoritmen betragter som værende denne type objekt.

Mapillary filter

Du kan lade musen kører over “Sky” og nu vil der blive vist hvad der er betraget som skyer/blå himmel i billedet (vist i billedet nedenfor).

Mapillary filter

Du kan nu prøve at gå til Egernets Kvarter i Ballerup i Mapillary og slå filter til igen. Prøv at køre musen over “Road User” – det vil markerer ud hvad der optager vejen, hvilket som regel er biler/lastbiler, men jeg har også set andre steder at cykler vil markeret ud. I billedet nedenfor fra Ballerup er det bilerne der bliver markeret ud som genkendt af algoritmen.

Mapillary filter

Prøv også “Tree” og træer i billedet vil blive markeret ud. Netop træer er lidt interessant. Lad os forestille os at 4 gange på et år kommer Mapillary bidragsydere forbi og tager billeder, og hvis man så har fældet bytræer, og man har et før og efter Mapillary billede, så kunne man på sigt have algoritmer, der ser på forskelle i tid, og i casen med træer så vil man kunne se, hvor der der blevet fældet træer eller hvor er der sat nye træer op. Dette kan også udvides til nye bygninger eller bygninger der er revet ned.

Mapillary filter

Som sagt ovenstående funktioner er lige gået i luften, og det er ikke alle steder Mapillary har rullet dette algoritmefilter ud, men har du bidraget til Mapillary, så tjek om ovenstående er rullet ud i dit område. Nu er disse Mapillary algoritmer ikke helt perfekte fx på S-tog stationer hvor der er mange objekter i billederne, er der en del fejlgæt af algoritmerne. Dette bliver bedre jo flere billeder der bidrages med samt feedback på algoritmerne. Feedback kunne bestå i at brugerne fx siger “Ja/Nej” til et algoritmegæt på en bestemt type objekt og ad den vej træner algoritmen til at blive bedre.

Hvis du ser på billedet oppe af menuen “Segmentations“, så er der et punkt der hedder “Your Own Class“. Denne virker ikke endnu, men det er her du selv kan bygge dine egne algoritmer op. Du vil fx have algoritme til genkendelse af bænke, brandhaner eller lygtemaster. Hvis vi tager lygtemaster som en algoritmecase, så vil træning af algoritmen bestå i, at du finder en masse billeder af lygtemaster i Mapillary og markerer dem ud. Når det er gjort går algoritmen i gang og du begynder at se algoritmens gæt, og her skal du så give feedback tilbage, hvilket er typisk “Ja/Nej” til gættet.

Jeg ved ikke helt, hvornår dette med egne algoritmer går i luften hos Mapillary samt om man kan dele algoritmer, så fx hvis man er 10 personer i 10 lande, der træner en fælles algoritme op til at genkende fx lygtemaster som nævnt før. Jeg hører, at nogle er interesseret i at have overvågningskamera algoritmer “surveillance of surveillance” til at spotte disse i det offentlige rum.

Jeg synes, at Mapillary har gjort et interessant tiltag her med at bringe machine learning ud til en bredere kreds end lige computernørder. Jeg kunne forestille mig at en skoleklasse som undervisningscase i faget geografi havde deres egen fælles algoritme, som de træner op. Skoleklassen kunne så starte med at få crowdsourcet en masse billeder til Mapillary via deres smartphones af lokalområdet. Dernæst går de igang med at markerer objekter ud, som de vil have algoritmen til at lære. Selvfølgelig er machine learning ud fra billeder ikke perfekt endnu og skoleelevernes primære mål med sådan en case at få et indblik i, hvad machine learning går ud på. Nu har folkeskolelærere en relativ nem og gratis måde via Mapillary platformen at give eleverne noget hands-on dette (når det altså går i luften med egne algoritmer).

Geodata baseret på deep learning er nu tilgængeligt for OpenStreetMap frivillige

De frivillige i OpenStreetMap har nu fået adgang til trafikskilte geodata fra Mapillary. Det webbaseret iD redigeringsværktøj er blevet opdateret og nu kan et ekstra geodatalag med trafikskilte kaldes ind, og dermed bruges af OpenStreetMap frivillige til at forbedre OpenStreetMaps geodata.

Trafikskilte laget fra Mapillary er baseret på deep learning og for at kickstarte algoritmer, der genkender trafikskilte, så har Mapillary frivillige set manuelt på over 200.000 billeder og har angivet hvilke trafikskilte der findes i billederne. Indtil videre er det trafikskilte i Europa og USA, som der er sat algoritmer i gang med at autogenkende trafikskilte i. Trafikskilte genkendelse fra andre verdensdele og lande er på vej.

Hvis du vil se ovenstående i aktion, så find et sted i OpenStreetMap der er blevet taget Mapillary billeder i og så naturligvis i nærheden af veje. Dernæst går du ind i edit og vælger “Rediger med iD” redigeringsværktøjet. Ude i højre side klik på ikonet “Kortdata” og sæt dernæst hak i “Trafikskiltelag (Mapillary)” laget.

Trafikskilte laget

Hvis der er taget Mapillary billeder i området og deres algoritme har genkendt trafikskilte, så vil de disse dukke op som i ikoner i iD editoren. I billedet nedenfor er et “cykelsti” skilt blevet genkendt ved landsbyen Lyngerup i Horns Herred.

Trafikskilte laget

Ved at køre musen over et trafikskiltikon, så vil det tilhørende Mapillary billede dukke op, hvorfra trafikskiltet er blevet genkendt. Bemærk at ikonet for trafikskiltet bliver placeret der, hvor fotografen har stået og taget billedet.

Der er selvfølgelig stadigvæk en del falske positive hits (forkert gættet trafikskilte), men jo flere Mapillary billeder taget mange steder fra, jo bedre bliver algoritmerne til at autogenkende trafikskilte. Så de steder der ikke er taget Mapillary billeder endnu i Danmark (eller for den sags skyld andre steder i verden) , der kan du bidrage med at tage billeder med din smartphone og Mapillary app (findes til Andriod, iPhone og Windows) installeret.

Mapillary har også et API, hvor du kan hente trafikskilte og bestemte kategorier (fx kun hastighedskiltene).

Mapillary arbejder også på at lave algoritmer der kan autogenkende andre ting i Mapillary billederne end lige trafikskilte. Mapillary har i sidste uge fået tilført 8 millioner $ i kapital, penge som fx skal bruges til at ansætte flere, som er eksperter i Computer Vision og deep learning.

Hvis du sidder og er efterladt med det indtryk, at Mapillary kun drejer sig om trafik, så læs Maptime Copenhagen beretning fra “Historiske billeder” dagen afholdt 13. februar på Nationalmuseet. Her vil kunne du læse om andre ting Mapillary kan bruges til.