Connect with us

Intelligence artificielle

Julien Rebetez, Lead Machine Learning Engineer chez Picterra – Série d’entretiens

mm

Julien Rebetez est le Lead Software & Machine Learning Engineer chez Picterra. Picterra propose une plateforme cloud basée sur la géospatialisation, spécialement conçue pour la formation de détecteurs basés sur l’apprentissage profond, rapidement et de manière sécurisée.

Sans une seule ligne de code et avec seulement quelques annotations humaines, les utilisateurs de Picterra créent et déployent des modèles d’apprentissage profond prêts à l’emploi et actionnables.

Il automatise l’analyse des images satellite et aériennes, permettant aux utilisateurs d’identifier des objets et des modèles.

Qu’est-ce qui vous a attiré vers l’apprentissage automatique et l’IA ?

J’ai commencé à programmer parce que je voulais créer des jeux vidéo et que je m’intéressais aux graphiques informatiques. Cela m’a conduit à la vision par ordinateur, qui est une sorte de processus inverse où, au lieu de faire créer un environnement fictif par l’ordinateur, vous faites en sorte qu’il perçoive l’environnement réel. Pendant mes études, j’ai suivi des cours d’apprentissage automatique et je me suis intéressé à l’angle de la vision par ordinateur. Je pense que ce qui est intéressant dans l’apprentissage automatique, c’est qu’il se situe à l’intersection entre l’ingénierie logicielle, les algorithmes et les mathématiques, et qu’il conserve encore un côté un peu magique lorsqu’il fonctionne.

 

Vous travaillez sur l’utilisation de l’apprentissage automatique pour analyser les images satellite depuis de nombreuses années. Quel a été votre premier projet ?

Ma première exposition aux images satellite a été le projet Terra-i (pour détecter la déforestation) et j’y ai travaillé pendant mes études. J’étais étonné par la quantité de données satellite librement disponibles produites par les différentes agences spatiales (NASA, ESA, etc.). Vous pouvez obtenir des images régulières de la planète gratuitement tous les jours ou presque, et c’est une ressource fantastique pour de nombreuses applications scientifiques.

 

Pouvez-vous partager plus de détails sur le projet “Terra-i” ?

Le projet Terra-i (http://terra-i.org/terra-i.html) a été lancé par le professeur Andrez Perez-Uribe, de l’HEIG-VD (Suisse), et est maintenant dirigé par Louis Reymondin, du CIAT (Colombie). L’idée du projet est de détecter la déforestation en utilisant des images satellite librement disponibles. À l’époque, nous travaillons avec des images MODIS (résolution de 250 m) parce qu’elles offraient une couverture uniforme et prévisible (à la fois spatiale et temporelle). Nous obtenions une mesure pour chaque pixel tous les quelques jours, et à partir de cette série de mesures, vous pouvez essayer de détecter des anomalies ou des nouveautés, comme on les appelle parfois en apprentissage automatique.

Ce projet était très intéressant parce que la quantité de données était un défi à l’époque, et il y avait également un aspect d’ingénierie logicielle pour le faire fonctionner sur plusieurs ordinateurs, etc. Du point de vue de l’apprentissage automatique, il utilisait un réseau de neurones bayésien (pas très profond à l’époque 🙂 ) pour prédire à quoi devrait ressembler la série de mesures d’un pixel. Si la mesure ne correspondait pas à la prédiction, alors nous avions une anomalie.

Dans le cadre de ce projet, j’ai également travaillé sur la suppression des nuages. Nous avons utilisé une approche de traitement du signal traditionnel, où vous avez une série de mesures et certaines d’entre elles seront complètement fausses à cause d’un nuage. Nous avons utilisé une approche basée sur Fourier (HANTS) pour nettoyer la série de mesures avant de détecter des nouveautés. L’une des difficultés était que si nous nettoyions trop fortement, nous supprimerions également les nouveautés, il y avait donc beaucoup d’expériences à mener pour trouver les bons paramètres.

 

Vous avez également conçu et mis en œuvre un système d’apprentissage profond pour la classification automatique des types de cultures à partir d’images aériennes (prises par drone) de champs. Quels étaient les principaux défis à l’époque ?

C’était ma première véritable exposition à l’apprentissage profond. À l’époque, je pense que le principal défi était plus lié à la mise en œuvre du framework et à l’utilisation correcte d’une GPU que à l’apprentissage automatique lui-même. Nous avons utilisé Theano, qui était l’un des ancêtres de Tensorflow.

L’objectif du projet était de classer le type de culture dans un champ à partir d’images prises par drone. Nous avons essayé une approche où le modèle d’apprentissage profond utilisait des histogrammes de couleurs comme entrées, et non simplement l’image brute. Pour que cela fonctionne raisonnablement vite, je me souviens avoir dû implémenter une couche Theano personnalisée, allant jusqu’à du code CUDA. C’était une excellente expérience d’apprentissage à l’époque et une bonne façon de creuser un peu dans les détails techniques de l’apprentissage profond.

 

Vous êtes officiellement le Lead Software et Machine Learning Engineer chez Picterra. Comment décririez-vous vos activités quotidiennes ?

Cela varie vraiment, mais une grande partie de mon travail consiste à surveiller l’architecture globale du système et du produit en général, et à communiquer avec les différents acteurs. Même si l’apprentissage automatique est au cœur de notre entreprise, on se rend rapidement compte que la plupart du temps n’est pas consacré à l’apprentissage automatique lui-même, mais à toutes les choses qui l’entourent : gestion des données, infrastructure, UI/UX, prototypage, compréhension des utilisateurs, etc… C’est assez différent de l’expérience que l’on peut avoir dans l’académie ou dans d’autres entreprises plus grandes, où l’on se concentre davantage sur un problème spécifique.

Ce qui est intéressant chez Picterra, c’est que nous ne faisons pas seulement tourner des modèles d’apprentissage profond pour les utilisateurs, mais nous leur permettons également de former leurs propres modèles. Cela diffère de nombreux flux de travail d’apprentissage automatique typiques, où vous avez une équipe d’apprentissage automatique qui forme un modèle et le publie ensuite en production. Ce que cela signifie, c’est que nous ne pouvons pas jouer manuellement avec les paramètres d’entraînement comme on le fait souvent. Nous devons trouver une méthode d’entraînement qui fonctionnera pour tous nos utilisateurs. Cela nous a conduit à créer ce que nous appelons notre « framework d’expérimentation », qui est un grand référentiel de jeux de données qui simule les données d’entraînement que nos utilisateurs créent sur la plateforme. Nous pouvons alors facilement tester les modifications apportées à notre méthodologie d’entraînement sur ces jeux de données et évaluer si elles aident ou non. Au lieu d’évaluer un seul modèle, nous évaluons plutôt une architecture + une méthodologie d’entraînement.

L’autre défi est que nos utilisateurs ne sont pas des praticiens de l’apprentissage automatique, ils ne connaissent donc pas nécessairement ce qu’est un jeu d’entraînement, ce qu’est un label, etc. Construire une interface utilisateur pour permettre aux non-spécialistes de l’apprentissage automatique de créer des jeux de données et de former des modèles d’apprentissage automatique est un défi constant, et il y a beaucoup d’allers-retours entre les équipes UX et ML pour s’assurer que nous guidons les utilisateurs dans la bonne direction.

 

Certaines de vos responsabilités incluent la conception et la mise en œuvre de nouvelles idées et technologies. Quels sont les projets les plus intéressants sur lesquels vous avez travaillé ?

Je pense que le plus intéressant chez Picterra a été le prototype de détecteur personnalisé. Il y a 1,5 an, nous avions des « détecteurs intégrés » sur la plateforme : ceux que nous avions formés nous-mêmes et rendus accessibles aux utilisateurs. Par exemple, nous avions un détecteur de bâtiments, un détecteur de voitures, etc…

C’est le flux de travail d’apprentissage automatique typique : vous avez un ingénieur en apprentissage automatique qui développe un modèle pour un cas spécifique, puis vous le servez à vos clients.

Mais nous voulions faire quelque chose de différent et pousser les limites un peu. Nous avons donc dit : « Et si nous permettions aux utilisateurs de former leurs propres modèles directement sur la plateforme » ? Il y avait quelques défis pour que cela fonctionne : premièrement, nous ne voulions pas que cela prenne plusieurs heures. Si vous voulez conserver ce sentiment d’interactivité, l’entraînement doit prendre quelques minutes au maximum. Deuxièmement, nous ne voulions pas exiger des milliers d’annotations, ce qui est généralement nécessaire pour les grands modèles d’apprentissage profond.

Nous avons donc commencé avec un modèle très simple, fait quelques tests dans Jupyter, puis essayé de l’intégrer dans notre plateforme et de tester le flux de travail complet, avec une interface utilisateur de base, etc. Au début, cela ne fonctionnait pas très bien dans la plupart des cas, mais il y avait quelques cas où cela fonctionnait. Cela nous a donné de l’espoir, et nous avons commencé à itérer sur la méthodologie d’entraînement et le modèle. Après quelques mois, nous sommes parvenus à un point où cela fonctionnait bien, et nos utilisateurs l’utilisent maintenant tout le temps.

Ce qui était intéressant, c’est le double défi de maintenir l’entraînement rapide (actuellement quelques minutes) et donc le modèle pas trop complexe, mais en même temps suffisamment complexe pour qu’il fonctionne et résolve les problèmes des utilisateurs. En plus de cela, cela fonctionne avec moins de 100 étiquettes pour de nombreux cas.

Nous avons également appliqué de nombreuses « règles de l’apprentissage automatique » de Google, en particulier celles concernant la mise en œuvre de l’ensemble du flux de travail et des métriques avant de commencer à optimiser le modèle. Cela vous met dans une sorte de « mode de pensée système » où vous vous rendez compte que tous vos problèmes ne doivent pas être résolus par l’apprentissage automatique lui-même, mais que certains d’entre eux peuvent être repoussés vers l’interface utilisateur, certains prétraités, etc…

 

Quelles sont les technologies d’apprentissage automatique utilisées chez Picterra ?

En production, nous utilisons actuellement Pytorch pour former et exécuter nos modèles. Nous utilisons également Tensorflow de temps en temps, pour certains modèles spécifiques développés pour les clients. En dehors de cela, c’est un stack Python scientifique standard (numpy, scipy) avec quelques bibliothèques géospatiales (gdal) ajoutées.

 

Pouvez-vous discuter de la façon dont Picterra fonctionne à l’arrière-plan une fois que quelqu’un télécharge des images et souhaite former le réseau de neurones pour annoter correctement les objets ?

Oui, donc d’abord, lorsque vous téléchargez une image, nous la traitons et la stockons dans un format « Cloud-Optimized-Geotiff » (COG) sur notre stockage d’objets (Google Cloud Storage), ce qui nous permet d’accéder rapidement à des blocs de l’image sans avoir à télécharger l’image entière plus tard. C’est un point clé, car les images géospatiales peuvent être énormes : nous avons des utilisateurs qui travaillent régulièrement avec des images de 50 000 x 50 000 pixels.

Donc, pour former votre modèle, vous devrez créer votre jeu de données d’entraînement via notre interface utilisateur Web. Vous le ferez en définissant trois types de zones :

  1. « zones d’entraînement », où vous dessinerez des étiquettes d’entraînement
  2. « zones de test », où le modèle prédira pour vous laisser visualiser certains résultats
  3. « zone de précision », où vous dessinerez des étiquettes, mais celles-ci ne seront pas utilisées pour l’entraînement, seulement pour le scoring

Une fois que vous avez créé ce jeu de données, vous pouvez simplement cliquer sur « Former » et nous formerons un détecteur pour vous. Ce qui se passe ensuite, c’est que nous mettons en file d’attente un travail d’entraînement, faisons démarrer l’un de nos travailleurs GPU (de nouveaux travailleurs GPU sont démarrés automatiquement s’il y a de nombreux travaux concurrents), formons votre modèle, sauvegardons ses poids sur le stockage d’objets et prédisons enfin dans la « zone de test » pour afficher sur l’interface utilisateur. À partir de là, vous pouvez itérer sur votre modèle. Typiquement, vous repérerez quelques erreurs dans les « zones de test » et ajouterez des « zones d’entraînement » pour aider le modèle à s’améliorer.

Une fois que vous êtes satisfait du score de votre modèle, vous pouvez l’exécuter à grande échelle. Du point de vue de l’utilisateur, c’est vraiment simple : il suffit de cliquer sur « Détecter » à côté de l’image que vous souhaitez exécuter. Mais c’est un peu plus compliqué sous le capot si l’image est grande. Pour accélérer les choses, gérer les échecs et éviter que les détections ne prennent plusieurs heures, nous divisons les grandes détections en cellules de grille et exécutons un travail de détection indépendant pour chaque cellule. Cela nous permet d’exécuter des détections à très grande échelle. Par exemple, nous avons eu un client qui a exécuté une détection sur l’ensemble du Danemark sur des images de 25 cm, ce qui équivaut à des téraoctets de données – pour un seul projet. Nous avons couvert un projet similaire dans ce post Medium.

 

Y a-t-il autre chose que vous aimeriez partager sur Picterra ?

Je pense que ce qui est génial chez Picterra, c’est qu’il s’agit d’un produit unique, à l’intersection entre l’apprentissage automatique et la géospatialisation. Ce qui nous différencie des autres entreprises qui traitent des données géospatiales, c’est que nous équipons nos utilisateurs d’une plateforme autonome. Ils peuvent facilement trouver des emplacements, analyser des modèles, détecter et compter des objets sur des images d’observation de la Terre. Cela serait impossible sans l’apprentissage automatique, mais nos utilisateurs n’ont même pas besoin de compétences de base en codage – la plateforme fait le travail en fonction de quelques annotations humaines. Pour ceux qui veulent aller plus loin et apprendre les concepts fondamentaux de l’apprentissage automatique dans le domaine géospatial, nous avons lancé un cours en ligne complet.

Ce qui vaut également la peine d’être mentionné, c’est que les applications possibles de Picterra sont infinies – les détecteurs construits sur la plateforme ont été utilisés dans la gestion urbaine, l’agriculture de précision, la gestion forestière, la gestion des risques de catastrophe, l’agriculture, etc., pour n’en citer que quelques-unes. Nous sommes基本alement surpris chaque jour par ce que nos utilisateurs essaient de faire avec notre plateforme. Vous pouvez essayer et nous faire savoir comment cela a fonctionné sur les réseaux sociaux.

Je vous remercie pour cette grande interview et pour avoir partagé avec nous à quel point Picterra est puissant, les lecteurs qui souhaitent en savoir plus devraient visiter le site Web de Picterra.

Antoine est un leader visionnaire et partenaire fondateur de Unite.AI, animé par une passion inébranlable pour façonner et promouvoir l'avenir de l'IA et de la robotique. Un entrepreneur en série, il croit que l'IA sera aussi perturbatrice pour la société que l'électricité, et se fait souvent prendre en train de vanter le potentiel des technologies perturbatrices et de l'AGI.
En tant que futurist, il se consacre à explorer comment ces innovations vont façonner notre monde. En outre, il est le fondateur de Securities.io, une plateforme axée sur l'investissement dans les technologies de pointe qui redéfinissent l'avenir et remodelent des secteurs entiers.