Reconnaissance faciale grâce au Machine Learning

Appstud
Appstud
Sep 3, 2019 · 5 min read

Introduction

La reconnaissance faciale consiste à identifier une personne grâce à son visage d’une manière automatique. Elle a beaucoup d’applications dans différents domaines (vidéo surveillance, biométrie, robotique …). Il est commun de confondre Reconnaissance Faciale et Détection Faciale. En effet, la détection faciale consiste simplement à détecter des visages dans une image. En d’autres termes, elle a pour but de donner une région d’intérêt appelé “bounding box” contenant le visage. On vous présente dans la suite 2 approches de reconnaissance faciale autour desquelles nous travaillons.

“Pipeline” d’un algorithme de reconnaissance de visage

Pour concevoir un système de reconnaissance faciale robuste, l’image doit subir une série de traitements avant de passer à l’étape d’identification.

Pipeline d’un algorithme de reconnaissance de visage

Détection de visage

A partir d’une image, la première étape consiste à localiser les visages en faisant appel à des algorithmes de détection de visage.

Plusieurs détecteurs de visage existent. On cite par exemple, le détecteur de “Viola et Jones” assez rapide et donnant une performance moyenne, le détecteur basé sur les descripteurs HOG¹ (Histogram of Oriented Gradient) et le classificateur SVM² (Support Vector Machine) moins rapide mais plus précis. Des détecteurs basés sur du Deep learning existent aussi et sont encore plus précis mais ils demandent un coût de calcul assez élevé.

Pré-traitement

Après la phase de détection, les régions de l’image correspondant aux visages seront utilisées pour une phase de pré-traitement. Cette phase est essentielle pour aboutir à un algorithme précis. Elle consiste à aligner la représentation des visages selon un protocole spécifique afin de faciliter la reconnaissance.

Par exemple, certaines approches d’alignement 2D traitent l’image pour que la position du centre des yeux et de la bouche de la personne soit à des pixels bien définis. Cela facilitera la tâche de reconnaissance car l’algorithme pourra identifier des “patterns” qui différencient les visages.

Alignement 2D d’image

D’autres approches de pré-traitement consistent par exemple à synthétiser le visage vu de face. En effet, l’image d’un visage pourrait être prise suivant différents angles, ce qui rend la tâche de reconnaissance difficile. Il existe alors des approches qui synthétisent une image frontale correspondant à l’image initiale en utilisant des modèles 3D de visage ou d’autres techniques basées sur le Deep learning. Il existe aussi des approches qui essayent de synthétiser une image de la personne avec une expression neutre, pour enlever l’effet des différents expressions faciales sur l’identification.

Alignement 3D afin de synthétiser une image frontale du visage.

Reconnaissance de visage

La dernière étape est la reconnaissance de ce visage. Plusieurs approches existent, certaines essayent de baser leur estimation sur une analyse globale de visage, d’autres méthodes suivent une approche basée sur une analyse locale. Nous allons détailler une approche de chaque catégorie.

Eigen Face

Les 20 premiers vecteurs de la base orthonormée calculée par PCA sur une base de donnée.

L’approche Eigen Face est l’une des approches les plus connues pour la reconnaissance de visage. Elle représente tout d’abord chaque image (niveau de gris) de taille [N,M] comme un vecteur de taille NxM en concaténant tous les lignes de l’image après soustraction de la valeur moyenne. Après cette étape, nous aboutissons à une matrice de taille [T, NxM] où chaque ligne correspond à une image de la base de données comprenant T images.

L’algorithme PCA³ (Principal Component Analysis) sera alors appliqué pour réduire la dimensionnalité de ces vecteurs tout en gardant un maximum d’information. PCA cherche précisément une base orthonormée qui permet de garder le plus possible la variance des données. Une nouvelle image sera alors projeté dans cette base et comparée aux projections des images existantes dans la base de données. Si cette projection est proche d’une projection existante dans la base, on peut dire que la personne est identifiée, si non on pourra dire qu’il s’agit d’une nouvelle personne.

Le désavantage de cette méthode est qu’elle suppose que la variance des données correspond aux différentes identités des personnes ce qui est seulement réalisable si toutes les images de visage sont prises dans les mêmes conditions d’illumination et de pose (vue frontale).

Approche classification avec descripteurs par blocs

L’approche classification avec descripteurs par bloc consiste à diviser l’image en une grille de blocs 8x8 par exemple. Un descripteur sera appliqué sur chaque bloc et l’image sera représentée par la concaténation des différents descripteurs. Le descripteur le plus utilisé est l’histogramme de LBP (Local Binary Pattern). Après l’application de ce processus sur toutes les images de la base de données, on pourra utiliser un algorithme de classification comme SVM (Support Vector Machine), KNN (K Nearest Neighbor), réseau de neurones ou autre pour identifier les visages.

Cette approche est un peu plus robuste face au changement de luminosité que l’approche Eigen Face. Néanmoins, elle est moins efficace que les méthodes basées sur du Deep Learning dans le cas où les images sont prises dans des conditions de poses et de luminosité assez différentes.

Conclusion

On a présenté dans cet article la chaîne de traitement que les algorithmes de reconnaissance faciales suivent. On a aussi présenté rapidement deux algorithmes simples pour classifier les visages. Il faut cependant noter que la robustesse de ces algorithmes dépend beaucoup de la qualité des images présentes dans la base de données. Surtout pour la méthode Eigen Face, où il faut impérativement que toutes les images soient prises dans les mêmes conditions de luminosité. Des méthodes basées sur les réseaux de convolutions existent et sont beaucoup moins sensibles à ces variations mais demandent un coût de calcul beaucoup plus élevé.

Retrouvez le code sur notre Git:

https://github.com/appstud/eigen_face_recognition


Appstud

Written by

Appstud

At Appstud, we design digital experiences for humans. The key success of our products is our team, our methodology and the continuous innovation that drives us.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade