Modele și platforme AI

Julien Rebetez, Lead Machine Learning Engineer la Picterra – Seria de interviuri

mm
Adaugă Unite.AI la sursele tale preferate pe Google

Julien Rebetez este Lead Software & Machine Learning Engineer la Picterra. Picterra oferă o platformă bazată pe cloud, special concepută pentru antrenarea detectoarelor bazate pe învățare profundă, rapid și în siguranță.

Fără a scrie o singură linie de cod și cu doar câteva anotări create de om, utilizatorii Picterra construiesc și implementează modele de învățare profundă unice, gata de utilizare și acționabile.

Automatizează analiza imaginilor satelitare și aeriene, permițând utilizatorilor să identifice obiecte și modele.

Ce v-a atras către machine learning și AI?

Am început să programez pentru că voiam să creez jocuri video și m-am interesat de grafica computerizată. Acest lucru m-a condus spre viziunea computerizată, care este un proces invers, în care, în loc să aveți computerul care creează un mediu fals, aveți computerul care percepe mediul real. În timpul studiilor, am urmat câteva cursuri de Machine Learning și m-am interesat de unghiul de viziune computerizată al acestuia. Cred că ceea ce este interesant despre ML este că se află la intersecția dintre ingineria software, algoritmi și matematică și că încă se simte un pic magic atunci când funcționează.

 

Ați lucrat la utilizarea machine learning-ului pentru a analiza imagini satelitare de mult timp. Care a fost primul dvs. proiect?

Prima mea expunere la imagini satelitare a fost proiectul Terra-i (pentru a detecta defrișarea) și am lucrat la el în timpul studiilor. Am fost uimit de cantitatea mare de date satelitare disponibile gratuit, produse de diverse agenții spațiale (NASA, ESA, etc…). Puteți obține imagini regulate ale planetei, gratuite, la fiecare zi sau două, și acesta este un resurs important pentru multe aplicații științifice.

 

Puteți să ne spuneți mai multe despre proiectul “Terra-i”?

Proiectul Terra-i (http://terra-i.org/terra-i.html) a fost inițiat de profesorul Andrez Perez-Uribe, de la HEIG-VD (Elveția) și este condus acum de Louis Reymondin, de la CIAT (Columbia). Ideea proiectului este de a detecta defrișarea utilizând imagini satelitare disponibile gratuit. La acea vreme, am lucrat cu imagini MODIS (rezoluție de 250m pixel) pentru că oferea o acoperire uniformă și previzibilă (atât spațială, cât și temporală). Primeam o măsurătoare pentru fiecare pixel la fiecare câteva zile și, din această serie de măsurători, puteam încerca să detectăm anomalii sau noutăți, așa cum le numim uneori în ML.

Acest proiect a fost foarte interesant pentru că cantitatea de date a fost o provocare la acea vreme și a existat și o inginerie software pentru a face să funcționeze pe mai multe calculatoare și așa mai departe. Din punct de vedere al ML, a utilizat o rețea neuronală Bayesiană (nu prea adâncă la acea vreme :)) pentru a prezice cum ar trebui să arate seria de măsurători a unui pixel. Dacă măsurătoarea nu se potrivea cu predicția, atunci aveam o anomalie.

Ca parte a acestui proiect, am lucrat și la îndepărtarea norilor. Am utilizat o abordare tradițională de prelucrare a semnalelor, în care aveam o serie de măsurători și unele dintre ele erau complet în afara graficului din cauza unui nor. Am utilizat o abordare bazată pe Fourier (HANTS) pentru a curăța seria de măsurători înainte de a detecta noutăți în ea. Una dintre dificultățile a fost că, dacă o curățam prea tare, aș fi eliminat și noutățile, așa că a trebuit să fac multe experimente pentru a găsi parametrii potriviți.

 

Ați proiectat și implementat, de asemenea, un sistem de învățare profundă pentru clasificarea automată a tipului de cultură din imagini aeriene (de la drone) ale câmpurilor. Care au fost principalele provocări la acea vreme?

Acesta a fost primul meu contact real cu Deep Learning. La acea vreme, cred că principala provocare a fost mai mult legată de a face să funcționeze framework-ul și de a utiliza corect un GPU decât de însuși ML-ul. Am utilizat Theano, care a fost unul dintre strămoșii Tensorflow.

Scopul proiectului a fost de a clasifica tipul de cultură dintr-un câmp, din imagini de la drone. Am încercat o abordare în care modelul de învățare profundă utiliza histograma culorilor ca intrare, și nu imaginea brută. Pentru a face să funcționeze în mod rezonabil, am trebuit să implementez un strat personalizat în Theano, inclusiv până la codul CUDA. A fost o experiență de învățare excelentă la acea vreme și o modalitate bună de a intra în detalii tehnice ale Deep Learning-ului.

 

Sunteți oficial Lead Software și Machine Learning Engineer la Picterra. Cum ați descrie activitățile dvs. de zi cu zi?

Variază foarte mult, dar o mare parte din timp este dedicată supravegherii arhitecturii sistemului și a produsului în general și comunicării cu diversele părți implicate. Deși ML este în centrul afacerii noastre, vă dați repede seama că majoritatea timpului nu este petrecută cu ML-ul însuși, ci cu toate lucrurile din jurul lui: managementul datelor, infrastructura, UI/UX, prototiparea, înțelegerea utilizatorilor, etc… Acesta este un schimbare destul de mare față de Academia sau experiența anterioară în companii mai mari, unde sunteți mult mai focalizat pe o problemă specifică.

Ceea ce este interesant la Picterra este că nu doar rulăm modele de învățare profundă pentru utilizatori, ci îi permitem să antreneze propriile modele. Acest lucru este diferit de fluxurile de lucru ML obișnuite, în care aveți o echipă de ML care antrenează un model și apoi îl publică în producție. Ceea ce înseamnă că nu putem ajusta manual parametrii de antrenare, cum se face adesea. Trebuie să găsim o metodă de antrenare care să funcționeze pentru toți utilizatorii noștri. Acest lucru ne-a condus la crearea ceea ce numim “framework-ul nostru de experimentare”, care este o mare bază de date care simulează datele de antrenare pe care utilizatorii noștri le-ar construi pe platformă. Putem testa astfel schimbări în metodologia noastră de antrenare împotriva acestor seturi de date și evaluăm dacă ajută sau nu. În loc să evaluăm un singur model, evaluăm mai mult arhitectura + metodologia de antrenare.

Altă provocare este că utilizatorii noștri nu sunt neapărat practicieni de ML, așa că nu cunosc neapărat ce este un set de antrenare, ce este o etichetă și așa mai departe. Construirea unei interfețe cu utilizatorul care să permită utilizatorilor non-ML să construiască seturi de date și să antreneze modele de ML este o provocare constantă și există multă comunicare între echipele de UX și ML pentru a ne asigura că îi ghidăm pe utilizatori în direcția corectă.

 

Unele dintre responsabilitățile dvs. includ prototiparea unor idei și tehnologii noi. Care sunt unele dintre proiectele mai interesante la care ați lucrat?

Cred că cel mai interesant a fost prototipul detectorului personalizat de la Picterra. Acum 1,5 ani, aveam “detectoare încorporate” pe platformă: acestea erau detectoare pe care le-am antrenat noi înșine și le-am făcut accesibile utilizatorilor. De exemplu, aveam un detector de clădiri, un detector de mașini, etc…

Acesta este fluxul de lucru ML obișnuit: aveți un inginer de ML care dezvoltă un model pentru un anumit caz și apoi îl servește clienților.

Dar am vrut să facem ceva diferit și să împingem limitele un pic. Așa că am spus: “Ce-ar fi dacă am permite utilizatorilor să antreneze propriile modele direct pe platformă?” A existat câteva provocări pentru a face să funcționeze: prima, nu am vrut ca acest lucru să dureze câteva ore. Dacă vrem să păstrăm senzația de interactivitate, antrenamentul ar trebui să dureze câteva minute, maximum. A doua, nu am vrut să cerem mii de anotări, ceea ce este de obicei necesar pentru modelele de învățare profundă mari.

Așa că am început cu un model foarte simplu, am făcut câteva teste în Jupyter și apoi am încercat să integrăm în platformă și să testăm fluxul de lucru complet, cu o interfață cu utilizatorul de bază și așa mai departe. La început, nu a funcționat foarte bine în majoritatea cazurilor, dar a existat câteva cazuri în care a funcționat. Acest lucru ne-a dat speranță și am început să iterăm asupra metodologiei de antrenare și a modelului. După câteva luni, am reușit să ajungem la un punct în care a funcționat bine, și acum avem utilizatori care folosesc acest lucru în mod constant.

Ceea ce a fost interesant aici a fost provocarea dublă de a păstra antrenamentul rapid (în prezent, câteva minute) și, prin urmare, modelul nu prea complex, dar, în același timp, suficient de complex pentru a funcționa și a rezolva problemele utilizatorilor. Pe lângă aceasta, funcționează cu puține (<100) etichete pentru multe cazuri.

Am aplicat, de asemenea, multe dintre “Regulile de Machine Learning” de la Google (GOOGL ), în special cele despre implementarea întregului flux de lucru și a metricilor înainte de a începe să optimizați modelul. Acest lucru ne-a pus în modul de “gândire sistemică”, în care ne dăm seama că nu toate problemele noastre ar trebui să fie gestionate de ML-ul de bază, ci unele dintre ele pot fi împinse către UI, altele pot fi prelucrate înainte sau după, etc…

 

Există tehnologii de machine learning care sunt utilizate la Picterra?

În producție, utilizăm în prezent Pytorch pentru a antrena și rula modelele noastre. Utilizăm și Tensorflow, din când în când, pentru anumite modele dezvoltate pentru clienți. Altele decât acestea, este un stivă științifică Python standard (numpy, scipy) cu câteva biblioteci geospațiale (gdal) adăugate.

 

Puteți să ne explicați cum funcționează Picterra în backend, odată ce cineva încarcă imagini și dorește să antreneze rețeaua neurală pentru a annota corect obiectele?

Da, sigur, așa că, mai întâi, atunci când încărcați o imagine, o prelucrăm și o stocăm într-un format “Cloud-Optimized-Geotiff” (COG) pe stocarea noastră de obiecte (Google Cloud Storage), ceea ce ne permite să accesăm rapid blocuri ale imaginii fără a fi nevoie să descărcăm întreaga imagine mai târziu. Acesta este un punct cheie, deoarece imaginile geospațiale pot fi uriașe: avem utilizatori care lucrează în mod obișnuit cu imagini de 50000×50000.

Apoi, pentru a antrena modelul, veți trebui să creați setul de date de antrenare prin intermediul interfeței noastre web. Veți face acest lucru prin definirea a trei tipuri de zone:

  1. zone de “antrenare”, în care veți desena etichete de antrenare
  2. zone de “testare”, unde modelul va face predicții pentru a vă permite să vizualizați rezultate
  3. zone de “acuratețe”, unde veți desena etichete, dar care nu vor fi utilizate pentru antrenare, ci doar pentru evaluarea scorului

Odată ce ați creat acest set de date, puteți pur și simplu face clic pe “Antrenează” și vom antrena un detector pentru dvs. Ceea ce se întâmplă apoi este că punem o sarcină de antrenare în coadă, unul dintre lucrătorii noștri GPU o preia (noi lucrători GPU sunt porniți automat dacă există multe sarcini concurente), antrenăm modelul dvs., salvăm greutățile sale în stocarea de obiecte și, în final, facem predicții în zona de “testare” pentru a afișa în interfața cu utilizatorul. De acolo, puteți itera asupra modelului dvs. De obicei, veți observa câteva greșeli în zonele de “testare” și veți adăuga zone de “antrenare” pentru a ajuta modelul să se îmbunătățească.

Odată ce sunteți mulțumit de scorul modelului dvs., puteți rula modelul la scară. Din punctul de vedere al utilizatorului, acest lucru este foarte simplu: pur și simplu faceți clic pe “Detectează” lângă imaginea pe care doriți să o rulați. Dar este un pic mai complicat sub capotă, dacă imaginea este mare. Pentru a accelera lucrurile, a gestiona eșecurile și a evita ca detectarea să dureze câteva ore, împărțim detectarea mare în celule de grilă și rulăm o detectare independentă pentru fiecare celulă. Acest lucru ne permite să rulăm detectări la scară foarte mare. De exemplu, am avut un client care a rulat detectarea peste întreaga țară a Danemarcei pe imagini de 25 cm, ceea ce este în domeniul terabytes de date – pentru un singur proiect. Am acoperit un proiect similar în acest articol Medium.

 

Există altceva pe care ați dori să-l împărtășiți despre Picterra?

Cred că ceea ce este grozav la Picterra este că este un produs unic, la intersecția dintre ML și geospațial. Ceea ce ne diferențiază de alte companii care prelucrează date geospațiale este că dotăm utilizatorii noștri cu o platformă self-service. Ei pot găsi cu ușurință locații, analiza modele și detecta și număra obiecte pe imagini de observare a Pământului, fără a necesita cunoștințe de codare. Pentru cei care doresc să învețe conceptele de bază ale machine learning-ului în domeniul geospațial, am lansat un curs online cuprinzător.

Ceea ce este, de asemenea, demn de menționat este că aplicațiile posibile ale Picterra sunt nelimitate – detectoare construite pe platformă au fost utilizate în managementul orașelor, agricultură de precizie, managementul pădurilor, gestionarea riscurilor umanitare și a dezastrelor, agricultură, și multe altele, doar pentru a numi cele mai comune aplicații. Suntem, de fapt, surprinși în fiecare zi de ceea ce încearcă utilizatorii noștri să facă cu platforma noastră. Puteți încerca și ne puteți spune cum a funcționat pe rețelele de socializare.

Mulțumim pentru interviul excelent și pentru a ne împărtăși cât de puternică este Picterra. Citiitorii care doresc să afle mai multe ar trebui să viziteze site-ul Picterra.

Antoine este un lider vizionar și partener fondator al Unite.AI, condus de o pasiune neclintită pentru modelarea și promovarea viitorului inteligenței artificiale și roboticii. Un întreprinzător serial, el crede că inteligența artificială va fi la fel de disruptivă pentru societate ca și electricitatea și este adesea prins vorbind entuziast despre potențialul tehnologiilor disruptive și AGI.

Ca futurist, el este dedicat explorării modului în care aceste inovații vor modela lumea noastră. În plus, el este fondatorul Securities.io, o platformă axată pe investiții în tehnologii de ultimă generație care redefinesc viitorul și reshapă întregi sectoare.