AI-modeller och plattformar

Julien Rebetez, Lead Machine Learning Engineer på Picterra – Intervju-serie

mm
Lägg till Unite.AI bland dina föredragna källor på Google

Julien Rebetez är Lead Software- och Machine Learning Engineer på Picterra. Picterra tillhandahåller en geospatial molnbaserad plattform som är specialutformad för att träna djupinlärningsbaserade detektorer, snabbt och säkert.

Utifrån endast ett fåtal mänskligt skapade annoteringar och utan en enda kodrad bygger och distribuerar Picterras användare unika, användbara och färdiga djupinlärningsmodeller.

Det automatiserar analysen av satellit- och flygbilder, vilket möjliggör för användarna att identifiera objekt och mönster.

Vad var det som drog dig till maskinlärning och AI?

Jag började programmera för att jag ville skapa videospel och blev intresserad av datorgrafik först. Detta ledde mig till datorseende, som är en sorts omvänd process där du har datorn uppfatta den verkliga miljön istället för att skapa en falsk. Under mina studier tog jag några maskinlärningskurser och blev intresserad av datorseendeperspektivet på det. Jag tycker att det som är intressant med maskinlärning är att det ligger i skärningspunkten mellan programvaruteknik, algoritmer och matematik och det känns fortfarande lite magiskt när det fungerar.

 

Du har arbetat med att använda maskinlärning för att analysera satellitbilder i många år nu. Vad var ditt första projekt?

Mitt första möte med satellitbilder var Terra-i-projektet (för att upptäcka avskogning) och jag arbetade med det under mina studier. Jag blev förvånad över mängden fritt tillgängliga satellitdata som produceras av olika rymdmyndigheter (NASA, ESA etc.). Du kan få regelbundna bilder av planeten gratis varje dag eller så, och detta är en stor resurs för många vetenskapliga tillämpningar.

 

Kan du berätta mer om “Terra-i”-projektet?

Terra-i-projektet (http://terra-i.org/terra-i.html) startades av professor Andrez Perez-Uribe, från HEIG-VD (Schweiz) och leds nu av Louis Reymondin, från CIAT (Colombia). Idén bakom projektet är att upptäcka avskogning med hjälp av fritt tillgängliga satellitbilder. Vid den tiden arbetade vi med MODIS-bilder (250m pixelupplösning) eftersom de gav en enhetlig och förutsägbar täckning (både rumsligt och tidsmässigt). Vi fick en mätning för varje pixel var few dagar och från denna tidsserie av mätningar kunde vi försöka upptäcka avvikelser eller nyheter, som vi kallar dem i maskinlärning ibland.

Detta projekt var mycket intressant eftersom mängden data var en utmaning vid den tiden och det fanns också en del programvaruteknik involverad för att göra det fungera på flera datorer och så vidare. Från maskinlärningssynpunkt använde vi Bayesian Neural Network (inte så djup på den tiden) för att förutsäga vad tidsserien för en pixel borde se ut som. Om mätningen inte matchade förutsägelsen, så hade vi en avvikelse.

Som en del av detta projekt arbetade jag också med molnborttagning. Vi använde en traditionell signalbehandlingsmetod, där du har en tidsserie av mätningar och några av dem kommer att vara helt fel på grund av moln. Vi använde en fourierbaserad metod (HANTS) för att rensa tidsserien innan vi upptäckte nyheter i den. En av svårigheterna var att om vi rensade den för starkt, så skulle vi också ta bort nyheter, så det var ganska många experiment för att hitta rätt parametrar.

 

Du har också designat och implementerat ett djupinlärningssystem för automatisk klassificering av grödor från flygbilder av åkrar. Vilka var de största utmaningarna vid den tiden?

Detta var mitt första riktiga möte med djupinlärning. Vid den tiden var de största utmaningarna mer relaterade till att få ramverket att fungera och använda en GPU på rätt sätt än till själva maskinlärningen. Vi använde Theano, som var en av föregångarna till Tensorflow.

Målet med projektet var att klassificera grödans typ i en åker, från flygbilder. Vi försökte en metod där djupinlärningsmodellen använde färgistogram som indata, istället för bara den råa bilden. För att få det att fungera rimligt snabbt, minns jag att jag var tvungen att implementera ett anpassat Theano-lager, ända ner till CUDA-kod. Det var en bra lärandeupplevelse vid den tiden och ett bra sätt att gräva lite i de tekniska detaljerna i djupinlärning.

 

Du är officiellt Lead Software- och Machine Learning Engineer på Picterra. Hur skulle du bäst beskriva din dagliga verksamhet?

Det varierar verkligen, men en stor del av det handlar om att hålla koll på den övergripande arkitekturen för systemet och produkten i allmänhet och kommunicera med olika intressenter. Även om maskinlärning är kärnan i vår verksamhet, inser man snabbt att de flesta tiden inte ägnas åt maskinlärning i sig, utan alla saker runt omkring: datahantering, infrastruktur, UI/UX, prototypering, att förstå användare osv… Detta är ganska annorlunda än i akademin eller tidigare erfarenheter i större företag, där man är mycket mer fokuserad på ett specifikt problem.

Vad som är intressant med Picterra är att vi inte bara kör djupinlärningsmodeller för användare, utan vi låter dem också träna sina egna modeller. Det skiljer sig från de typiska maskinlärningsflödena, där maskinlärningsteamet tränar en modell och sedan publicerar den till produktion. Detta innebär att vi inte kan manuellt leka med träningsparametrarna som man ofta gör. Vi måste hitta en träningsmetod som fungerar för alla våra användare. Det har lett till att vi skapat vår “experimentsramverk”, som är ett stort repository av datamängder som simulerar de träningsdata som våra användare bygger på plattformen. Vi kan sedan enkelt testa ändringar i vår träningsmetodik mot dessa datamängder och utvärdera om de hjälper eller inte. Istället för att utvärdera en enskild modell, utvärderar vi mer en arkitektur + träningsmetodik.

En annan utmaning är att våra användare inte är maskinlärningsexperter, så de vet inte nödvändigtvis vad en träningsmängd är, vad en etikett är osv. Att bygga en användargränssnitt som låter icke-maskinlärare bygga datamängder och träna maskinlärningsmodeller är en ständig utmaning, och det finns mycket samarbete mellan UX- och maskinlärningsteam för att säkerställa att vi guider användarna i rätt riktning.

 

Några av dina ansvarsområden inkluderar att prototypa nya idéer och teknologier. Vilka är några av de mer intressanta projekten som du har arbetat med?

Jag tycker att det mest intressanta på Picterra var Custom Detector-prototypen. För 1,5 år sedan hade vi “inbyggda” detektorer på plattformen: de var detektorer som vi tränat själva och gjort tillgängliga för användare. Till exempel hade vi en byggnadsdetektor, en bil-detektor osv…

Detta är det typiska maskinlärningsflödet: du har en maskinläringsingenjör som utvecklar en modell för ett specifikt fall och sedan serverar den till kunderna.

Men vi ville göra något annorlunda och pusha gränserna lite. Så vi sa: “Tänk om vi låter användarna träna sina egna modeller direkt på plattformen”? Det fanns några utmaningar för att få det att fungera: först ville vi inte att det skulle ta flera timmar. Om vi vill behålla det interaktiva känslan, bör träningsprocessen ta några minuter som mest. För det andra ville vi inte kräva tusentals annoteringar, vilket är vad man vanligtvis behöver för stora djupinlärningsmodeller.

Så vi började med en superenkel modell, gjorde en massa tester i Jupyter och försökte sedan integrera den i vår plattform och testa hela arbetsflödet, med ett grundläggande användargränssnitt och så vidare. Till en början fungerade det inte så bra i de flesta fall, men det fanns några fall där det fungerade. Det gav oss hopp och vi började iterera på träningsmetodiken och modellen. Efter några månader kunde vi nå en punkt där det fungerade bra, och vi har nu våra användare som använder det hela tiden.

Vad som var intressant med detta var den dubbla utmaningen att hålla träningsprocessen snabb (nuvarande några minuter) och därmed inte göra modellen för komplex, men samtidigt göra den tillräckligt komplex för att den ska fungera och lösa användarnas problem. Dessutom fungerar den med få (<100) etiketter för många fall.

Vi tillämpade också många av Googles “Regler för maskinlärning“, särskilt de om att implementera hela pipelinen och metriker innan man börjar optimera modellen. Det sätter dig i “systemtänkande”-läge där du inser att inte alla dina problem ska hanteras av kärnan i maskinlärningen, utan vissa av dem kan skjutas till användargränssnittet, vissa kan förbearbetas eller efterbearbetas osv…

 

Vilka är några av de maskinlärningsteknologier som används på Picterra?

I produktion använder vi för närvarande Pytorch för att träna och köra våra modeller. Vi använder också Tensorflow ibland, för vissa specifika modeller som utvecklats för kunder. Utöver detta är det en ganska standardiserad vetenskaplig Python-stack (numpy, scipy) med några geospatiala bibliotek (gdal) inblandade.

 

Kan du diskutera hur Picterra fungerar i bakgrunden när någon laddar upp bilder och vill träna neurala nätverk för att korrekt annotera objekt?

Självklart, så när du laddar upp en bild, bearbetar vi den och lagrar den i ett “Cloud-Optimized-Geotiff”-format (COG) på vår blob-lagring (Google Cloud Storage), vilket tillåter oss att snabbt komma åt block av bilden utan att behöva ladda ner hela bilden senare. Detta är en viktig punkt eftersom geospatiala bilder kan vara enorma: vi har användare som rutinmässigt arbetar med 50000×50000-bilder.

Sedan, för att träna din modell, måste du skapa din träningsmängd via vårt webbgränssnitt. Du kommer att göra det genom att definiera 3 typer av områden:

  1. ‘träningsområden’, där du kommer att rita träningsetiketter
  2. ‘testområden’, där modellen kommer att förutsäga för att låta dig visualisera några resultat
  3. ‘noggrannhetsområde’, där du kommer att rita etiketter som också, men de används inte för träningsändamål, bara för poängsättning

När du har skapat denna datamängd kan du enkelt klicka på “Träna” och vi kommer att träna en detektor åt dig. Vad som händer sedan är att vi lägger till ett träningsjobb, låter en av våra GPU-arbetare plocka upp det (nya GPU-arbetare startas automatiskt om det finns många samtidiga jobb), tränar din modell, sparar viktorna till blob-lagringen och slutligen förutsäger i “testområdet” för att visa på gränssnittet. Därifrån kan du iterera över din modell. Vanligtvis kommer du att upptäcka några fel i “testområdena” och lägga till “träningsområden” för att hjälpa modellen att förbättras.

När du är nöjd med poängen för din modell kan du köra den i stor skala. Från användarens perspektiv är det väldigt enkelt: du behöver bara klicka på “Upptäck” bredvid den bild du vill köra den på. Men det är lite mer invecklat under huven om bilden är stor. För att påskynda saker, hantera fel och undvika att upptäckter tar flera timmar, bryter vi ner stora upptäckter i rutnätsceller och kör ett oberoende upptäcktsjobb för varje cell. Detta tillåter oss att köra väldigt storskaliga upptäckter. Till exempel hade vi en kund som körde upptäckt över hela Danmark på 25cm-bilder, vilket är i storleksordningen TB av data – för ett enda projekt. Vi har täckt ett liknande projekt i detta medium-inlägg.

 

Finns det något annat som du vill dela om Picterra?

Jag tycker att det som är bra med Picterra är att det är en unik produkt, på gränsen mellan maskinlärning och geospatial teknik. Vad som skiljer oss från andra företag som bearbetar geospatiala data är att vi utrustar våra användare med en självbetjäningsplattform. De kan enkelt hitta platser, analysera mönster och upptäcka och räkna objekt på jordobservationsbilder. Det skulle vara omöjligt utan maskinlärning, men våra användare behöver inte ens grundläggande programmeringskunskaper – plattformen gör jobbet baserat på ett fåtal mänskligt skapade annoteringar. För de som vill gå djupare och lära sig de grundläggande koncepten i maskinlärning inom det geospatiala området, har vi lanserat en omfattande onlinekurs.

Vad som också är värt att nämna är att möjliga tillämpningar av Picterra är oändliga – detektorer som byggts på plattformen har använts i stadsförvaltning, precisionsjordbruk, skogsförvaltning, humanitär och katastrofriskhantering, jordbruk osv, bara för att nämna de vanligaste tillämpningarna. Vi blir förvånade varje dag av vad våra användare försöker göra med vår plattform. Du kan prova det och låt oss veta hur det fungerade på sociala medier.

Tack för det bra samtalet och för att du delade med dig av hur kraftfull Picterra är, läsare som vill veta mer bör besöka Picterras webbplats.

Antoine är en visionär ledare och medgrundare av Unite.AI, driven av en outtröttlig passion för att forma och främja framtidens AI och robotik. En serieentreprenör, han tror att AI kommer att vara lika störande för samhället som elektricitet, och han fångas ofta i att prata om potentialen för störande teknologier och AGI.

Som en futurist är han dedikerad till att utforska hur dessa innovationer kommer att forma vår värld. Dessutom är han grundare av Securities.io, en plattform som fokuserar på att investera i banbrytande teknologier som omdefinierar framtiden och omformar hela sektorer.