AI-modeller og platforme
Julien Rebetez, Lead Machine Learning Engineer hos Picterra – Interview Serie

Julien Rebetez er Lead Software & Machine Learning Engineer hos Picterra. Picterra tilbyder en geospatial cloud-baseret platform, der er specialdesignet til at træne dybe læring-baserede detektorer hurtigt og sikkert.
Uden en enkelt linje kode og med kun få menneskeskabte annoteringer, kan Picterras brugere bygge og implementere unikke, anvendelige og klar til brug dybe læring-modeller.
Det automatiserer analysen af satellit- og luftfotos, og gør det muligt for brugerne at identificere objekter og mønstre.
Hvad var det, der tiltrak dig til maskinlæring og AI?
Jeg startede med at programmere, fordi jeg ville lave videospil, og blev interesseret i computergrafik. Dette ledte mig til computer vision, som er en slags omvendt proces, hvor computeren ikke kun skaber en falsk omgang, men også opfatter den virkelige omgang. Under mine studier, tog jeg nogle maskinlæringskurser, og blev interesseret i computer vision-aspektet af det. Jeg synes, det er interessant med maskinlæring, fordi det er på tværs af software-ingeniørarbejde, algoritmer og matematik, og det føles stadig lidt magisk, når det virker.
Du har arbejdet med at bruge maskinlæring til at analysere satellitbilleder i mange år nu. Hvad var dit første projekt?
Mit første møde med satellitbilleder var Terra-i-projektet (til at registrere afskovning), og jeg arbejdede på det under mine studier. Jeg var forbavset over, hvor meget gratis tilgængelig satellitdata, der produceres af de forskellige rumfartsagenturer (NASA, ESA osv.). Du kan få regelmæssige billeder af jorden gratis hver dag eller så, og det er en fantastisk ressource til mange videnskabelige formål.
Kunne du dele mere detaljer om “Terra-i”-projektet?
Terra-i-projektet (http://terra-i.org/terra-i.html) blev startet af professor Andrez Perez-Uribe fra HEIG-VD (Schweiz) og er nu ledet af Louis Reymondin fra CIAT (Colombia). Projektets idé er at registrere afskovning ved hjælp af gratis tilgængelige satellitbilleder. På det tidspunkt arbejdede vi med MODIS-billeder (250m pixelopløsning), fordi de gav en ensartet og forudsigelig dækning (både rumligt og tidsmæssigt). Vi fik en måling for hvert pixel hver få dage, og fra denne tidsrække af målinger, kan du prøve at registrere anomalier eller nyt, som vi kalder det i maskinlæring.
Dette projekt var meget interessant, fordi mængden af data var en udfordring på det tidspunkt, og der var også nogen software-ingeniørarbejde involveret for at få det til at virke på flere computere osv. Fra maskinlærings-synspunktet brugte vi Bayesian Neural Network (ikke så dyb på det tidspunkt) til at forudsige, hvordan tidsrækken af et pixel skulle se ud. Hvis målingen ikke matchede forudsigelsen, så havde vi en anomalie.
Som en del af dette projekt arbejdede jeg også med skyfjernelse. Vi tog en traditionel signalbehandlings-tilgang, hvor du har en tidsrække af målinger, og nogle af dem vil være helt forkerte på grund af en sky. Vi brugte en fourier-baseret tilgang (HANTS) til at rense tidsrækken, før vi registrerede nyt i den. En af udfordringerne var, at hvis vi rensede den for stærkt, ville vi også fjerne nyt, så der var ret mange eksperimenter at lave for at finde de rigtige parametre.
Du designede og implementerede også et dybtlæringssystem til automatisk klassificering af afgrøder fra luftfotos af landbrugsarealer. Hvad var de største udfordringer på det tidspunkt?
Dette var mit første rigtige møde med dybtlæring. På det tidspunkt var de største udfordringer mere relateret til at få frameworket til at køre og korrekt bruge en GPU end til maskinlæringen i sig selv. Vi brugte Theano, som var en af forgængerne til Tensorflow.
Projektets mål var at klassificere afgrøden i en mark, fra luftfotos. Vi prøvede en tilgang, hvor det dybe læring-modellen brugte farvehistogrammer som input i stedet for bare det rå billede. For at få det til at virke nogenlunde hurtigt, husker jeg, at jeg skulle implementere en brugerdefineret Theano-lag, helt ned til nogen CUDA-kode. Det var en god læringsoplevelse på det tidspunkt og en god måde at grave lidt dybere i de tekniske detaljer omkring dybtlæring.
Du er officielt Lead Software og Machine Learning Engineer hos Picterra. Hvordan ville du bedst beskrive dine daglige aktiviteter?
Det varierer rigtigt meget, men en stor del af det handler om at holde øje på den overordnede arkitektur af systemet og produktet i almindelighed og kommunikere med de forskellige interessenter. Selv om maskinlæring er kernen i vores forretning, indså jeg hurtigt, at størstedelen af tiden ikke bliver brugt på maskinlæring i sig selv, men på alle de ting, der omgiver det: datastyring, infrastruktur, UI/UX, prototyper, forståelse af brugere osv. Dette er ret forskelligt fra akademiet eller tidligere erfaringer i større virksomheder, hvor du er meget mere fokuseret på et specifikt problem.
Hvad der er interessant ved Picterra er, at vi ikke kun kører dybe læring-modeller for brugere, men vi giver dem også mulighed for at træne deres egne. Det er anderledes end de typiske maskinlærings-workflows, hvor du har et maskinlærings-team, der træner en model og så publicerer den til produktion. Det betyder, at vi ikke kan manuelt lege med træningsparametrene, som du ofte gør. Vi må finde en træningsmetode, der virker for alle vores brugere. Dette har ført til, at vi har skabt vores ‘eksperimentramme’, som er en stor samling af datasæt, der simulerer træningsdata, som vores brugere ville bygge på platformen. Vi kan så letteste teste ændringer i vores træningsmetodik mod disse datasæt og evaluere, om de hjælper eller ej. I stedet for at evaluere en enkelt model, evaluerer vi mere en arkitektur + træningsmetodik.
En anden udfordring er, at vores brugere ikke er maskinlærings-praktikere, så de ved ikke nødvendigvis, hvad en træningssæt er, hvad en label er osv. At bygge en brugerflade, der giver ikke-maskinlærings-praktikere mulighed for at bygge datasæt og træne maskinlærings-modeller, er en konstant udfordring, og der er meget tilbage og frem mellem UX- og maskinlærings-holdene for at sikre, at vi guider brugerne i den rigtige retning.
Nogle af dine ansvarsområder inkluderer at udvikle nye idéer og teknologier. Hvad er nogle af de mere interessante projekter, du har arbejdet på?
Jeg synes, det mest interessante projekt hos Picterra var Custom Detector-prototypen. For 1,5 år siden havde vi ‘byggede-ind’ detektorer på platformen: disse var detektorer, som vi selv havde trænet og gjort tilgængelige for brugere. For eksempel havde vi en bygning-detektor, en bil-detektor osv.
Dette er faktisk den typiske maskinlærings-workflow: du har et maskinlærings-team, der udvikler en model til et specifikt tilfælde og så serverer den til kunderne.
Men vi ville gøre noget andet og pushe grænserne lidt. Så vi sagde: “Hvad nu, hvis vi giver brugerne mulighed for at træne deres egne modeller direkte på platformen?” Der var nogle udfordringer for at få det til at virke: først ville vi ikke have, at det skulle tage flere timer. Hvis du vil fastholde denne følelse af interaktivitet, skal træning tage kun få minutter. Anden ville vi ikke kræve tusindvis af annoteringer, som er typisk, hvad du behøver for store dybe læring-modeller.
Så vi startede med en super simpel model, lavede en masse tests i Jupyter og prøvede så at integrere det i vores platform og teste hele workflowet, med en grundlæggende brugerflade osv. Først virkede det ikke så godt i de fleste tilfælde, men der var nogle tilfælde, hvor det virkede. Det gav os håb, og vi startede med at iterere over træningsmetodikken og modellen. Efter nogle måneder var vi i stand til at nå et punkt, hvor det virkede godt, og vi har nu brugere, der bruger det hele tiden.
Hvad der var interessant ved dette, var den dobbelte udfordring med at holde træningen hurtig (nu kun få minutter) og dermed ikke gøre modellen for kompleks, men på samme tid gøre den kompleks nok, så den virker og løser brugernes problemer. Oven i det virker det med få (<100) labels i mange tilfælde.
Vi anvendte også mange af Googles “Rules of Machine Learning“, især de om at implementere hele pipeline og metrikker, før man starter at optimere modellen. Det sætter dig i ‘system-tænkning’-tilstand, hvor du finder ud af, at ikke alle dine problemer skal håndteres af kerne-maskinlæring, men nogle af dem kan pushes til brugerfladen, nogle af dem kan forud- eller efterbehandles osv…
Hvad er nogle af de maskinlærings-teknologier, der bruges hos Picterra?
På produktionsniveau bruger vi i øjeblikket Pytorch til at træne og køre vores modeller. Vi bruger også Tensorflow fra tid til anden til nogle specifikke modeller, der er udviklet til kunder. Ud over det er det en ret standard scientific Python-stack (numpy, scipy) med nogle geospatial-biblioteker (gdal) kastet i.
Kan du diskutere, hvordan Picterra fungerer bagved, når nogen uploader billeder og ønsker at træne neurale netværk til at korrekt annotere objekter?
Ja, så når du uploader et billede, processerer vi det og gemmer det i en “Cloud-Optimized-Geotiff”-format (COG) på vores blobstore (Google Cloud Storage), hvilket giver os mulighed for at få adgang til blokke af billedet uden at skulle downloade hele billedet senere. Dette er et vigtigt punkt, fordi geospatial billeder kan være enorme: vi har brugere, der rutinemæssigt arbejder med 50000×50000 billeder.
Så for at træne din model, skal du oprette din træningsdatasæt gennem vores webbrugerflade. Du skal gøre det ved at definere 3 typer områder:
- ‘Træningsområder’, hvor du tegner træningslabels
- ‘Testområder’, hvor modellen vil forudsige for at lade dig se nogle resultater
- ‘Nøjagtighedsområde’, hvor du tegner labels, men de bruges kun til scoring
Når du har oprettet denne datasæt, kan du blot klikke ‘Træn’ og vi træner en detektor til dig. Hvad der sker herefter, er, at vi køer en træningsopgave, får en af vores GPU-arbejdere til at tage den op (nye GPU-arbejdere startes automatisk, hvis der er mange samtidige opgaver), træner din model, gemmer dens vægte på blobstoren og til sidst forudsiger i ‘testområdet’ for at vise på brugerfladen. Herfra kan du iterere over din model. Typisk vil du spotte nogle fejl i ‘testområder’ og tilføje ‘træningsområder’ for at hjælpe modellen med at forbedre sig.
Når du er tilfreds med din models score, kan du køre den i større skala. Set fra brugernes side er det ret simpelt: du skal blot klikke på ‘Detektér’ ved siden af billedet, du vil køre det på. Men det er lidt mere kompliceret under hånden, hvis billedet er stort. For at accelerere og håndtere fejl og undgå, at detektion tager flere timer, bryder vi store detektioner op i grid-celler og kører en uafhængig detektionsopgave for hver celle. Dette giver os mulighed for at køre meget store detektioner. For eksempel havde vi en kunde, der kørte detektion over hele Danmark på 25cm-billeder, hvilket er i størrelsesordenen TB af data – for et enkelt projekt. Vi har dækket et lignende projekt i denne Medium-post.
Er der noget andet, du gerne vil dele om Picterra?
Jeg synes, det er fantastisk at Picterra er et unikt produkt, der ligger på tværs af maskinlæring og geospatial. Hvad der adskiller os fra andre virksomheder, der behandler geospatial data, er, at vi udstyrer vores brugere med en selvbetjenings-platform. De kan let finde lokaliteter, analysere mønstre og detektere og tælle objekter på jordobservationsbilleder. Det ville være umuligt uden maskinlæring, men vores brugere behøver ikke engang grundlæggende kodingsevner – platformen gør arbejdet på baggrund af få menneskeskabte annoteringer. For dem, der vil dykke dybere og lære om kernekoncepter i maskinlæring i det geospatial domæne, har vi lanceret en omfattende online-kursus.
Hvad der også er værd at nævne er, at mulige anvendelser af Picterra er uendelige – detektorer bygget på platformen er blevet brugt i bystyring, præcisionslandbrug, skovstyring, humanitær og katastrofe-risikostyring, landbrug osv., blot for at nævne de mest almindelige anvendelser. Vi bliver grundigt overrasket hver dag af, hvad vores brugere prøver at gøre med vores platform. Du kan give det en chance og fortælle os, hvordan det fungerede på sociale medier.
Tak for det gode interview og for at dele med os, hvor kraftfuld Picterra er. Læsere, der ønsker at lære mere, bør besøge Picterra-websitet.












