Maskininlärning som kartläggningsverktyg
Framtagande av Marktäckedata
Bakgrunden till vår AI-resa
Samhällsbyggnadskontoret har som mål att bidra till utvecklingen av samhällsbyggnadsprocessen genom att använda resurser som idag finns att tillgå men som skulle kunna nyttjas på fler sätt. Till exempel har kommunen tillgång till ortofoto över hela kommunen som används som visuellt hjälpmedel i våra karttjänster. Skulle det kunnas utvinnas fler användningsområden ur ortofotot och hur kan vi börja använda artificiell intelligens (AI)?
Samhällsbyggnadskontoret beviljades hösten år 2020 bidrag från Vinnova för att genomföra ett projekt inom maskininlärning (ML). Maskininlärning är ett område inom artificiell intelligens som innebär att med olika metoder träna datorn att känna igen mönster. Tanken väcktes att vi kanske kan använda maskininlärning på våra ortofoton för att kunna ta fram ett heltäckande marktäckedata. Marktäckedatat inom kommunen har en eftersläpande uppdatering och skulle behöva en ny teknik som genererar högre kvalité och en mer standardiserad process vid framtagande.
Ett heltäckande marktäckedata för kommunen kan komma att användas mer i analys- och planeringsarbeten samt vid simuleringar. Målet var att få fram ett marktäckedata innehållandes byggnader, hårdgjorda ytor, vegetation, öppen mark och vatten.
Genomförande
Målet med projektet har varit en slutprodukt i from av marktäckedata, klassad inom fem kategorier; byggnader, hårdgjorda ytor, vegetation, öppen mark och vatten. För att nå det målet har en maskininlärningsmodell tagits fram och tränats på indata. Denna modell har nyttjats för att genomföra prediktioner på raster med fyra kanaler bestående av ortofoto (RGB) och höjddata. Resultatet av prediktionerna och efterbearbetning är marktäckedata i vektorformat. För fullständig teknisk dokumentation se bilaga Teknisk dokumentation. Nedan följer en övergripande redogörelse för projektets genomförande.
Projektet har finansierats av den statliga myndigheten för innovation, Vinnova, med 50%. Vinnovas uppdrag är att stärka Sveriges innovationsförmåga och bidra till hållbar tillväxt. Projektet har varit ett första nyttjande av maskininlärning för utförande förvaltning.
Maskininlärning är ett område inom artificiell intelligens och innefattar olika metoder för att med data träna program eller datorer att lösa en uppgift, utan att programmera modellen med regler för just den uppgiften. Inom projektet har Väglett lärande (Supervised learning) nyttjats, vilket innebär att modellen tränats med in- och utdata med mål att replikera dessa.
Inom projektet har en maskininlärningsmodell tagits fram med den öppna källkoden Raster Vision ( https://rastervision.io ) vilket nyttjar PyTorch-biblioteket ( https://pytorch.org ) för att genomföra semantisk segmentering av högupplösta ortofoton. Pytorch är ett open source ML bibliotek, främst framtaget av Facebooks AI-utvecklare och nyttjas bland annat av Teslas-autopilot. Semantisk segmentering innebär att varje pixel i en bild klassas att tillhöra en fördefinierad klass.
Fördelen med att nyttja Raster Vision är att det tillhandahåller ett färdigt flöde och tillrättalagd miljö för kod, träning och prediktion. Inom projektet har Raster Vision version 0.13 nyttjats. Se bilaga Teknisk dokumentation för installation av Raster Vision.
Projektgruppen har identifierat ett antal funktioner som varit nödvändiga för att nå önskat resultat. Dessa har implementerats i koden.
- Multiband – Modellen kan tränas med bilder som innehåller flera band, i vårt fall rött, grönt, blått samt relativ höjd. Det relativa höjdrastret togs fram genom att subtrahera en ytmodell (Digital Surface Model, DSM) från en terrängmodell (Digital Terrain Model, DTM), vilka genererats från en laserskanning av kommunen. Ökat antal band möjliggör större skillnader mellan klasserna.
- Multiclass - Modellen kan träna och prediktera flera klasser i samma körning, detta sparar tid och kräver mindre efterbearbetning än vid prediktion av respektive klass för sig.
- Multiple scenes - Modellen kan tränas på geografiskt spridda träningsområden, områden inom vilka träningsdata tas fram, detta är av vikt för att få ett bra träningsunderlag och fånga skillnaderna mellan t.ex. stad och landsbygd.
- Förtränade modeller – Koden hanterar vidare träning av en modell, vilket innebär att modellen succesivt kan förbättras med mer träningsdata inom de definierade klasserna men även möjligt att lägga till och träna upp modellen för nya klasser.
- Vector output – Resultatet av en prediktion exporteras som vektordata. Denna funktion valdes bort i ett senare skede då tidsåtgång vid exekvering av kod växte med denna funktion. Istället nyttjas konvertering från resulterande raster- till vektorformat via programmet FME ( https://www.safe.com/ ).
Koden har exekverats i en Docker-miljö (Docker 18) (https://docs.docker.com/), som enklast förklaras som ett virtuellt operativsystem, på en dator med kraftfull processor, se bilaga Hårdvaruspecifikation för specifikation av hårdvara.
Modellen har tränats med träningsdata, för de fem klasserna, som tagits fram främst utifrån kartering av ortofoto med 8 cm upplösning. För klassen vegetation genererades träningsdata via skript i programspråket R, som utifrån laserdata kan detektera vegetation och trädkronor, se bilaga R – Framtagande av träningsdata för vegetation. Manuell kartering från ortofoto är en tidskrävande uppgift vilket är en av anledningarna till att antalet klasser inom projektet begränsats. Mängden träningsdata för respektive klass är direkt avgörande för kvalitén på prediktionen, se tabell 2. Valet att nyttja Multiclass prediktion styrde även vilka klasser som valdes då samtliga klasser predikteras utifrån samma underlag. En Singleclass-prediktion, det vill säga prediktion på en klass, kunde nyttjat olika klassoptimerade indata för respektive klass. Exempelvis kunde ett band med infrarött varit fördelaktig för att identifiera olika typer av vegetation. Antaganden kring vilka klasser som modellen skulle kunna kartera med gott resultat var också styrande kring valet av klasser. Spektrala egenskaper samt höjd har varit avgörande för att definiera en klass. Inom respektive klass har det varit av stor vikt att träningsdata speglar variationen inom klassen. För byggnader innebär det bland annat att byggnader av olika form, höjd samt färg funnits representerade i träningsdata. Det högupplösta ortofotot som utgjort indata ställer höga krav på precision vid kartering av träningsdata. Kartering för framställande av träningsdata utifrån ortofoto genomfördes i ArcGIS PRO och lagrades i fildatabas (gdb). Träningsdata i Raster Vision skall vara av formatet GeoJSON i referenssystem WGS 1984, ESPG 4326, transformering genomfördes i FME.
Inom projektet har fem träningsområden använts (Multiple scenes). Detta för att få med så stor variation av träningsdata som möjligt. Inom varje träningsområde har varje förekomst av respektive klass karterats till träningsdata. Del av respektive träningsområde har nyttjats för valideringsområden. Det är mot träningsdata inom valideringsområden som modellen beräknar noggrannheten. Valideringsområden utgör 17,2% av den totala mängden träningsområden, se tabell 3.
Funktionen Multiband möjliggör att fler än tre band används för indatarastret som nyttjats vid träning och prediktion. Inom projektet valdes att nyttja ett fjärde band vilket ger ökad möjlighet till variation mellan klasserna. De fyra banden är rött, grönt, blått samt ett relativt höjdraster.
Den slutgiltiga modellen har tränats på 714 381 kvadratmeter träningsdata i 120 epoker under 130 timmar. Raster Vision har ett inbyggt kommando för utvärdering av kvalitén efter träning av modellen, resultatet i procent visas i tabell 4. Genomsnittlig noggrannhet i procent för samtliga klasser per epok redovisas i diagram 1. Antalet epoker bör fortgå tills kurvan planar ut och stabiliseras.
Prediktion genomfördes på samma raster som utgjorde input vid träning av modellen. Resultat efter prediktion är ett raster med fem klasser. Detta raster har konverterats till vektordata för att underlätta lagring i kommunens databaser samt implementering i övriga geodataprodukter. Konvertering genomfördes med FME, se bild 1 för vektoriserad prediktion med ortofoto i bakgrunden. Resultatet från prediktionen har utvärderats mot byggnadsgeometrier från kommunens primärkarta (referensgeometri), se tabell 5. Kommunens primärkarta innehåller byggnader med olika insamlingsläge, fasad eller takfot. Då modellen predikterar på ortofoto karteras takfoten, detta leder ofta till större byggnadsareor i prediktionen gentemot referensgeometrin. Motsatsen uppstår istället då prediktionen utlämnat eller felaktigt klassat delar av en referensgeometri. För att granska denna förekomsten har utelämningsfel samt kommissionsfel beräknats för respektive byggnad. Då ett ortofoto inte fångar alla objekt rakt uppifrån uppstår en förskjutning mellan prediktion och verkligheten, denna effekt uppstår främst för höga objekt så som byggnader. Referensgeometrier där utelämningsfelet värdemässigt ligger nära kommissionsfelet kan antas ha korrekt byggnadsarea men förskjuten i sidled. Ortofoto som utgör indata är från april 2019. Förändringar som genomförts efter detta datum kommer resultera i fel vid prediktion, exempelvis kommer en tillbyggnad efter detta datum att generera motsvarade area i utelämningsfel. Hur stor del av respektive referensgeometri som karterats har också beräknats.
Kod och dokumentation finns tillgängligt via GitHub, vilket medför att andra aktörer kan nyttja samma teknik. Det är även möjligt för andra aktörer att genomföra prediktion med den framtagna modellen samt träna vidare på modellen. Då modellen är tränad på ortofoto med 8cm upplösning är det en förutsättning för att få ett gott resultat att de som nyttjar modellen har tillgång till ortofoto med liknande upplösning samt ett höjdraster med relativa höjder.
Raster Vision på github: https://github.com/azavea/raster-vision
Vårt resultat
Syftet med projektet var att, utifrån befintliga data, utvinna och förädla information och ta fram marktäckedata. Projektet har resulterat i en modell för kartering av marktäckedata tränad för att identifierad och klassa objekt inom fem antal kategorier; byggnader, hårdgjorda ytor, vegetation, öppenmark och vatten. Den slutgiltiga modellen har tränats på 714 381 kvm träningsdata i 120 epoker under 130 timmar. I karten nedan presenteras resultatet av en prediktion från modellen.
Ta del av vårt material
Koden hanterar vidare träning av modellen vilket innebär att modellen successivt kan förbättras med mer träningsdata inom de definierade klasserna men även möjligt att lägga till och träna upp modellen för nya klasser. Modellen finns att hämta nedan.
Det är möjligt för andra aktörer att genomföra prediktion med den framtagna modellen. Då modellen är tränad på ortofoto med 8 cm upplösning är det en förutsättning för att få ett gott resultat att de som nyttjar modellen har tillgång till ortofot med liknande upplösning samt ett höjdraster med relativa höjder (DTM-DSM).
Vill ni bygga vidare och hjälpa till att förbättra modellen med fler klasser och/eller mer träningsdata får ni gärna kontakta oss på gis@alingsas.se