Mediapipe, un outil opensource de référence en vision par ordinateur

Mediapipe : le framework révolutionnaire en vision par ordinateur

Proposé par Google en open source, Mediapipe est l’un des frameworks de référence en vision par ordinateur. Il s’agit d’une boîte à outils de plusieurs modèles de vision par ordinateur permettant de réaliser des tâches diverses.

Ce framework offre une large gamme de solutions prêtes à l’emploi pour le traitement d’images et de vidéos, telles que la détection de visages, le suivi des mains, la segmentation de poses humaines, et bien plus encore.

Mediapipe se distingue par sa capacité à fonctionner en temps réel sur différents appareils, qu’il s’agisse de smartphones, de tablettes, ou de systèmes embarqués.

Grâce à sa modularité, il permet aux développeurs d’intégrer facilement des fonctionnalités de vision par ordinateur avancées dans leurs applications, tout en offrant des performances optimisées et une grande flexibilité d’adaptation aux besoins spécifiques des projets.

Un autre avantage majeur de Mediapipe est sa compatibilité avec plusieurs plateformes, notamment Android, le Web (via JavaScript), Python, et prochainement iOS.

Quelles sont les tâches visuelles réalisées par Mediapipe ?

Mediapipe permet de réaliser plusieurs tâches qui vont de la détection d’objets à l’estimation de poses humaines.

Dans cette partie nous allons décortiquer chacune d’elles et expliquer leur fonctionnement. Il est important de noter que Mediapipe permet de réaliser des tâches de traitement de langage aussi, mais on se concentrera dans cet article sur les tâches visuelles.

Détection d’objets avec Mediapipe

Avec Mediapipe, il est possible de repérer et de situer différents types d’objets dans des images ou des vidéos. Par exemple, un modèle peut identifier et localiser des chiens dans une image.

Ce processus fonctionne grâce à un modèle d’apprentissage automatique capable d’analyser des images fixes ou des flux vidéo en temps réel. Les objets détectés sont ensuite listés, avec des informations précises sur leur position et leur présence dans l’image ou la vidéo.

Bien que le framework de reference en détection d’objets soit YOLO, Mediapipe permet d’avoir de bons résultats dans des environnements léger comme sur un smartphone.

Classification d’images

Mediapipe offre une puissante fonctionnalité de classification d’images, conçue pour identifier et catégoriser le contenu d’une image en la comparant à un ensemble prédéfini de catégories établies lors de la phase d’entraînement du modèle.

Ce processus permet au modèle d’apprentissage automatique d’analyser et de classer les images en fonction des similarités qu’elles présentent avec les catégories connues.

L’entrée de ce modèle est très similaire à celle utilisée pour la détection d’objets, ce qui signifie qu’il est capable de traiter non seulement des images statiques, mais également des flux vidéo en temps réel.

Une fois l’image ou la vidéo analysée, le modèle génère une liste de catégories potentielles, chacune étant accompagnée d’une probabilité indiquant le degré de correspondance avec l’image étudiée. Cette approche permet une identification précise et rapide du contenu visuel, facilitant ainsi diverses applications, allant de la reconnaissance d’objets à la compréhension contextuelle des scènes capturées.

Segmentation d’images

La segmentation d’images est une technique qui permet de diviser les images en plusieurs zones distinctes, basées sur des catégories préétablies. Elle est souvent utilisé pour identifier des objets ou des textures spécifiques ou appliquer différents effets visuels à l’image.

Mediapipe propose divers modèles pour segmenter les images, y compris des modèles spécialisés pour détecter les personnes et analyser leurs caractéristiques. Par exemple, certains modèles distinguent une personne de l’arrière-plan, ou isolent des éléments tels que les cheveux, le visage, la peau, les vêtements et les accessoires.

Cette fonctionnalité repose sur le deep learning pour analyser les images ou les vidéos en temps réel. Elle génère ensuite une liste de régions segmentées, chacune correspondant à un objet ou une zone spécifique de l’image, selon le modèle choisi. Cette segmentation précise permet d’améliorer l’analyse d’image et d’enrichir les interactions visuelles.

Par ailleurs, Mediapipe permet aussi de faire de la segmentation interactive, ce que l’on appelle aussi la « click-based segmentation ».

Dans cette technique, on demande à l’utilisateur final de cliquer sur l’objet qui doit être segmenté, en en fonction de la position du point sélectionné, le modèle va essayer de detecter les contours de l’objet en question. Cette technique est beaucoup utilisée dans la retouche photo.

Reconnaissance de gestes

Dans sa version initiale, Mediapipe a été développé pour les cas d’usage liés à la détection de points clés sur le corps d’une personne.

Ces techniques ouvrent pas mal de possibilités, parmi elles la reconnaissance de gestes de la main. Mediapipe permet de faire de la reconnaissance de gestes en temps réel. Cette technique est très utile dans le domaine de l’interaction homme-machine ou alors pour des cas d’usages bien spécifiques comme la traduction du langage des signes.

Détection de points de repère

On peut avoir des cas d’usages dans lesquels on veut récupérer les positions des points clés de la main plutôt que de simplement faire la reconnaissance des gestes. Mediapipe permet de faire ce travail sur les mains droite et gauche en même temps.

Modèle Mediapipe pour la detection de points clés de la main (source : ai.google.dev)
Modèle Mediapipe pour la detection de points clés de la main (source : ai.google.dev)

Ce modèle va permettre d’extraire 21 points clés du poignet jusqu’au bout des doigts en les classifiant par doigt.

Classification des points clés de la main Mediapipe (source : ai.google.dev)
Classification des points clés de la main Mediapipe (source : ai.google.dev)

Détection de visages

Dans la très large boite à outils de Mediapipe, on trouve aussi un modèle qui permet de faire de la détection de visage. C’est une technique que l’on maitrise depuis longtemps et qui n’a rien de compliqué mais Mediapipe l’a rendu encore plus simple et légère. Elle peut, comme toutes les autres tâches proposées par Mediapipe, s’intégrer facilement dans des plateformes comme Android ou iOS.

L’objectif de la détection de visage est simplement d’encadrer les visages détectés par le modèle à l’image. Mediapipe va aussi localiser des points clés, correspondants au bas de la bouche, au bas du nez, aux oreilles et aux yeux.

Détection de visage avec Mediapipe (source : ai.google.dev)
Détection de visage avec Mediapipe (source : ai.google.dev)

Détection de points de repère sur le visage

On peut aller beaucoup plus loin sur les détection des points du visage avec Mediapipe. Le modèle Mediapipe face marker permet d’extraire un maillage en temps réel sur le visage d’une personne et extraire 478 points clés.

Cet outil peut-être utilisé dans le domaine de la sécurité, pour reconnaitre une personne, dans l’analyse de sentiment, pour faire de la lecture labiale et peut-être même pour construire un détecteur de mensonges nouvelle génération.

Détection de points de repère sur le visage d'une personne avec Mediapipe (source : ai.google.dev)
Détection de points de repère sur le visage d’une personne avec Mediapipe (source : ai.google.dev)

Détection des points de repère de position avec Mediapipe

Enfin, Mediapipe permet naturellement de faire de l’extraction de poses humaines sur une image. Plutôt que d’extraire les points clés des mains et du visage uniquement, on va extraire les positions des points clés de tous le corps humain.

Mediapipe n’est pas la solution de référence sur ce sujet, OpenPose est le projet opensource leader sur l’estimation de poses humaines. Par contre, Mediapipe permet de faire le traitement en temps réel et avec une bonne précision, ce qui ouvre la porte à pas mal de cas d’usages qui étaient impossibles sans traitement en temps réel.

Les autres possibilités offertes par Mediapipe

Malgré tous ces outils qui font déjà de Mediapipe un outil de référence en vision par ordinateur, je ne vous ai pas tout dit !

D’abord, Mediapipe a une fonctionnalité qui permet de combiner plusieurs de ces outils en même temps et faire en sorte qu’ils travaillent en parallèle. Par exemple, on peut extraire des centaines de points de clés sur le corps d’une personne en combinant la détection des points des mains, la détection du maillage faciale et l’estimation de poses humaines.

Par ailleurs, vous pouvez tester tous les outils que j’ai mentionné dans cet article via une webapp : le studio en ligne de Mediapipe.

Enfin, Mediapipe permet de ré-entraîner les différents modèles que l’on a vu sur d’autres jeux de données. Vous pourrez par exemple faire de la détection de points clés sur des images d’animaux avec votre propre dataset. Ou alors détecter des points clés sur un produits dans une chaine de production pour vérifier sa qualité.