AI-modellen en platforms

Julien Rebetez, Leidinggevend Machine Learning Engineer bij Picterra – Interview Serie

mm
Voeg Unite.AI toe aan je voorkeursbronnen op Google

Julien Rebetez is de Leidinggevend Software- en Machine Learning Engineer bij Picterra. Picterra biedt een geospatiale cloud-gebaseerde platform speciaal ontworpen voor het trainen van diepe leerlingen op basis van detectors, snel en veilig.

Zonder één regel code en met slechts enkele door de mens gemaakte annotaties, bouwen en implementeren Picterra’s gebruikers unieke, actiegerichte en gebruiksklare diepe leerlingenmodellen.

Het automatiseert de analyse van satelliet- en luchtfoto’s, waardoor gebruikers objecten en patronen kunnen identificeren.

Wat is het dat je aantrok tot machine learning en AI?

Ik begon met programmeren omdat ik video games wilde maken en geïnteresseerd raakte in computer graphics. Dit leidde me naar computer visie, wat eigenlijk het omgekeerde proces is waarbij je in plaats van een neppe omgeving te creëren, de computer de echte omgeving laat waarnemen. Tijdens mijn studie volgde ik enkele machine learning cursussen en ik raakte geïnteresseerd in de computer visie kant van het verhaal. Ik denk dat wat interessant is aan ML is dat het op het snijvlak ligt tussen software engineering, algoritmes en wiskunde en het nog steeds een beetje magisch voelt als het werkt.

 

Je hebt al jaren gewerkt aan het gebruik van machine learning om satellietbeelden te analyseren. Wat was je eerste project?

Mijn eerste blootstelling aan satellietbeelden was het Terra-i project (om ontbossing te detecteren) en ik werkte eraan tijdens mijn studie. Ik was verbaasd over de hoeveelheid gratis beschikbare satellietdata die wordt geproduceerd door de verschillende ruimteagentschappen (NASA, ESA, etc…). Je kunt elke dag of zo gratis beelden van de planeet krijgen en dit is een geweldige bron voor veel wetenschappelijke toepassingen.

 

Kun je meer details delen over het “Terra-i” project?

Het Terra-i project (http://terra-i.org/terra-i.html) werd gestart door Professor Andrez Perez-Uribe, van HEIG-VD (Zwitserland) en wordt nu geleid door Louis Reymondin, van CIAT (Colombia). Het idee van het project is om ontbossing te detecteren met behulp van gratis beschikbare satellietbeelden. Toen we met MODIS-beelden (250m pixel resolutie) werkten omdat het een uniforme en voorspelbare dekking (zowel ruimtelijk als temporeel) bood. We kregen een meting voor elke pixel elke paar dagen en van deze tijdsreeks van metingen kun je proberen om afwijkingen of noviteiten te detecteren, zoals we ze in ML soms noemen.

Dit project was erg interessant omdat de hoeveelheid data een uitdaging was op dat moment en er ook enige software engineering bij kwam kijken om het te laten werken op meerdere computers enz. Vanuit het ML-perspectief gebruikten we een Bayesiaanse neurale netwerk (niet zo diep op dat moment) om te voorspellen wat de tijdsreeks van een pixel zou moeten zijn. Als de meting niet overeenkwam met de voorspelling, hadden we een afwijking.

Als onderdeel van dit project werkte ik ook aan cloud removal. We namen een traditionele signaalverwerkingsaanpak, waarbij je een tijdsreeks van metingen hebt en sommige daarvan zullen volledig afwijken vanwege een wolk. We gebruikten een fourier-gebaseerde aanpak (HANTS) om de tijdsreeks te reinigen voordat we noviteiten daarin detecteerden. Een van de moeilijkheden was dat als we het te sterk reinigden, we ook noviteiten zouden verwijderen, dus er waren behoorlijk wat experimenten nodig om de juiste parameters te vinden.

 

Je hebt ook een diep leerlingen systeem ontworpen en geïmplementeerd voor automatische classificatie van gewas types vanuit luchtfoto’s van landbouwvelden. Wat waren de belangrijkste uitdagingen op dat moment?

Dit was mijn eerste echte blootstelling aan diepe leerlingen. Op dat moment denk ik dat de belangrijkste uitdagingen meer te maken hadden met het framework laten werken en het goed gebruik van een GPU dan met de ML zelf. We gebruikten Theano, dat een van de voorlopers van Tensorflow was.

Het doel van het project was om het type gewas in een veld te classificeren op basis van luchtfoto’s. We probeerden een aanpak waarbij het diepe leerlingenmodel kleurhistogrammen als invoer gebruikte in plaats van alleen de ruwe afbeelding. Om dit redelijk snel te laten werken, moest ik een aangepaste Theano-laag implementeren, helemaal tot aan enkele CUDA-code. Dat was een geweldige leerervaring op dat moment en een goede manier om een beetje in de technische details van diepe leerlingen te duiken.

 

Je bent officieel de Leidinggevend Software en Machine Learning Engineer bij Picterra. Hoe zou je je dagelijkse activiteiten het beste kunnen beschrijven?

Het varieert echt, maar een groot deel ervan is het in de gaten houden van de algehele architectuur van het systeem en het product in het algemeen en communiceren met de verschillende stakeholders. Hoewel ML de kern van ons bedrijf is, realiseer je je al snel dat de meeste tijd niet wordt besteed aan ML zelf, maar aan alle dingen eromheen: data management, infrastructuur, UI/UX, prototyping, gebruikers begrijpen, enz… Dit is een behoorlijke verandering ten opzichte van de academische wereld of eerdere ervaringen in grotere bedrijven waar je je veel meer op een specifiek probleem richt.

Wat interessant is aan Picterra is dat we niet alleen diepe leerlingenmodellen voor gebruikers uitvoeren, maar ze ook toestaan om hun eigen modellen te trainen. Dat is anders dan de typische ML-workflows waarbij je een ML-team hebt dat een model traint en vervolgens publiceert naar productie. Wat dit betekent is dat we handmatig niet met de trainingsparameters kunnen spelen zoals je dat vaak doet. We moeten een trainingsmethode vinden die voor al onze gebruikers werkt. Dit leidde tot de creatie van onze ‘experiment framework’, een grote repository van datasets die de trainingsdata van onze gebruikers simuleert op het platform. We kunnen dan gemakkelijk veranderingen in onze trainingsmethodologie testen tegen deze datasets en beoordelen of ze helpen of niet. In plaats van één model te evalueren, evalueren we dus meer een architectuur + trainingsmethodologie.

De andere uitdaging is dat onze gebruikers geen ML-praktijnen zijn, dus ze weten niet noodzakelijk wat een trainingsset is, wat een label is, enz. Het bouwen van een UI die niet-ML-praktijnen in staat stelt om datasets te bouwen en ML-modellen te trainen is een constante uitdaging en er is veel heen-en-weer verkeer tussen de UX- en ML-teams om ervoor te zorgen dat we gebruikers in de juiste richting leiden.

 

Enkele van je verantwoordelijkheden omvatten het prototypen van nieuwe ideeën en technologieën. Wat zijn enkele van de interessantere projecten waar je aan hebt gewerkt?

Ik denk dat de meest interessante bij Picterra was de Custom Detector prototype. 1,5 jaar geleden hadden we ‘ingebouwde’ detectors op het platform: die waren detectors die wij zelf hadden getraind en toegankelijk hadden gemaakt voor gebruikers. Bijvoorbeeld hadden we een gebouwdetector, een autodetector, enz…

Dit is eigenlijk de typische ML-workflow: je hebt een ML-engineer die een model ontwikkelt voor een specifiek geval en vervolgens serveert hij het aan zijn klanten.

Maar we wilden iets anders doen en de grenzen een beetje verleggen. Dus zeiden we: “Wat als we gebruikers toestaan om hun eigen modellen direct op het platform te trainen” ? Er waren een paar uitdagingen om dit te laten werken: ten eerste wilden we niet dat dit meerdere uren zou duren. Als je dit gevoel van interactie wilt behouden, moet de training maximaal een paar minuten duren. Ten tweede wilden we niet dat dit duizenden annotaties zou vereisen, wat typisch is voor grote diepe leerlingenmodellen.

We begonnen met een super eenvoudig model, deden een aantal tests in Jupyter en probeerden het vervolgens te integreren in ons platform en de hele workflow te testen, met een basis-UI enz. Aanvankelijk werkte het niet erg goed in de meeste gevallen, maar er waren een paar gevallen waarin het wel werkte. Dit gaf ons hoop en we begonnen te itereren op de trainingsmethodologie en het model. Na een paar maanden waren we in staat om een punt te bereiken waarop het goed werkte, en we hebben nu onze gebruikers die dit de hele tijd gebruiken.

Wat interessant was aan dit project is de dubbele uitdaging van het trainen snel (momenteel een paar minuten) en dus het model niet te complex maken, maar tegelijkertijd complex genoeg maken zodat het werkt en de problemen van de gebruikers oplost. Bovendien werkt het met weinig (<100) labels voor veel gevallen.

We hebben ook veel van Google’s (GOOGL )Rules of Machine Learning” toegepast, met name die over het implementeren van de hele pipeline en metrics voordat je begint met het optimaliseren van het model. Dit zet je in ‘systeemdenken’-modus waarin je beseft dat niet alle problemen door de core ML moeten worden afgehandeld, maar sommige ervan naar de UI, sommige ervan voor- of nageprocessen, enz…

 

Wat zijn enkele van de machine learning technologieën die bij Picterra worden gebruikt?

In productie gebruiken we momenteel Pytorch om onze modellen te trainen en uit te voeren. We gebruiken ook Tensorflow van tijd tot tijd, voor specifieke modellen die voor klanten zijn ontwikkeld. Verder is het een vrij standaard wetenschappelijke Python-stack (numpy, scipy) met enkele geospatiale bibliotheken (gdal) erin.

 

Kun je uitleggen hoe Picterra werkt in de backend als iemand beelden uploadt en de neurale netwerk wilt trainen om objecten correct te annoteren?

Zeker, dus eerst, wanneer je een beeld uploadt, verwerken we het en slaan het op in een “Cloud-Optimized-Geotiff” (COG) formaat op onze blobstore (Google Cloud Storage), wat ons in staat stelt om snel toegang te krijgen tot blokken van het beeld zonder het hele beeld te hoeven downloaden. Dit is een belangrijk punt omdat geospatiale beelden enorm kunnen zijn: we hebben gebruikers die routinematig werken met 50000×50000 beelden.

Vervolgens, om je model te trainen, moet je je trainingsdataset maken via onze web-UI. Je doet dit door drie soorten gebieden te definiëren:

  1. ‘Trainingsgebieden’, waarin je trainingslabels tekent
  2. ‘Testgebieden’, waar het model voorspelt om enkele resultaten te visualiseren
  3. ‘Nauwkeurigheidsgebied’, waar je labels tekent, maar die alleen voor scoring worden gebruikt, niet voor training

Als je deze dataset hebt gemaakt, kun je gewoon op ‘Trainen’ klikken en we trainen een detector voor je. Wat er vervolgens gebeurt, is dat we een trainingsjob in de wachtrij plaatsen, een van onze GPU-werkers laat het oppakken (nieuwe GPU-werkers worden automatisch gestart als er veel gelijktijdige jobs zijn), je model traint, de gewichten ervan opslaat in de blobstore en tenslotte voorspelt in het ‘testgebied’ om het op de UI weer te geven. Vanaf daar kun je je model itereren. Meestal zie je enkele fouten in ‘testgebieden’ en voeg je ‘trainingsgebieden’ toe om het model te helpen verbeteren.

Als je tevreden bent met de score van je model, kun je het op grote schaal uitvoeren. Vanuit het oogpunt van de gebruiker is dit echt eenvoudig: je klikt gewoon op ‘Detecteren’ naast het beeld dat je wilt uitvoeren. Maar het is een beetje ingewikkelder onder de motorkap als het beeld groot is. Om het te versnellen, om fouten af te handelen en te voorkomen dat detectie meerdere uren duurt, splitsen we grote detecties op in gridcellen en voeren we een onafhankelijke detectiejob uit voor elke cel. Dit stelt ons in staat om zeer grote detecties uit te voeren. We hebben bijvoorbeeld een klant die detectie heeft uitgevoerd over heel Denemarken op 25cm-beelden, wat in de orde van TB aan data is – voor één project. We hebben een soortgelijk project behandeld in deze medium-post.

 

Is er nog iets dat je wilt delen over Picterra?

Ik denk dat wat geweldig is aan Picterra is dat het een uniek product is, op het snijvlak tussen ML en geospatiale technologie. Wat ons onderscheidt van andere bedrijven die geospatiale data verwerken, is dat we onze gebruikers een self-service platform bieden. Ze kunnen gemakkelijk locaties vinden, patronen analyseren en objecten detecteren en tellen op beelden van aardobservatie. Dit zou onmogelijk zijn zonder machine learning, maar onze gebruikers hebben niet eens basale programmeervaardigheden nodig – het platform doet het werk op basis van enkele door de mens gemaakte annotaties. Voor diegenen die dieper willen gaan en de kernbeginselen van machine learning in de geospatiale domein willen leren, hebben we een uitgebreide online cursus gelanceerd.

Wat ook de moeite waard is om te vermelden is dat de mogelijke toepassingen van Picterra eindeloos zijn – detectors die op het platform zijn gebouwd, zijn gebruikt in stadsbeheer, precisielandbouw, bosbeheer, humanitaire en rampenrisicobeheer, landbouw, enz., om slechts enkele van de meest voorkomende toepassingen te noemen. We worden eigenlijk elke dag verrast door wat onze gebruikers proberen te doen met ons platform. Je kunt het uitproberen en ons laten weten hoe het werkte op social media.

Bedankt voor het geweldige interview en voor het delen met ons hoe krachtig Picterra is, lezers die meer willen leren, moeten de Picterra website bezoeken.

Antoine is een visionaire leider en medeoprichter van Unite.AI, gedreven door een onwankelbare passie voor het vormgeven en promoten van de toekomst van AI en robotica. Een serieondernemer, hij gelooft dat AI net zo disruptief voor de samenleving zal zijn als elektriciteit, en wordt vaak betrapt op het prijzen van de potentie van disruptieve technologieën en AGI.

Als een futurist, hij is toegewijd aan het onderzoeken van hoe deze innovaties onze wereld zullen vormgeven. Bovendien is hij de oprichter van Securities.io, een platform dat zich richt op het investeren in cutting-edge technologieën die de toekomst herdefiniëren en hele sectoren herschikken.