Facial Recognition
Il riconoscimento facciale identifica o verifica le persone confrontando gli embedding dei volti. Come funziona la pipeline, verifica rispetto a identificazione, bias e privacy.
Il riconoscimento facciale è una tecnologia biometrica che identifica o verifica una persona confrontando un'immagine del suo volto con immagini di volti memorizzate. I sistemi moderni usano l'apprendimento profondo per convertire ogni volto in un embedding, un vettore di numeri spesso chiamato impronta facciale, e stabiliscono se due volti appartengono alla stessa persona in base alla somiglianza tra i rispettivi embedding. Questa tecnologia sblocca i telefoni, accelera il passaggio dei passeggeri ai varchi aeroportuali, verifica l'identità dei clienti che aprono conti bancari online ed è anche uno degli usi della visione artificiale più regolamentati, perché un volto può essere acquisito all'insaputa della persona.
Come funziona il riconoscimento facciale#
Un sistema di riconoscimento esegue quattro fasi su ogni immagine:
- Rilevamento: un rilevatore di volti individua ogni volto e restituisce il relativo riquadro e alcuni punti di riferimento facciali.
- Allineamento: il volto viene ruotato, ridimensionato e ritagliato in modo che occhi, naso e bocca si trovino in posizioni fisse, eliminando gran parte delle variazioni dovute alla posa della testa e alla distanza.
- Codifica con una CNN: la rete converte il ritaglio allineato in un embedding di lunghezza fissa.
- Corrispondenza tramite similarità coseno: il nuovo embedding viene confrontato con quelli registrati e una soglia determina se c'è una corrispondenza. Le installazioni su larga scala archiviano le impronte facciali registrate in un database vettoriale per velocizzare la ricerca.
Il rilevamento dei volti è un problema di rilevamento degli oggetti, e un modello YOLO26 di Ultralytics ottimizzato con fine-tuning su un dataset di volti come WIDER FACE può eseguirlo in tempo reale su telecamere edge e passare i riquadri dei volti alle fasi successive. Prima del deep learning, i sistemi si basavano su caratteristiche progettate manualmente, dalle distanze tra i punti di riferimento del volto agli Eigenfaces e ai pattern binari locali; gli embedding appresi li hanno sostituiti perché sono molto più stabili rispetto a illuminazione, espressione ed età. Nel 2015 FaceNet ha addestrato direttamente embedding compatti a 128 dimensioni con una loss triplet, e le loss basate sul margine come ArcFace allontanano ora gli embedding di persone diverse. La fase di corrispondenza risponde a due domande distinte:
La verifica (1:1) stabilisce se un volto appartiene all'identità dichiarata, come quando un telefono verifica il suo proprietario. L'identificazione (1:N) esegue una ricerca in un'intera galleria, come quando un sistema di controllo degli accessi confronta un volto con quelli di tutti i dipendenti registrati. I modelli di OpenCV Zoo eseguono l'intera pipeline in poche righe; questo codice registra i volti presenti in un'immagine, poi identifica i volti in una copia speculare confrontandoli con quella galleria.
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])Stampa [0.87, 0.06] e [0.09, 0.89]: ogni volto speculare ottiene un punteggio molto superiore alla soglia di 0.363 rispetto al proprio embedding registrato e molto inferiore rispetto a quello dell'altra persona.
Riconoscimento facciale e termini correlati#
- Rilevamento dei volti: individua i volti in un'immagine senza stabilire a chi appartengono; è la prima fase del riconoscimento e serve anche per l'autofocus della fotocamera e la sfocatura dei volti.
- Analisi facciale e informatica affettiva: stimano attributi come l'espressione, la posa della testa o l'età, senza stabilire l'identità.
- Re-identificazione di oggetti (Re-ID): abbina le persone tra diverse videocamere in base all'aspetto del corpo intero, per esempio agli abiti; funziona con persone riprese di spalle e a bassa risoluzione, ma solo su intervalli di tempo brevi.
Applicazioni nel mondo reale#
- Sblocco dei dispositivi: i telefoni verificano il proprietario in una frazione di secondo; Face ID di Apple proietta più di 30.000 punti a infrarossi per creare una mappa di profondità che una foto stampata non può imitare.
- Viaggi e controllo delle frontiere: i varchi elettronici automatizzati confrontano una foto dal vivo del viaggiatore con la foto archiviata nel chip del suo passaporto elettronico.
- Verifica dell'identità: durante l'apertura di un conto, banche e servizi online confrontano un selfie con la foto su un documento d'identità rilasciato da un ente governativo e aggiungono controlli di vitalità.
- Organizzazione delle foto: le app fotografiche raggruppano i volti in una raccolta personale, così gli utenti possono trovare tutte le foto di un familiare.
Accuratezza, distorsioni e contraffazioni#
Ogni sistema deve bilanciare due errori: una falsa corrispondenza accetta la persona sbagliata, mentre una mancata corrispondenza rifiuta quella giusta; la soglia di similarità determina il bilanciamento. Il NIST Face Recognition Technology Evaluation (FRTE), già FRVT, valuta gli algoritmi commerciali su milioni di immagini e il suo studio del 2019 su 189 algoritmi di 99 sviluppatori ha rilevato differenze demografiche nei tassi di falsi positivi per la maggior parte di essi, un esempio emblematico di distorsione algoritmica. Il riconoscimento può anche essere ingannato da foto, riproduzioni su schermo e maschere; per questo i sistemi in produzione aggiungono il rilevamento degli attacchi di presentazione, spesso chiamato rilevamento della vitalità, usando sensori di profondità, infrarossi o l'analisi di movimenti impercettibili.
Privacy e normative#
Le impronte facciali sono dati biometrici, quindi le leggi le considerano dati personali altamente sensibili. Ai sensi del GDPR, i dati biometrici utilizzati per identificare una persona rientrano in una categoria particolare che richiede una base giuridica esplicita, e la legge dell'Illinois sulla privacy delle informazioni biometriche impone di ottenere il consenso scritto prima che un'azienda raccolga un'impronta facciale. L'EU AI Act si spinge oltre: dal 2 febbraio 2025 vieta la creazione di database di riconoscimento facciale tramite la raccolta indiscriminata di immagini da Internet o da sistemi CCTV, nonché l'identificazione biometrica remota in tempo reale negli spazi pubblici a fini di contrasto, salvo pochi casi definiti in modo rigoroso.










