Modelli e piattaforme di IA
Julien Rebetez, Lead Ingegnere di Machine Learning in Picterra – Serie di Interviste

Julien Rebetez, è il Lead Software e Machine Learning Engineer in Picterra. Picterra fornisce una piattaforma cloud-based geospaziale progettata per la formazione di rilevatori basati su apprendimento profondo, in modo rapido e sicuro.
Senza una sola riga di codice e con solo poche annotazioni create dall’uomo, gli utenti di Picterra creano e distribuiscono modelli di apprendimento profondo pronti all’uso e azionabili.
Automatizza l’analisi di immagini satellitari e aeree, consentendo agli utenti di identificare oggetti e modelli.
Cosa ti ha attirato verso il machine learning e l’intelligenza artificiale?
Ho iniziato a programmare perché volevo creare videogiochi e mi sono interessato alla grafica computerizzata. Ciò mi ha portato alla visione computerizzata, che è il processo inverso in cui, invece di far creare al computer un ambiente falso, lo si fa percepire all’ambiente reale. Durante i miei studi, ho seguito alcuni corsi di Machine Learning e mi sono interessato all’aspetto della visione computerizzata. Credo che ciò che è interessante nel ML è che si trova all’intersezione tra ingegneria del software, algoritmi e matematica e che ancora sembra un po’ magico quando funziona.
Hai lavorato sull’utilizzo del machine learning per analizzare le immagini satellitari per molti anni. Qual è stato il tuo primo progetto?
La mia prima esposizione alle immagini satellitari è stato il progetto Terra-i (per rilevare la deforestazione) e ci ho lavorato durante i miei studi. Ero sorpreso dalla quantità di dati satellitari disponibili gratuitamente prodotti dalle varie agenzie spaziali (NASA, ESA, ecc…). Puoi ottenere immagini regolari del pianeta gratuitamente ogni giorno o giù di lì, e questo è una grande risorsa per molte applicazioni scientifiche.
Puoi condividere più dettagli riguardanti il progetto “Terra-i”?
Il progetto Terra-i (http://terra-i.org/terra-i.html) è stato avviato dal professor Andrez Perez-Uribe, dell’HEIG-VD (Svizzera) e ora è guidato da Louis Reymondin, del CIAT (Colombia). L’idea del progetto è quella di rilevare la deforestazione utilizzando immagini satellitari disponibili gratuitamente. All’epoca, abbiamo lavorato con immagini MODIS (risoluzione di 250 m) perché fornivano una copertura uniforme e prevedibile (sia spaziale che temporale). Ottenevamo una misurazione per ogni pixel ogni pochi giorni e da questa serie temporale di misurazioni, si poteva cercare di rilevare anomalie o novità, come le chiamiamo a volte nel ML.
Questo progetto è stato molto interessante perché la quantità di dati è stata una sfida all’epoca e c’è stato anche un po’ di ingegneria del software per farlo funzionare su più computer e così via. Dal lato del ML, ha utilizzato una rete neurale bayesiana (non molto profonda all’epoca :)) per prevedere come doveva essere la serie temporale di un pixel. Se la misurazione non corrispondeva alla previsione, allora avevamo un’anomalia.
Come parte di questo progetto, ho anche lavorato sulla rimozione delle nuvole. Abbiamo utilizzato un approccio tradizionale di elaborazione del segnale, dove si ha una serie temporale di misurazioni e alcune di esse saranno completamente fuori posto a causa di una nuvola. Abbiamo utilizzato un approccio basato su Fourier (HANTS) per pulire la serie temporale prima di rilevare le novità al suo interno. Una delle difficoltà è che se l’avessimo pulita troppo forte, avremmo anche rimosso le novità, quindi ci sono state molte sperimentazioni per trovare i parametri giusti.
Hai anche progettato e implementato un sistema di apprendimento profondo per la classificazione automatica del tipo di coltura da immagini aeree (drone) di campi agricoli. Quali sono stati i principali problemi all’epoca?
Questo è stato il mio primo vero approccio al Deep Learning. All’epoca, credo che le principali sfide fossero più legate a far funzionare il framework e utilizzare correttamente una GPU che non al ML stesso. Abbiamo utilizzato Theano, che era uno degli antenati di Tensorflow.
L’obiettivo del progetto era classificare il tipo di coltura in un campo, da immagini di drone. Abbiamo provato un approccio in cui il modello di apprendimento profondo utilizzava istogrammi di colore come input, anziché solo l’immagine grezza. Per farlo funzionare in modo ragionevolmente veloce, ricordo di aver dovuto implementare un layer personalizzato in Theano, fino a scrivere del codice CUDA. È stata una grande esperienza di apprendimento all’epoca e un buon modo per scavare un po’ nei dettagli tecnici del Deep Learning.
Sei ufficialmente il Lead Software e Machine Learning Engineer in Picterra. Come descriveresti le tue attività quotidiane?
Varia molto, ma gran parte di essa consiste nel tenere d’occhio l’architettura generale del sistema e del prodotto in generale e comunicare con le varie parti interessate. Sebbene il ML sia al centro del nostro business, ci si rende presto conto che la maggior parte del tempo non viene spesa sul ML stesso, ma su tutte le cose che lo circondano: gestione dei dati, infrastruttura, UI/UX, prototipazione, comprensione degli utenti, ecc… Questo è abbastanza diverso dall’ambito accademico o dalle precedenti esperienze in aziende più grandi, dove si è molto più focalizzati su un problema specifico.
Ciò che è interessante in Picterra è che non solo eseguiamo modelli di apprendimento profondo per gli utenti, ma consentiamo loro di addestrare i propri modelli. Ciò è diverso dalla maggior parte dei flussi di lavoro ML tipici, dove si ha un team di ML che addestra un modello e poi lo pubblica in produzione. Ciò significa che non possiamo giocare manualmente con i parametri di addestramento come si fa spesso. Dobbiamo trovare un metodo di addestramento che funzioni per tutti i nostri utenti. Ciò ci ha portato a creare quello che chiamiamo il nostro “framework di esperimenti”, che è un grande repository di set di dati che simulano i dati di addestramento che gli utenti costruirebbero sulla piattaforma. Possiamo quindi facilmente testare le modifiche alla nostra metodologia di addestramento contro questi set di dati e valutare se aiutano o no. Quindi, invece di valutare un singolo modello, stiamo più valutando un’architettura + metodologia di addestramento.
L’altra sfida è che i nostri utenti non sono pratici di ML, quindi non conoscono necessariamente cosa sia un set di addestramento, cosa sia un’etichetta e così via. Costruire una UI che consenta a non pratici di ML di costruire set di dati e addestrare modelli di ML è una sfida costante e c’è molto andirivieni tra i team di UX e ML per assicurarsi che gli utenti siano guidati nella direzione giusta.
Alcune delle tue responsabilità includono la prototipazione di nuove idee e tecnologie. Quali sono alcuni dei progetti più interessanti su cui hai lavorato?
Credo che il più interessante in Picterra sia stato il prototipo di Custom Detector. 1,5 anni fa, avevamo “rilevatori incorporati” sulla piattaforma: quelli che avevamo addestrato noi stessi e resi accessibili agli utenti. Ad esempio, avevamo un rilevatore di edifici, un rilevatore di auto, ecc…
Questo è il flusso di lavoro ML tipico: si ha un ingegnere di ML che sviluppa un modello per un caso specifico e poi lo si serve ai clienti.
Ma abbiamo voluto fare qualcosa di diverso e spingere un po’ i limiti. Quindi abbiamo detto: “E se consentissimo agli utenti di addestrare i propri modelli direttamente sulla piattaforma”? C’erano alcune sfide per farlo funzionare: in primo luogo, non volevamo che ciò richiedesse molte ore. Se si vuole mantenere questa sensazione di interattività, l’addestramento dovrebbe durare al massimo pochi minuti. In secondo luogo, non volevamo richiedere migliaia di annotazioni, che è tipicamente ciò di cui hanno bisogno i grandi modelli di apprendimento profondo.
Quindi abbiamo iniziato con un modello super semplice, fatto un po’ di test in Jupyter e poi cercato di integrarlo nella nostra piattaforma e testare l’intero flusso di lavoro, con una UI di base e così via. All’inizio, non funzionava molto bene nella maggior parte dei casi, ma c’erano alcuni casi in cui funzionava. Ciò ci ha dato speranza e abbiamo iniziato a iterare sulla metodologia di addestramento e sul modello. Dopo alcuni mesi, siamo riusciti a raggiungere un punto in cui funzionava bene, e adesso abbiamo i nostri utenti che lo utilizzano tutto il tempo.
Ciò che è stato interessante in questo progetto è la doppia sfida di mantenere l’addestramento veloce (attualmente pochi minuti) e quindi il modello non troppo complesso, ma allo stesso tempo abbastanza complesso da funzionare e risolvere i problemi degli utenti. Inoltre, funziona con poche etichette (<100) per molti casi.
Abbiamo anche applicato molte delle “Regole del Machine Learning” di Google (GOOGL ), in particolare quelle relative all’implementazione dell’intero flusso di lavoro e delle metriche prima di iniziare a ottimizzare il modello. Ciò ci ha messo nella modalità di “pensiero di sistema” in cui si capisce che non tutti i problemi devono essere gestiti dal core del ML, ma alcuni di essi possono essere spostati sulla UI, alcuni pre-elaborati, alcuni post-elaborati, ecc…
Quali sono alcune delle tecnologie di machine learning utilizzate in Picterra?
In produzione, stiamo attualmente utilizzando Pytorch per addestrare e eseguire i nostri modelli. Utilizziamo anche Tensorflow di tanto in tanto, per alcuni modelli specifici sviluppati per i clienti. Oltre a questo, è uno stack scientifico Python abbastanza standard (numpy, scipy) con alcune librerie geospaziali (gdal) aggiunte.
Puoi discutere come funziona Picterra nel backend una volta che qualcuno carica immagini e desidera addestrare la rete neurale per annotare correttamente gli oggetti?
Certo, quindi quando si carica un’immagine, la elaboriamo e la archiviamo in un formato “Cloud-Optimized-Geotiff” (COG) sul nostro archivio di blob (Google Cloud Storage), che ci consente di accedere rapidamente a blocchi dell’immagine senza dover scaricare l’intera immagine in seguito. Questo è un punto chiave perché le immagini geospaziali possono essere enormi: abbiamo utenti che lavorano regolarmente con immagini da 50.000 x 50.000 pixel.
Quindi, per addestrare il modello, dovrai creare il tuo set di dati di addestramento tramite la nostra UI web. Lo farai definendo 3 tipi di aree:
- aree di addestramento, in cui disegnerai etichette di addestramento
- aree di test, dove il modello predirà per consentirti di visualizzare alcuni risultati
- area di accuratezza, dove disegnerai etichette, ma queste non saranno utilizzate per l’addestramento, solo per la valutazione
Una volta creato il set di dati, puoi semplicemente fare clic su “Addestra” e addestreremo un rilevatore per te. Ciò che accade dopo è che mettiamo in coda un lavoro di addestramento, facciamo in modo che uno dei nostri lavoratori GPU lo raccolga (nuovi lavoratori GPU vengono avviati automaticamente se ci sono molti lavori concorrenti), addestreremo il tuo modello, salveremo i suoi pesi sull’archivio di blob e infine predireremo nell’area di test per visualizzare sulla UI. Da lì, puoi iterare sul tuo modello. Tipicamente, noterai alcuni errori nell’area di test e aggiungerai aree di addestramento per aiutare il modello a migliorare.
Una volta che sei soddisfatto del punteggio del tuo modello, puoi eseguirlo su larga scala. Dal punto di vista dell’utente, è davvero semplice: basta fare clic su “Rileva” accanto all’immagine su cui desideri eseguirlo. Ma è un po’ più complesso sotto il cofano se l’immagine è grande. Per velocizzare le cose, gestire gli errori e evitare che le rilevazioni richiedano molte ore, dividiamo le grandi rilevazioni in celle di griglia e eseguiamo un lavoro di rilevamento indipendente per ogni cella. Ciò ci consente di eseguire rilevamenti su larga scala. Ad esempio, abbiamo avuto un cliente che ha eseguito la rilevazione su tutta la Danimarca su immagini da 25 cm, che è nell’ordine dei TB di dati – per un singolo progetto. Abbiamo coperto un progetto simile in questo post su Medium.
C’è qualcos’altro che ti piacerebbe condividere su Picterra?
Credo che ciò che è grande in Picterra è che è un prodotto unico, all’intersezione tra ML e geospaziale. Ciò che ci distingue da altre aziende che elaborano dati geospaziali è che forniamo ai nostri utenti una piattaforma self-service. Possono facilmente trovare posizioni, analizzare modelli e rilevare e contare oggetti su immagini di osservazione della Terra. Sarebbe impossibile senza il machine learning, ma i nostri utenti non hanno nemmeno bisogno di competenze di base in codifica – la piattaforma fa il lavoro in base a poche annotazioni create dall’uomo. Per coloro che desiderano approfondire e imparare i concetti fondamentali del machine learning nel dominio geospaziale, abbiamo lanciato un corso online completo.
Ciò che è anche degno di nota è che le possibili applicazioni di Picterra sono infinite – i rilevatori costruiti sulla piattaforma sono stati utilizzati nella gestione urbana, nell’agricoltura di precisione, nella gestione forestale, nella gestione umanitaria e del rischio di disastri, nell’agricoltura, solo per citare le applicazioni più comuni. Siamo fondamentalmente sorpresi ogni giorno da ciò che i nostri utenti stanno cercando di fare con la nostra piattaforma. Puoi provarlo e farci sapere come ha funzionato sui social media.
Grazie per la grande intervista e per aver condiviso con noi quanto sia potente Picterra, i lettori che desiderano saperne di più possono visitare il sito web di Picterra.












