HyperAI

Identifiez Tous Les Acteurs De The Big Bang Theory Dans Le Navigateur - Face-api.js

il y a 7 ans
Temple de la renommée
Liste recommandée
Sparanoid
特色图像

Introduction à HyperAI

Oubliez les choses malheureuses, il y a encore des gens qui font de bons navigateurs.

Récemment, un groupe d'ingénieurs a développé une API de reconnaissance faciale qui peut s'exécuter sur le navigateur basé sur le framework de base tensorflow.js - face-api.js, qui peut non seulement reconnaître plusieurs visages en même temps,Permettre à davantage d’ingénieurs en IA non professionnels d’utiliser la technologie de reconnaissance faciale à faible coût.

Principe de reconnaissance faciale

face-api.js est un framework js basé sur le noyau Tensorflow.js. Il utilise trois types de CNN pour effectuer la reconnaissance faciale et la détection des caractéristiques du visage afin d'identifier les personnes dans les images.

Comme la plupart des technologies de reconnaissance d'images, cette technologie est mise en œuvre en faisant correspondre la base de données, en trouvant l'image avec la plus grande similitude et en générant le résultat. Cependant, face-api.js peut reconnaître plusieurs visages dans une image en même temps.

Le principe de fonctionnement général de la technologie de reconnaissance faciale est le suivant : les ingénieurs saisissent d'abord un grand nombre d'images marquées d'informations telles que des noms dans le système pour créer un ensemble d'apprentissage de données, puis utilisent les objets de reconnaissance comme ensemble de test pour comparer avec les images de l'ensemble d'apprentissage.

Si la similarité entre deux images atteint le seuil, le résultat est émis, sinon « inconnu » est émis.

Le principe d'implémentation de face-api.js

Tout d’abord, il faut détecter les visages, c’est-à-dire encercler tous les visages de l’image.

face-api.js utilise l'algorithme SSD (Single Shot Multibox Detector) pour effectuer la détection des visages. L'algorithme SSD est une méthode de détection multi-cibles qui peut détecter directement les catégories cibles et déterminer la boîte englobante (communément appelée boîte b). Il peut améliorer la précision et la vitesse de reconnaissance en même temps.

Le SSD peut être compris comme un CNN basé sur MobileNetV1 avec une couche de prédiction de frontière supplémentaire. Le système utilise d’abord un cadre de délimitation pour encercler le contour du visage et le noter. Plus l'image est proche du visage, plus le score est élevé, ce qui permet de filtrer le contenu de l'image non faciale.

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Pour garantir la précision, les images entrées dans l'ensemble de test doivent être centrées sur le visage, de sorte que le cadre de délimitation du visage doit être aligné. À cette fin, face-api.js utilise un CNN simple pour trouver 68 points de repère afin de déterminer l'image du visage, préparant ainsi l'étape suivante de la reconnaissance faciale.

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Exemple

Grâce aux points de repère, le système peut déterminer davantage l’image du visage. Les figures suivantes montrent les effets avant (à gauche) et après (à droite) l’alignement des visages.

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Diagramme de l'effet d'alignement du visage

De toute évidence, après l'alignement, il y a moins de choses qui ne sont pas liées au visage, ce qui contribue à améliorer la précision de reconnaissance du système.

Mise en œuvre de la reconnaissance faciale

Une fois le visage encerclé, la reconnaissance faciale commencera.

Le programme entre les visages alignés dans un réseau d'apprentissage profond de reconnaissance faciale basé sur ResNet-34 Architecture système, détection de visage via la bibliothèque Dlib. Cette technique permet de mapper les traits du visage à un descripteur de visage (un vecteur de caractéristiques avec 128 valeurs), un processus souvent appelé intégration de visage.

Après cela, le programme compare les descripteurs de visage de chaque image avec les descripteurs de visage de l'ensemble d'apprentissage et détermine si les deux visages sont similaires en fonction d'un seuil (pour une image de visage de 150 × 150 pixels, un seuil de 0,6 est plus approprié).

La distance euclidienne (c'est-à-dire la métrique euclidienne) peut être utilisée pour la mesure de similarité, ce qui fonctionne très bien. L'effet réel peut être observé dans l'image gif ci-dessous.

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Parler ne coûte rien, montrez-moi le code !

Après avoir présenté les connaissances théoriques, il est temps de vous guider à travers le processus pratique. La figure suivante est utilisée comme image d’entrée.

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Étape 1 : Obtenir le script

Vous pouvez obtenir le dernier script à partir de dist/face-api.js :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Il peut également être obtenu via NPM :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Étape 2 : Charger le modèle de données

Les fichiers modèles peuvent être utilisés comme ressources statiques d'applications Web ou montés à d'autres emplacements. Les modèles peuvent être chargés en spécifiant des chemins de fichiers ou des URL.

En supposant que le modèle se trouve dans le répertoire public/models :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Si vous chargez un modèle spécifique, alors :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Étape 3 : Obtenez une description complète

Des images HTML, des toiles ou des vidéos peuvent être utilisées comme entrée du réseau. Voici une description complète de l'obtention de l'image d'entrée, c'est-à-dire de tous les visages :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Vous pouvez également sélectionner vous-même la position et les caractéristiques du visage :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Vous pouvez également visualiser le résultat en affichant une bordure via le canevas HTML :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Les traits du visage sont présentés ci-dessous :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Nous pouvons maintenant calculer l’emplacement et les descripteurs de chaque visage dans l’image d’entrée, qui serviront de données de référence.

L'étape suivante consiste à obtenir l'URL de l'image et à l'utiliser faceapi.bufferToImage Créer un élément d’image HTML :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Pour chaque image, localisez le visage et calculez le descripteur :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Ensuite, parcourez les descripteurs de visage de l'image d'entrée et recherchez le descripteur le plus similaire dans les données de référence :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Obtenez la meilleure correspondance pour chaque visage dans l'image d'entrée à l'aide de la métrique euclidienne et affichez le cadre de délimitation et son étiquette dans un canevas HTML :

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Identifiez tous les acteurs de The Big Bang Theory dans le navigateur - face-api.js

Voici l'ensemble du processus de reconnaissance faciale par face-api.js. N’est-ce pas très simple ?Les amis intéressés peuvent l'essayer et vous êtes invités à nous envoyer vos résultats expérimentaux et vos expériences.