Utilisez MediaPipe et TensorFlow.js pour suivre les visages et les mains dans le navigateur

Source: TensorFlow

Cet article est à propos de 2626 mots , Suggérer une lecture 5 minutes

Cet article présente deux nouveaux packages pour le suivi des points clés du visage et des mains: Facemesh et Handpose.

Récemment, nous avons publié deux nouveaux packages: Facemesh  avec Handpose , Utilisé pour suivre les points caractéristiques principaux du visage et de la main, respectivement. Le package publié cette fois est Google Research MediaPipe  avec TensorFlow.js  Le travail de l'équipe.

Essayez la version de démonstration en direct dans votre navigateur

Le package Facemesh peut trouver des limites faciales et des points de caractéristique dans une image, tandis que Handpose peut être utilisé pour trouver des limites de main et des points de caractéristique. Ces packages sont petits, rapides et peuvent s'exécuter complètement dans le navigateur, de sorte que les données ne quitteront jamais l'appareil de l'utilisateur, protégeant ainsi la confidentialité de l'utilisateur. Vous pouvez maintenant essayer ces packages en utilisant les liens suivants:

  • Facemesh
  • Handpose

Ces packages ont également été fournis en tant que composants dans MediaPipe (une bibliothèque pour la construction de pipelines de sensibilisation multimodaux):

  • Suivi du visage MediaPipe
  • Suivi de la posture de la main MediaPipe

Nous espérons que le suivi du visage et de la main en temps réel pourra démarrer un nouveau mode interactif: la position géométrique du visage est la base de la classification des expressions faciales et le suivi de la main est la première étape de la reconnaissance des gestes. Nous attendons avec impatience de voir comment ces fonctions élargiront davantage l'application de l'interactivité et de l'accessibilité à Internet.

En savoir plus: Facemesh

Le package Facemesh ne nécessite qu'une seule entrée de caméra (aucun capteur de profondeur requis) pour déduire approximativement la géométrie faciale 3D à partir d'images ou de flux vidéo. La forme géométrique peut localiser les yeux, le nez et les lèvres du visage grâce à des caractéristiques, y compris des détails tels que le contour des lèvres et le contour du visage. Ces informations peuvent être utilisées pour des tâches en aval, telles que la classification des expressions faciales (mais pas pour l'identification). Pour plus de détails sur les performances du modèle dans différents ensembles de données, veuillez consulter notre Carte modèle . Ce forfait est également disponible MediaPipe  obtenir.

Performance

Facemesh est un ensemble léger qui n'occupe que 3 Mo d'espace, ce qui le rend idéal pour le raisonnement en temps réel sur divers appareils mobiles. Lors des tests, veuillez noter que TensorFlow.js fournira également plusieurs backends différents parmi lesquels vous pourrez choisir, y compris WebGL et XNNPACK  WebAssembly (WASM) pour les appareils dotés de GPU bas de gamme. Le tableau suivant montre les performances du package sur plusieurs appareils différents et le backend TensorFlow.js:

installation

Il existe deux façons d'installer le package Facemesh:

1. Via NPM:

importer * en tant que facemesh à partir de '@ tensorflow-models / facemesh;

2. Via la balise script:

< script src = "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core" > < / script > < script src = "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter" > < / script > < script src = "https://cdn.jsdelivr.net/npm/@tensorflow-models/facemesh" > < / script > `` ''

usage

Après avoir installé le package, il vous suffit de charger le modèle et de passer l'image pour commencer à détecter les traits du visage:

// Charger les ressources du modèle de faciès MediaPipe. modèle const = attendre facemesh.load (); // Passer un flux vidéo au modèle pour obtenir // un tableau de visages détectés à partir du graphique MediaPipe. const video = document.querySelector ("video"); const faces = attendent model.estimateFaces (vidéo); // Chaque objet face contient une propriété `scaledMesh`, // qui est un tableau de 468 points de repère. faces.forEach (face = >  console.log (face.scaledMesh));

Vous pouvez saisir des vidéos, des images statiques pour estimer les faces, même pour le pipeline node.js ImageData  interface. Facemesh renvoie ensuite un tableau d'objets prédits pour chaque entrée d'informations pertinentes sur le visage (par exemple, le score de confiance et la position de 468 points caractéristiques sur le visage). Voici des exemples d'objets de prédiction:

{ faceInViewConfidence: 1, boundingBox: { en haut à gauche:, // en bas à droite:, }, maillage: , scaledMesh: , annotations: { silhouette: , ... } }

Veuillez consulter notre Doc Pour en savoir plus sur l'API.

Compréhension approfondie: Handpose

Le package Handpose est utilisé pour détecter la main dans l'image d'entrée ou le flux vidéo et revenir pour localiser 21 points de caractéristique 3D de chaque main. Ces points caractéristiques comprennent la position de chaque articulation des doigts et de la paume. En août 2019, nous sommes passés MediaPipe  Publiez le modèle - vous pouvez trouver plus d'informations sur l'architecture du modèle dans les articles publiés avec le modèle. Pour plus de détails sur les performances de Handpose dans différents ensembles de données, veuillez consulter notre Carte modèle . Ce forfait est également disponible MediaPipe  obtenir.

Performance

Handpose est un ensemble relativement léger qui occupe environ 12 Mo d'espace et convient au raisonnement en temps réel. Le tableau suivant montre les performances du progiciel sur différents appareils:

installation

Il existe deux façons d'installer le package Handpose:

1. Installez via NPM:

importer * comme handtrack à partir de '@ tensorflow-models / handpose;

2. Via la balise script:

< script src = "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core" > < / script > < script src = "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter" > < / script > < script src = "https://cdn.jsdelivr.net/npm/@tensorflow-models/handpose" > < / script >

usage

Après avoir installé le progiciel, il vous suffit de charger le modèle et de passer l'image pour commencer à suivre les points caractéristiques de la main:

// Charger le modèle à main de MediaPipe modèle const = attendre handpose.load (); // Passer un flux vidéo au modèle pour obtenir // une prédiction du graphique MediaPipe. const video = document.querySelector ("video"); const mains = attendre model.estimateHands (vidéo); // Chaque objet main contient une propriété `landmarks`, // qui est un tableau de 21 repères 3D. hands.forEach (main = >  console.log (hand.landmarks));

Comme facemesh, l'entrée pour estimer les mains peut être vidéo, image fixe ou ImageData interface. Le package renvoie ensuite un tableau d'objets décrivant la main d'entrée. Voici des exemples d'objets de prédiction:

{ handInViewConfidence: 1, boundingBox: { en haut à gauche:, // en bas à droite:, }, repères: , annotations: { indexFinger: , ... } }

Veuillez consulter notre Doc Pour en savoir plus sur l'API.

Tourné vers l'avenir

Nous continuerons d'améliorer Facemesh et Handpose. Dans un proche avenir, nous ajouterons également la prise en charge du suivi de plusieurs mains. Nous avons également travaillé à accélérer le modèle, en particulier sur les appareils mobiles. Au cours des derniers mois de développement, nous avons vu que Facemesh et Handpose ont considérablement amélioré leur performance, et nous pensons que cette tendance se poursuivra.

L'équipe MediaPipe développe une architecture de modèle plus rationalisée et l'équipe TensorFlow.js a travaillé sur des moyens d'accélérer l'inférence, comme la fusion d'opérateurs. L'augmentation de la vitesse d'inférence peut à son tour déverrouiller des modèles plus grands et plus précis à utiliser dans les pipelines en temps réel.

Plan de suivi

  • Essayez notre modèle ! Pour votre Retour d'information ou opinion , Nous l'apprécierions!
  • Lisez ce document de recherche Google: https://arxiv.org/abs/1907.06724 Pour en savoir plus sur Facemesh
  • Parcourez cette "auto-expression AR en temps réel grâce à l'apprentissage automatique" et annoncez la sortie de facemesh dans le cadre du SDK AR Android
  • Lisez ce "Suivi des mains côté appareil en temps réel à l'aide de MediaPipe" pour en savoir plus sur l'incorporation de handpose dans MediaPipe

Merci

Nous remercions par la présente l'équipe MediaPipe d'avoir généreusement partagé avec nous l'implémentation native de ces packages. MediaPipe a développé et formé le modèle de base et conçu des graphiques de post-traitement pour intégrer tout le contenu.

Si vous souhaitez en savoir plus sur le contenu associé mentionné dans cet article, veuillez vous référer aux documents suivants. Ces documents approfondissent de nombreux sujets mentionnés dans cet article:

Facemeshhttps: //www.npmjs.com/package/@tensorflow-models/facemesh

Handposehttps: //www.npmjs.com/package/@tensorflow-models/handpose

MediaPipehttps: //mediapipe.dev/

TensorFlow.jshttps: //github.com/tensorflow/tfjs

Démo Facemeshhttps: //storage.googleapis.com/tfjs-models/demos/facemesh/index.html

Demo Handposehttps: //storage.googleapis.com/tfjs-models/demos/handpose/index.html

MediaPipehttps: //github.com/google/mediapipe/

Suivi du visage MediaPipe https://github.com/google/mediapipe/tree/master/mediapipe/graphs/face_detection

Suivi de la posture de la main MediaPipe https://github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_mobile_gpu.md

Carte modèle https://drive.google.com/file/d/1VFC_wIpw4O7xBOiTgUldl79d9LA-LsnA/view

XNNPACKhttps: //github.com/google/XNNPACK

ImageDatahttps: //developer.mozilla.org/en-US/docs/Web/API/ImageData

Documentation https://github.com/tensorflow/tfjs-models/tree/master/facemesh

Carte modèle https://drive.google.com/file/d/1sv4sSb9BSNVZhLzxXJ0jBv9DqD-4jnAz/view

MediaPipehttps: //github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_desktop.md

Documentation https://github.com/tensorflow/tfjs-models/tree/master/handpose

Modèle https://github.com/tensorflow/tfjs-models

Commentaires https://github.com/tensorflow/tfjs/issues/new

Commentaires https://github.com/tensorflow/tfjs-models/pulls

-Terminer-

Suivez la plateforme publique officielle WeChat de Tsinghua-Qingdao Data Science Research Institute "  IA Data Pie  "Et numéro de sur" Data Pie THU  "Obtenez plus d'avantages de cours et un contenu de qualité.

Modèle mathématique et prédiction de l'infection par le virus italien Covid-19 (code joint)
Précédent
le modèle négatif de demande d'échantillonnage connaissance de cartographie dans le système de recommandation (déjà ouvert) sur la base de
Prochain
Enseignez-vous à résoudre des équations mathématiques avancées en utilisant les réseaux de neurones!
Google Translate est écrasé! Le premier moteur de traduction au monde DeepL est de retour, la "folie du diable" est terminée
Envoyez-vous 16 conseils pratiques pour le dessin matplotlib (code joint)
USTC × MSRA | Dr Zhou Ming conférence Record: Natural Language Processing Better Life
A « chair de poule » étape importante: les scientifiques chinois les ondes cérébrales de décodage AI, le taux de précision de 97%
De nouvelles données de recherche de la Couronne où trouver? Les chercheurs doivent-voir (lien ci-joint)
« Hey Siri » équipe de développement scientifique et technologique derrière le noir!
L'apprentissage GRAPHIC: tout le monde peut comprendre l'algorithme principe
portes logiques de protéines avec les cellules dans l'ordinateur, les jeunes chercheurs chinois Gordon sciences
Le premier moteur de traduction au monde a évolué et la «folie du diable» a pris soin du dialecte
La diffusion des « informations » plutôt que « virus »! Les programmeurs avec 500 traduction multilingue « se laver les mains »
Tsinghua lancement plate-forme de sécurité de l'équipe AI AI, algorithme haut de déception face forte, puis corriger les bugs