Si vous avez les nouveaux modèles Hey Hey b, dans cette article je voudrais découvrir avec vous le système de verouillage / déverouillage par reconnaissance faciale d’Apple aujourd’hui j’aimerai vous parlez un peu de la technologie derrière FaceID. Avant de commencer, je dois signaler que je n’ai pas vu d’article d’Apple qui explique clairement comment ils ont crée FaceID.
Donc ce que je dis ici n’est rien d’autre qu’une technique parmi tant d’autre possible. Mais après plusieurs que j’ai fais je suis quand même assez convaincu que c’est la technique que FaceID utilise pour nous reconnaître.
Bon allez top c’est parti !
Sur le site d’Apple voici comment ils décrivent la technologie FaceID (voir photos).
Je trouve que cette description n’est pas vraiment très clair même si elle nous donne quand même des pistes de réflexion. Après c’est aussi du Apple, ils ne sont pas très connu pour l’ouverture !
Bon ce qui se passe c’est que à chaque fois que vous regardez votre iPhone X (ou plus récent), le système de caméra TrueDepth détectera votre visage avec un illuminateur, même dans le noir. Une caméra infrarouge prendra alors une image
et un projecteur de points projettera plus de 30 000 points infrarouges invisibles. Ce système utilise l’image infrarouge et les points infrarouges et les donne en entrée à un réseau de neurones pour créer un modèle mathématique de votre visage.
Mais tout ça vous le savez déjà très bien vu que Apple lui même l’explique dans son site. Mais la vrai question est comment Apple utilise-t-il un réseau de neurones pour nous reconnaître ? Après tout quand il fabriquait le téléphone il ne savait pas à l’avance qui va l’utiliser
et vous avez du remarquer que quand vous configurez votre FaceID pour la première fois le processus est très rapide donc il ne peuvent pas entraîner un modèle deep learning pendant cet instant là. Ce serait beaucoup plus lent et peut être même que votre iPhone n’a pas les capacités de le faire. Bon pour comprendre ce qui se passe il faut d’abord s’avoir qu’Apple FaceID fais de la reconnaissance faciale et non de la détection faciale. De toute façon la détection faciale se fait facilement sans même le deep learning avec des algorithmes simples.
Je reviendrai sur ce sujet dans un autre thread avec l’algorithme de Viola Jones. Qu’est-ce que la reconnaissance faciale ? C’est un ensemble de technique biométrique capable d’identifier de manière unique une personne en comparant et en analysant des motifs basés sur les contours du visage de la personne. Le problème c’est qu’avec la reconnaissance faciale on ne peut pas simplement entraîner un classificateur d’image. Pour entraîner un classificateur, la couche de sortie du réseau devrait normalement avoir une distribution de probabilité (softmax) que l’image en entrée soit tel ou tel individu. Donc cela suppose que Apple connaisse à l’avance toutes les personnes qui sont susceptible d’utiliser FaceID ce qui est juste impossible.
Donc non est sure que là il ne s’agit pas d’un algorithme de classification sinon toute personne pourrait ouvrir votre iPhone au bout de quelques essais car un classificateur donne toujours une classe à une donnée et c’est dangereux si il ne connait pas la donnée à l’avance.
Alors si ce n’est pas un classificateur, qu’est-ce que c’est ? Si vous demandez à un vigile de ne laisser personne d’autre que vous entrer, pour faire le job est-ce que le vigile à forcément besoin de reconnaître les gens ? Non, il a juste besoin de vous reconnaître.
C’est exactement ce que Apple FaceID fait. Quand il vous refuse l’accès ce n’est pas parce que vous êtes un individu X mais c’est parce que vous n’êtes pas un individu X. Donc dans leurs classificateur au lieu de mettre un softmax à la dernière couche il vont mettre une fonction qui permet de renvoyer un vecteur de valeurs numériques qui représente des caractéristiques du visage de la personne qui est en face de l’appareille. Et pour ça ils peuvent par exemple utiliser une fonction qu’on appelle triplet loss (voir photo) comme fonction d’activation.
Maintenant qu’ils ont leurs réseaux de triplet, il faut l’entraîner avant de le déployer dans les iPhone. Mais comment entraîne-t-on un réseau de triplet ? Le triplet dans réseau de triplet signifie que pour entraîner le réseaux il faut à chaque fois faire entrer un triplet d’image. Deux images similaires (image ancre et echantillon positif) et 1 image différente (echantillon negatif). Ensuite il faut choisir les dimension de l’espace dans lequel on travaille (très souvent on a 256 dimensions) faut noter que plus on a de dimensions plus notre algorithme est précis mais aussi moins il est facile à entraîner. Ensuite il faut trouver un jeu de données assez variés (individus différents, ethnies différentes, éclairage image, …) et conséquent pour que l’algorithme puisse bien extraire les différentes caractéristique d’une personne.
Et à chaque fois l’algorithme devra essayer de placer le plus proche possible l’ancre et l’échantillon positif et le plus loin possible l’échantillon négatif dans son espace suivant les dimensions. A la fin nous obtenons un système de clusters un peu comme celui sur cette gif.
Et on dira que l’algorithme à convergé et maintenant Apple peut le déployer dans leurs iPhones. Quand vous configurez FaceID, il vous demande de bouger votre tete selon differentes positions pendant ces instants en réalités FaceID est entrain de vous trouver une place dans son espace de dimensions (clusters). Quand il termine, si vous revenez pour ouvrir votre iPhone, il va juste prendre votre Photo et essayer de voir dans quel cluster vous mettre. Si vous rentrez de le cluster de celui qui a configuré le FaceID et bien l’accès vous est garanti sinon l’accès vous est refusé.
Maintenant on peut se demander à quel point cet algorithmes est précis. Et bien la précision de cet algorithme dépend principalement de 3 facteurs.
- La précision des capteurs de l’iPhone
- Le nombre de dimensions choisi par Apple pour son réseau de neurones.
- La taille et la variétés du jeu de données d’entrainement. Donc attention FaceID n’est pas inviolable mais la probabilité que cela arrive est très très très faible.
Bon voilà j’espère que j’ai pu éclaircir quelques trucs sur le principe de fonctionnement de FaceID. Merci beaucoup et très bon weekend.