Un bref guide sur la reconnaissance faciale vidéo de la BBC R & D

Ce sont souvent des tâches que les humains accomplissent sans réfléchir et qui nécessitent certains des traitements les plus complexes en coulisse. Déguster de la nourriture, discuter avec des amis, écouter de la musique et, en fait, reconnaître les gens. Lorsque vous regardez un épisode de Eastenders, vous voyez les différents acteurs dans différents contextes, sous différents angles et sous différents éclairages, mais instantanément, votre cerveau gère ces variations pour savoir qu'il s'agit de Dot Cotton et de Phil Mitchell. Parce que nous ne pensons pas au traitement en question, nous sommes surpris de constater que ces tâches sont beaucoup plus complexes que nous le pensions au départ lorsque nous essayons de les appliquer à l’apprentissage par la machine.

Prenez les images suivantes de Prince Harry et Megan Markle dans la rue. Nous pouvons voir Harry et Megan sous différents angles - avant, côté et arrière - mais nous les reconnaissons facilement à leurs caractéristiques: couleur de la peau, couleur des cheveux, etc. Nous prenons également en compte certains signaux sociaux. La foule les regarde, elles sont bien habillées, elles sont au centre de chaque plan et il y a une continuité évidente de plans provenant de la même scène. Il y a de nombreuses couches d'intuition humaine ici auxquelles nous avons tendance à ne pas penser dès lors que nous détectons des indicateurs culturels aussi bien que physiques.

Nous reconnaissons naturellement Harry et Megan, malgré les angles différents dans ces plans

Alors, comment pouvons-nous apprendre à un ordinateur à apprendre à faire tout cela? Bien que nous ne puissions pas obtenir un algorithme pour penser comme un humain, nous pouvons le faire faire ce que l’apprentissage automatique fait le mieux: détecter des modèles dans de grands ensembles de données étiquetés. Cela implique la collecte d’images, la formation de l’algorithme, le traitement de vidéos et la reconnaissance des personnes qui y figurent. Le résultat final est une liste de personnes reconnues dans une vidéo, ainsi que l'heure et l'emplacement dans les images affichées.

Nous travaillons déjà à la construction de cette technologie à la BBC. Notre système, appelé FaceRec, est en cours de développement par l’équipe Internet de recherche et développement de la BBC chargée de la recherche sur les services Internet et les services futurs (nous allons enregistrer quelques frappes au clavier et les appeler à partir de maintenant). Il a été construit à l'aide d'une combinaison de code interne et de logiciels libres externes, en particulier Seetaface, un moteur de reconnaissance faciale C ++.

FaceRec fonctionne en traitant la vidéo à travers une série d'étapes algorithmiques, chacune résolvant une partie spécifique du problème global. Nous allons vous donner un aperçu de la façon dont tout cela fonctionne.

1. Détecter les coups

Pour que chaque visage soit détecté dans une vidéo, nous devons d’abord diviser la vidéo en ses plans constitutifs (un plan est défini comme une série d’images exécutées pendant une période de temps ininterrompue). Pour ce faire, FaceRec utilise la bibliothèque de traitement multimédia FFmpeg, qui utilise une fonction pour renvoyer les heures de début et de fin de tous les plans d’une vidéo donnée.

2. Détecter les visages

L'étape suivante consiste à vérifier chaque image pour voir si elle contient des visages humains. C'est un problème épineux. Devrions-nous essayer de détecter chaque visage lors d'un match de football? Est-ce qu'un visage sur un t-shirt compte? Faire des photos sur le devant des journaux?

En parcourant chaque prise de vue, FaceRec prend des images de la prise de vue et les transmet à SeetaFace, qui renvoie ensuite les cadres de sélection des emplacements des visages. Le moteur de détection de visage de SeetaFace détecte si un visage «compte» suffisamment pour être inclus dans sa sortie. Veuillez noter que SeetaFace ne dit pas qui, selon lui, sont les personnes détectées, mais simplement qu'elle croit avoir détecté un visage à un endroit donné dans le cadre.

3. Créer des traces de visage

Maintenant que nous avons collecté toutes les images contenant des visages, la tâche suivante consiste à assembler ces visages détectés pour créer une trace de visage. Une trace de visage est un flux continu de cadres de sélection entourant un visage lorsqu'il se déplace dans le cadre de prise de vue.

FaceRec prend chaque cadre englobant le visage et tente de le mapper au prochain cadre englobant logique dans le cadre suivant. Cela n’est pas toujours tout à fait évident, car les visages peuvent être temporairement obscurcis ou les boîtes de sélection peuvent se croiser lorsqu'une personne se déplace derrière une autre.

Les boîtes délimitantes suivent les visages à travers

Sous le capot, ce problème est résolu en utilisant Dlib et la méthode Lucas-Kanade. Cela crée des traces de visage définies par des points de temps, une liste de cadres et les cadres de sélection des faces.

4. Créer des vecteurs de visage pour les pistes

Les algorithmes d’apprentissage automatique fonctionnent souvent en convertissant le matériel d’entrée en vecteurs mathématiques. Ils apprennent ensuite quelles parties de cet «espace vectoriel» appartiennent à des catégories ou à des types d'entrée spécifiques. En termes de visages, ils apprendraient que les vecteurs représentant le visage du prince Harry ont tendance à se trouver dans une zone particulière, tandis que ceux de Megan ont tendance à se trouver dans une section différente. Vous vous attendriez également à ce que les vecteurs du visage du prince William soient plus proches de Harry que de Megan, dans la mesure où ils sont apparentés et partagent des caractéristiques similaires.

Pour créer des vecteurs pour les visages détectés, FaceRec utilise la bibliothèque d’identification de visage de SeetaFace. FaceRec se nourrit dans les photos recadrées des visages détectés dans leurs boîtes englobantes à partir du milieu de la trace du visage. Il reçoit en retour un vecteur à 2024 dimensions qui représente les caractéristiques de ce visage.

5. Reconnaître les visages dans les vecteurs face-à-face

Nous avons maintenant un vecteur de visage pour chaque trace de visage détectée. La prochaine étape consiste à transformer ces vecteurs en noms réels des visages reconnus, ainsi qu’à marquer les visages que nous ne reconnaissons pas (et donc ne pouvons pas étiqueter).

La première question est la suivante: qui reconnaissons-nous? Nous ne pourrons sûrement pas construire un modèle qui reconnaisse tous ceux qui ont jamais vécu - et nous ne le voudrions pas non plus. Alors, qui jugeons-nous assez important ce système de reconnaissance de visage?

De manière réaliste, cela doit être motivé par les journalistes de BBC News et les personnes sur lesquelles ils parlent le plus souvent. Nous devons également savoir que des inconnus font l'actualité tous les jours et que, quand ils le font, nous n'avons peut-être aucune photo d'eux auparavant. Compte tenu de ces limites, l'équipe chargée des données s'est principalement concentrée sur les célébrités, les dirigeants internationaux, les politiciens britanniques au Parlement et à la Chambre des lords lors de la formation de FaceRec.

Pour reconnaître ces personnes, elles devaient rassembler des données de formation sur chaque personne, c'est-à-dire de nombreuses photos étiquetées de cette personne et ne contenant que cette personne. L'équipe de données a collecté des milliers de photos, puis construit son propre système frontal permettant de visualiser et d'étiqueter facilement des photos individuelles. L’apprentissage automatique ne tient pas à la vérité: la collecte de données étiquetées de qualité est souvent l’élément le plus coûteux, le plus laborieux et le plus important pour la mise en place d’un système d’IA efficace.

Après avoir rassemblé les photos, l'équipe de données les a ensuite introduites dans un classificateur d'apprentissage automatique appelé une machine à vecteurs de support pour créer des modèles formés. Lorsqu’ils alimentent un vecteur visage de SeetaFace, ces modèles prédisent le nom de la personne dans l’image originale du visage ou indiquent s’ils n’ont pas reconnu le visage du tout.

IRFS a créé deux modèles:

  1. Modèle d'archive: Personnages célèbres à partir du 20ème siècle sélectionnés par des personnes de BBC Archive. Ce modèle contenait environ 1 000 personnes.
  2. Modèle d'actualité: toujours en cours de développement, il sera étendu à plus de 2 000 membres du Parlement britannique et d'assemblées régionales, de la Chambre des lords et de dirigeants mondiaux. Les images de formation proviennent de BBC News, Factual et Drama.

Ces modèles formés sont ensuite utilisés pour prédire quelles personnes se trouvent sur les traces du visage dans les vidéos.

6. Pistes de face de cluster

Maintenant que toutes les traces du visage ont été étiquetées, la dernière étape consiste à collecter toutes les traces de la même personne.

Pour ce faire, nous mettons tous les vecteurs de visages extraits d’une vidéo dans un seul espace vectoriel, que nous appellerons l’espace de visage pour le plaisir. Pour visualiser l’espace, nous pouvons utiliser un outil appelé Tensorboard, composant de la bibliothèque d’apprentissage machine Tensorflow.

En regardant cet espace-visage, nous espérons que les vecteurs de la même personne sont suffisamment proches les uns des autres et suffisamment éloignés des autres pour que nous puissions les regrouper automatiquement. Ceci est connu en apprentissage machine comme un problème de clustering.

Nous pouvons voir les vecteurs de suivi du visage projetés dans cet espace pour la vidéo de Harry et Megan ci-dessous. Et nous voyons que la plupart des morceaux de Megan sont regroupés, ce qui les rend faciles à regrouper. C’est une façon pour nous de savoir que les vecteurs de visage créés fonctionnent bien.

Visualiser des visages avec TensorBoard

Ceux qui sont familiers avec le clustering verront la difficulté de notre problème de clustering de visage. Pour chaque vidéo, il y aura un nombre variable de grappes de tailles variables - de nombreux vecteurs apparaissant une fois et n'appartenant à aucune grappe.

Au lieu de s'effondrer dans un trou noir en essayant de résoudre parfaitement ce problème, l'équipe des données a décidé de fonctionner avec quelques heuristiques. FaceRec divise le problème en deux catégories distinctes: les visages des personnes qu'il reconnaît et les visages des personnes qu'il ne reconnaît pas. Pour les visages reconnus, il regroupe simplement toutes les pistes de visage ayant le même label prédit (nom). Pour les visages non reconnus, il utilise une technique appelée regroupement hiérarchique sur les vecteurs de visage pour les regrouper, sans leur attribuer d'étiquettes.

7. Afficher les informations

La dernière étape pour FaceRec consiste à transmettre toutes les informations recueillies au cours des différentes étapes. Cela se présente sous la forme d'un fichier JSON qui contient:

Une liste de pistes dans la vidéo. Pour chaque piste il a:

  • Personne prévue pour cette piste
  • Confiance de la prédiction
  • Track UUID
  • Visage vecteur pour cette piste
  • Liste des cadres de cette piste

Dans la liste des cadres, les informations sur chaque cadre comprennent:

  • Vecteur de visage pour cette image si elle a été détectée
  • Coordonnées du cadre de sélection pour le visage
  • Temps dans la vidéo où l'image se produit

Que pouvons-nous faire avec ces données? Vous pouvez consulter notre prochain article de blog pour voir nos idées.

Emballer

C'est à peu près tout. Nous espérons que nous vous avons aidé à comprendre les nombreuses parties d’un système de reconnaissance vidéo des visages. Nous vous avons peut-être aussi rendu plus conscients des tâches lourdes et des ambiguïtés que votre cerveau manipule des centaines de fois par jour lors de la reconnaissance de vos amis et de vos proches.

Après avoir compris le fonctionnement interne du système FaceRec, la tâche de News Labs consistait à déterminer dans quelle mesure cette technologie pouvait apporter une valeur ajoutée à la BBC. Comment montrer les capacités de FaceRec avec une démonstration intuitive? À quels systèmes de production pourrions-nous voir FaceRec s’intégrer? Quels problèmes de flux de travail pourraient-ils résoudre? Et surtout, que pensent les gens de l’utilisation de la reconnaissance faciale? Nous parlons des défis posés par le déploiement d'une nouvelle technologie au sein d'une grande organisation et des questions auxquelles nous avons été confrontés lors du développement d'un prototype de reconnaissance faciale dans «Reconnaissance faciale - Quelle utilisation en est-il pour les salles de rédaction?».