Facial Recognition
La reconnaissance faciale identifie ou vérifie des personnes en comparant leurs plongements faciaux. Fonctionnement du pipeline, différence entre vérification et identification, biais et confidentialité.
La reconnaissance faciale est une technologie biométrique qui identifie ou vérifie une personne en comparant une image de son visage à des visages enregistrés. Les systèmes modernes utilisent l’apprentissage profond pour convertir chaque visage en un plongement, un vecteur de nombres souvent appelé empreinte faciale, puis déterminent si deux visages appartiennent à la même personne en comparant la similarité de leurs plongements. Elle permet de déverrouiller les téléphones, d’accélérer le passage des voyageurs aux portiques d’aéroport et de vérifier l’identité des clients qui ouvrent un compte bancaire en ligne. Elle fait aussi partie des utilisations de la vision par ordinateur les plus réglementées, car un visage peut être capturé à l’insu de la personne.
Fonctionnement de la reconnaissance faciale#
Un système de reconnaissance traite chaque image en quatre étapes :
- Détection : un détecteur de visages repère chaque visage et renvoie sa boîte englobante ainsi que quelques points de repère faciaux.
- Alignement : le visage est tourné, mis à l’échelle et recadré pour placer les yeux, le nez et la bouche à des positions fixes, ce qui élimine la majeure partie des variations dues à la pose de la tête et à la distance.
- Encodage avec un CNN : le réseau convertit le recadrage aligné en un plongement de longueur fixe.
- Comparaison par similarité cosinus : le nouveau plongement est comparé aux plongements des personnes inscrites, et un seuil détermine s’il y a correspondance. Les déploiements à grande échelle stockent les empreintes faciales inscrites dans une base de données vectorielle pour effectuer des recherches rapides.
La détection des visages est un problème de détection d’objets, et un modèle YOLO26 d’Ultralytics ajusté finement sur un jeu de données de visages comme WIDER FACE peut l’effectuer en temps réel sur des caméras périphériques et transmettre les boîtes des visages aux étapes suivantes. Avant l’apprentissage profond, les systèmes reposaient sur des caractéristiques conçues à la main, des distances entre les repères faciaux aux Eigenfaces et aux motifs binaires locaux ; les plongements appris les ont remplacées, car ils restent bien plus stables face aux variations d’éclairage, d’expression et d’âge. En 2015, FaceNet a entraîné directement des plongements compacts de 128 dimensions à l’aide d’une perte triplet, et les pertes à marge comme ArcFace éloignent désormais davantage les plongements de personnes différentes. L’étape de mise en correspondance répond à deux questions distinctes :
La vérification (1:1) détermine si un visage correspond à une identité revendiquée, comme lorsqu’un téléphone vérifie l’identité de son propriétaire. L’identification (1:N) recherche dans une galerie entière, comme lorsqu’un système de contrôle d’accès compare un visage à celui de chaque employé inscrit. Les modèles d’OpenCV Zoo exécutent l’ensemble du pipeline en quelques lignes ; ce code inscrit les visages d’une image, puis identifie les visages d’une copie miroir en les comparant à cette galerie.
import urllib.request
import cv2
# Download OpenCV Zoo's face detector (YuNet), face recognizer (SFace), and a test image
zoo = "https://github.com/opencv/opencv_zoo/raw/main/models"
urllib.request.urlretrieve(f"{zoo}/face_detection_yunet/face_detection_yunet_2023mar.onnx", "yunet.onnx")
urllib.request.urlretrieve(f"{zoo}/face_recognition_sface/face_recognition_sface_2021dec.onnx", "sface.onnx")
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
img = cv2.imread("bus.jpg")
detector = cv2.FaceDetectorYN.create("yunet.onnx", "", (img.shape[1], img.shape[0]))
recognizer = cv2.FaceRecognizerSF.create("sface.onnx", "")
# Enroll each detected face as an aligned 128-D embedding
gallery = [recognizer.feature(recognizer.alignCrop(img, face)) for face in detector.detect(img)[1]]
# Identify the faces of a mirrored copy against the gallery (SFace match: cosine >= 0.363)
mirror = cv2.flip(img, 1)
for face in detector.detect(mirror)[1]:
probe = recognizer.feature(recognizer.alignCrop(mirror, face))
print([round(recognizer.match(probe, g, cv2.FaceRecognizerSF_FR_COSINE), 2) for g in gallery])Le code affiche [0.87, 0.06] et [0.09, 0.89] : chaque visage inversé obtient un score bien supérieur au seuil de 0,363 par rapport à son propre plongement inscrit, et bien inférieur à ce seuil par rapport à celui de l’autre personne.
Reconnaissance faciale et termes associés#
- Détection des visages : localise les visages dans une image sans déterminer à qui ils appartiennent ; c’est la première étape de la reconnaissance faciale et elle sert aussi à l’autofocus des appareils photo et au floutage des visages.
- Analyse faciale et informatique affective : estiment des attributs comme l’expression, la pose de la tête ou l’âge sans établir l’identité.
- Réidentification d’objets (Re-ID) : établit des correspondances entre des personnes filmées par différentes caméras à partir de leur apparence générale, comme leurs vêtements. Cette méthode fonctionne de dos et à basse résolution, mais uniquement sur de courtes périodes.
Applications concrètes#
- Déverrouillage des appareils : les téléphones vérifient l’identité de leur propriétaire en une fraction de seconde. Face ID d’Apple projette plus de 30 000 points infrarouges pour créer une carte de profondeur qu’une photo imprimée ne peut pas imiter.
- Voyages et contrôle aux frontières : les portiques électroniques comparent une photo en direct du voyageur à celle enregistrée sur la puce de son passeport électronique.
- Vérification d’identité : les banques et les services en ligne comparent un égoportrait à la photo d’une pièce d’identité officielle lors de l’ouverture d’un compte, avec des vérifications de présence réelle.
- Organisation des photos : les applications photo regroupent les visages dans une bibliothèque personnelle afin que les utilisateurs puissent retrouver toutes les photos d’un membre de leur famille.
Exactitude, biais et usurpation#
Chaque système implique un compromis entre deux erreurs : une fausse correspondance accepte la mauvaise personne et une absence de correspondance erronée rejette la bonne personne. Le seuil de similarité détermine l’équilibre entre les deux. Le NIST Face Recognition Technology Evaluation (FRTE), anciennement FRVT, évalue les algorithmes commerciaux sur des millions d’images. Son étude de 2019 portant sur 189 algorithmes de 99 développeurs a révélé des écarts démographiques dans les taux de faux positifs pour la majorité d’entre eux, un exemple central de biais algorithmique. La reconnaissance peut également être trompée par des photos, des rediffusions à l’écran et des masques. Les systèmes de production ajoutent donc une détection des attaques par présentation, souvent appelée détection de présence réelle, qui utilise des capteurs de profondeur, l’infrarouge ou l’analyse de mouvements subtils.
Confidentialité et réglementation#
Les empreintes faciales sont des données biométriques ; la loi les considère donc comme des données personnelles particulièrement sensibles. En vertu du RGPD, les données biométriques utilisées pour identifier une personne appartiennent à une catégorie spéciale dont le traitement exige une base juridique explicite. La loi de l’Illinois sur la protection des informations biométriques exige le consentement écrit avant qu’une entreprise collecte une empreinte faciale. La législation européenne sur l’IA va plus loin : depuis le 2 février 2025, elle interdit de constituer des bases de données de reconnaissance faciale en récupérant sans ciblage des images sur Internet ou dans les flux de vidéosurveillance, ainsi que l’identification biométrique à distance en temps réel dans les espaces publics à des fins répressives, sauf dans quelques cas strictement définis.










