Modèles et plateformes d’IA

Julien Rebetez, Ingénieur en chef de l’apprentissage automatique chez Picterra – Série d’entretiens

mm
Ajouter Unite.AI à vos sources préférées sur Google

Julien Rebetez est l’ingénieur en chef des logiciels et de l’apprentissage automatique chez Picterra. Picterra propose une plate-forme géospatiale basée sur le cloud, conçue spécifiquement 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 créées par l’homme, 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 satellitaires 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 j’étais intéressé par la graphique informatique. Cela m’a conduit à la vision par ordinateur, qui est un processus inverse où, au lieu de faire créer un environnement fictif par l’ordinateur, vous faites en sorte que l’ordinateur perçoive l’environnement réel. Pendant mes études, j’ai suivi des cours d’apprentissage automatique et j’ai été intéressé par 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 a encore un côté un peu magique lorsqu’il fonctionne.

 

Vous avez travaillé sur l’utilisation de l’apprentissage automatique pour analyser les images satellitaires pendant de nombreuses années. Quel a été votre premier projet ?

Ma première exposition aux images satellitaires 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 satellitaires disponibles gratuitement 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 incroyable 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, de la CIAT (Colombie). L’idée du projet est de détecter la déforestation en utilisant des images satellitaires disponibles gratuitement. À l’époque, nous avons travaillé avec des images MODIS (résolution de 250 mètres par pixel) car elles offraient une couverture uniforme et prévisible (à la fois spatialement et temporellement). Nous obtenions une mesure pour chaque pixel tous les quelques jours, et à partir de cette série temporelle 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 qu’il y avait également un certain nombre de problèmes 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 temporelle d’un pixel. Si la mesure ne correspondait pas à la prédiction, nous avions alors 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 traditionnelle, où vous avez une série temporelle de mesures et certaines d’entre elles seront complètement fausses en raison d’un nuage. Nous avons utilisé une approche basée sur Fourier (HANTS) pour nettoyer la série temporelle avant de détecter les 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 à réaliser 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 les principaux défis étaient plus liés à la mise en œuvre du framework et à l’utilisation correcte d’une carte graphique plutôt qu’à 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 les images brutes. Pour que cela fonctionne raisonnablement vite, je me souviens avoir dû mettre en œuvre 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 l’ingénieur en chef des logiciels et de l’apprentissage automatique 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érentes parties prenantes. Même si l’apprentissage automatique est au cœur de notre entreprise, vous réalisez rapidement que la plupart du temps n’est pas passé sur l’apprentissage automatique lui-même, mais sur toutes les choses qui l’entourent : la gestion des données, l’infrastructure, l’interface utilisateur, la prototypisation, la compréhension des utilisateurs, etc. C’est assez différent de l’université ou de mes expériences précédentes dans de grandes entreprises, où vous êtes beaucoup plus concentré 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 la plupart des 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. Cela signifie 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 amenés à créer ce que nous appelons notre « cadre 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 construiraient sur la plate-forme. Nous pouvons alors facilement tester les modifications apportées à notre méthodologie d’entraînement par rapport à 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-praticiens de l’apprentissage automatique de construire 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 nous assurer que nous guidons les utilisateurs dans la bonne direction.

 

Quels sont certains des 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 an et demi, nous avions des détecteurs « intégrés » sur la plate-forme : 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 en fait 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 plate-forme » ? 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 typiquement ce dont vous avez besoin pour les grands modèles d’apprentissage profond.

Nous avons donc commencé avec un modèle très simple, fait un tas de tests dans Jupyter, puis essayé d’intégrer cela dans notre plate-forme et de tester l’ensemble du flux de travail, 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 nous avons maintenant nos utilisateurs qui utilisent cela tout le temps.

Ce qui était intéressant dans ce projet, 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 le rendre suffisamment complexe pour qu’il fonctionne et résolve les problèmes des utilisateurs. En outre, cela fonctionne avec peu de labels (< 100) pour de nombreux cas.

Nous avons également appliqué de nombreuses règles de l’apprentissage automatique de Google (GOOGL ), en particulier celles relatives à la mise en œuvre de l’ensemble du pipeline et des métriques avant de commencer à optimiser le modèle. Cela nous a mis dans un mode de réflexion système où nous avons réalisé que tous nos problèmes ne devraient pas être traités par l’apprentissage automatique lui-même, mais que certains d’entre eux pouvaient être repoussés vers l’interface utilisateur, certains prétraités, etc.

 

Quelles sont certaines des 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 scientifique Python standard (numpy, scipy) avec certaines 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 ?

Bien sûr, 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 magasin d’objets (Google Cloud Storage), ce qui nous permet d’accéder rapidement à des blocs d’images sans avoir à télécharger l’ensemble de l’image 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.

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

  1. « zones d’entraînement », où vous dessinerez des labels d’entraînement
  2. « zones de test », où le modèle prédira pour vous permettre de visualiser certains résultats
  3. « zone de précision », où vous dessinerez également des labels, mais qui ne seront pas utilisés pour l’entraînement, seulement pour la notation

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, un de nos travailleurs GPU le récupère (de nouveaux travailleurs GPU sont lancés automatiquement s’il y a de nombreux travaux concurrents), forme votre modèle, enregistre ses poids dans le magasin d’objets et prédit 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 verrez 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 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 de l’apprentissage automatique et du géospatial. Ce qui nous distingue des autres entreprises qui traitent des données géospatiales, c’est que nous équipons nos utilisateurs d’une plate-forme autonome. Ils peuvent facilement trouver des emplacements, analyser des modèles et 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 codage de base – la plate-forme fait le travail en fonction de quelques annotations créées par l’homme. 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 – des détecteurs construits sur la plate-forme ont été utilisés dans la gestion urbaine, l’agriculture de précision, la gestion forestière, la gestion des risques humanitaires et de catastrophe, l’agriculture, etc., pour n’en citer que quelques-unes des applications les plus courantes. Nous sommes essentiellement surpris chaque jour par ce que nos utilisateurs essaient de faire avec notre plate-forme. Vous pouvez l’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 associé fondateur d'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 futuriste, 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.