ABONAMENTE VIDEO REDACȚIA
RO
EN
×
▼ LISTĂ EDIȚII ▼
Numărul 95
Abonament PDF

Deep Learning pentru recunoașterea facială

Iulia Botnari
Software Engineer @ Wipro Limited



Bogdan Druțu
Technical Lead @ Wipro Limited
PROGRAMARE

Recunoașterea facială este din ce în ce mai folosită în zilele noastre: aplicații de securitate, control acces, supraveghere, carduri inteligente și altele. De-a lungul anilor au fost întreprinse multe cercetări în acest domeniu. În ultimul deceniu, evoluția arhitecturilor și algoritmilor de deep learning a făcut posibilă creșterea performanțelor de recunoaștere facială de către calculator, depășind în anumite scenarii capabilitățile umane.

În articolul de față, ne propunem să descriem cele mai importante arhitecturi de deep learning pentru recunoașterea facială. În prima parte, definim sistemele biometrice, procesul de recunoaștere facială și tipurile de sisteme de recunoaștere facială. În a doua parte, descriem următoarele arhitecturi: DeepFace, FaceNet, seriile VGGFace, SphereFace și ArcFace. Și, în ultima parte, trecem în revistă câteva dintre dificultățile tehnice ale metodelor prezentate.

Procesul de recunoaștere facială

Să începem prin a defini ce este un sistem biometric:

"Un sistem biometric este un sistem tehnologic care folosește informații despre o persoană (sau un alt organism biologic) pentru a identifica acea persoană. Pentru a funcționa eficient, sistemele biometrice utilizează anumite informații ale trăsăturilor biologice unice. Un sistem biometric va implica rularea datelor de către algoritmi pentru a obține o identificare pozitivă a unui utilizator sau a unei alte persoane."

- HIMSS Dictionary of Health Information and Technology Terms, Acronyms and Organizations" [1]

Multe sisteme biometrice folosesc drept identificatori amprenta, ADN-ul, irisul, mâna, vocea, fața etc. Acești identificatori pot fi folosiți individual (ex: doar fața) sau în combinație (ex: amprenta și fața) pentru a face sistemele mai robuste.

Recunoașterea facială, una dintre cele mai folosite tehnologii biometrice, este procesul de identificare al unei persoane sau al unui grup de oameni dintr-o imagine sau videoclip folosind fața ca identificator biometric.

Cartea "Handbook of Face Recognition" [2] definește două moduri de operare pentru un sistem de recunoaștere facială: verificarea feței și identificarea feței.

"Poate funcționa într-unul sau în ambele moduri: (1) verificarea facială (sau autentificare) și (2) identificarea facială (sau recunoaștere). Verificarea implică compararea imaginii faciale prezentate cu imaginea șablon din baza de date a persoanei a cărei identitate este reclamată (comparare unu la unu). Identificarea implică compararea imaginii faciale prezentate cu toate șabloanele din baza de date, încercând să identifice persoana din imagine (comparare unu la mai multe)."

În general, sistemele de recunoaștere facială sunt implementate printr-o secvență de pași. În figura de mai jos se poate vizualiza o implementare standard.

Fig.1. Implementare standard de recunoaștere a feței. [2]

Primul modul al unui sistem de recunoaștere facială este modulul de detectare a feței - "Face Detection". Rolul acestui modul este de a detecta și a extrage fața unei persoane dintr-o imagine. Următorul modul este modulul de aliniere al feței - "Face Alignment". Acesta identifică structura geometrică a fețelor umane și aplică diferite tehnici de procesare ale imaginilor pentru a rezolva problemele generate de variația luminii sau a contrastului redus. Imaginea rezultată este folosită ca intrare pentru modulul de "Feature extraction". Rolul acestuia este de a extrage informații utile care pot fi folosite pentru a face distincție între persoane. În ultimul modul, "Face Matching", se face o comparație între caracteristicile extrase din imaginea dată ca intrare sistemului și caracteristicile salvate în baza de date.

Arhitecturi deep learning pentru recunoașterea facială

În ultimele trei decenii, au fost testate diferite tehnici de recunoaștere facială, tehnici care au avut mai mult sau mai puțin succes. Articolul "Deep Face Recognition: A survey" [3] oferă o trecere în revistă a celor mai importante tehnici:

"Abordările holistice au dominat comunitatea de recunoaștere facială în anii '90. La începutul anilor 2000, abordările handcrafted local descriptors au devenit populare, iar abordarea modulară a învățării caracteristicilor a fost introdusă la sfârșitul anilor 2000. În 2014, DeepFace [195] și DeepID [187] au obținut performanțe excelente, iar cercetarea s-a îndreptat către abordările bazate pe deep learning. " [3]

Dar ce se înțelege prin deep learning?

Deep learning este un subdomeniu al machine learning, bazat pe rețele neuronale artificiale. Aceste rețele neuronale artificiale sunt sisteme de calcul care imită modul în care funcționează creierul uman. În acest fel, sarcina de îndeplinit este "descoperită" de rețea, nu este scrisă cu reguli specifice de către programator. Putem spune că rețeaua este capabilă să "învețe" dintr-un set de date.

O mulțime de materiale au fost scrise despre acest subiect. Pentru o înțelegere mai aprofundată, va recomandăm următoarea carte "Deep Learning (Adaptive Computation and Machine Learning series)" de Ian Goodfellow, Yoshua Bengio, Aaron Courville. [4]

În ultimul deceniu, multe implementări ale sistemelor de recunoaștere facială utilizând deep learning au arătat performanțe uimitoare, care, în unele cazuri, au depășit performanțele umane.

Cele mai populare arhitecturi de recunoaștere facială utilizând deep learning sunt prezentate în figura de mai jos:

Fig. 2. Evoluția arhitecturilor de recunoaștere facială utilizând deep learning.

În continuare, vom face o scurtă descriere a acestor arhitecturi.

DeepFace este un model de recunoaștere facială creat de un grup de cercetători de la Facebook Research AI și Universitatea Tel Aviv. Ei au publicat inovațiile aduse și rezultatele obținute în lucrarea intitulată "DeepFace: Closing the Gap to Human Level Performance in Verification Face" [5].

Fig. 3. Arhitectura DeepFace. [5]

Arhitectura este alcătuită dintr-un strat de convoluție cu 32 filtre de 11x11x3, urmat de un strat pooling, un al doilea strat de convoluție cu 16 filtre de 9x9x32, urmat de 3 straturi locally connected și 2 straturi fully connected.

DeepFace a fost antrenat folosind un set de date de la Facebook - setul de date "Social Face Classification", care include 4,4 milioane de fețe etichetate. Autorii au evaluat modelul pe setul de date "Labeled Faces in the Wild", obținând o acuratețe de 97,35%, foarte aproape de performanța umană: 97,53%.

FaceNet este un model de recunoaștere facială, descris de Florian Schroff și colaboratorii de la Google în lucrarea intitulată "FaceNet: A Unified Embedding for Face Recognition and Clustering". [6]

Structura modelului FaceNet este prezentată în figura 4:

Fig. 4. Structura modelului FaceNet. [6]

Pentru procesul de antrenare au fost utilizate două tipuri de arhitecturi deep convolutional : arhitectura Zeiler & Fergus și modele de tip inception GoogLeNet.

Modelul FaceNet antrenează rețeaua CNN să "învețe" un spațiu vectorial de caracteristici din imaginile faciale, spațiu cunoscut sub denumirea de "embedding", folosind funcția de cost triplet loss (inovație adusă de către autorii modelului).

"Metoda noastră se bazează pe învățarea unei mapări (Euclidian embedding) pentru fiecare imagine de către o rețea deep convoluțional. Rețeaua este antrenată în așa fel încât distanțele euclidiene (L2 squares) din spațiul embedding să corespundă similarităților dintre fețe: fețe ale aceleiași persoane vor fi mapate la o distanță mai mică una față de alta, pe când fețe ale unor persoane diferite vor avea o distanță mai mare ."

- "FaceNet: A Unified Embedding for Face Recognition and Clustering". [6]

Modelul a fost evaluat pe setul de date "Labeled Faces în the Wild (LFW)", obținând o acuratețe record de 99,63%. Pe setul de date YouTube Faces (YTF) se obține o acuratețe de 95,12%.

Pentru a putea antrena o rețea de deep learning cu rezultate foarte bune este nevoie de un set de date suficient de mare. Până în 2015, doar marile companii ( Facebook, Google) dețineau metodologia necesară și posibilitățile financiare de a dezvolta astfel de seturi .

Deoarece aceste seturi aparțineau companiilor private, iar mediile academice nu aveau acces la ele pentru a-și continua cercetarea, VGG (Visual Geometry Group) a publicat o procedură formală ce permite dezvoltarea unui set de date suficient de mare pentru a putea obține rezultate comparabile cu cele ale companiilor private. Metodologia și setul de date sunt disponibile public [7]. Pentru a demonstra eficacitatea setului de date, au testat modelul utilizând arhitectura de VGGNet prezentată în figura de mai jos:

Fig. 5. VGGNet architecture. [8]

Ca și în cazul celorlalte modele prezentate, evaluarea modelului a fost efectuată pe setul de date LFW obținând o precizie de 98,95% (rezultat comparabil cu FaceNet) și pe YTF cu o precizie de 97,3%.

Doi ani mai târziu, VGG a dezvoltat un alt set de date pentru antrenarea și evaluarea unor modele mai bune - VGGFace2.

"Setul de date a fost colectat având în vedere trei obiective: (i) să aibă atât un număr mare de identități diferite, cât și un număr mare de imagini pentru fiecare identitate; (ii) să acopere o gamă largă în ceea ce privește poziția feței, vârsta sau etnia unei persoane; și (iii) pentru a minimiza efectele produse de etichetarea greșită a identităților.[...] Pentru a evalua performanța recunoașterii faciale folosind noul set de date VGGFace2, s-a antrenat modelul cu ResNet-50 (cu sau fără blocuri Squeeze and Excitation) pe 3 seturi: VGGFace2, pe MS-Celeb-1M și pe uniunea lor, și arătăm că antrenarea pe VGGFace2 conduce la performanțe de recunoaștere îmbunătățite în ceea privește poziția feței și vârsta. În cele din urmă, folosind modelele antrenate pe aceste seturi de date, demonstrăm performanțe de ultimă generație pe seturile de date IJB, depășind performanțele anterioare cu o marjă mare. "

- "VGGFace2: A dataset for recognising faces across pose and age" [9]

Anii 2017 și 2018 aduc noi îmbunătățiri pentru funcția de pierdere (loss function). Funcția de pierdere are rolul de a minimiza eroarea în timpul antrenării rețelei de deep learning.

Modelele SphereFace și ArcFace propun noi funcții de pierdere: angular softmax și additive angular margin . Cele două funcții permit rețelelor de deep learning să învețe caracteristici cât mai discriminatorii (comparativ cu alte funcții de pierdere - triplet loss, softmax loss, intra-loss).

Pentru aprofundarea subiectului, celor cu cunoștințe solide de matematică, le recomandăm să studieze lucrările celor două modele: "SphereFace: Deep Hypersphere Embedding for Face Recognition" [10] și "ArcFace: Additive Angular Margin Loss for Deep Face Recognition". [11]

Tabelul din Figura 6 oferă o privire de ansamblu (funcție de pierdere, arhitectură, set de date, acuratețe) asupra metodelor de recunoaștere facială prin deep learning.

Dificultăți tehnice

Deși în ultima perioadă recunoașterea facială a fost îmbunătățită datorită metodelor deep learning și a progreselor tehnologice, există încă dificultăți tehnice de depășit.

Securitate

Ca orice alt sistem informațional, sistemele de recunoaștere facială pot fi atacate. Unele dintre cele mai utilizate metode de atac sunt: ​​atac de tip prezentare (presentation attack), atac de tip adversar (adversarial attack), atac de tip șablon (template attack).

Atacul de tip prezentare constă în inducerea în eroare a sistemului cu un dispozitiv electronic de afișare sau cu o poză cu imaginea unei persoane.

Un atac de tip adversar constă în mici modificări aplicate imaginii de intrare astfel încât sistemul de recunoaștere facială să fie indus în eroare și să clasifice incorect imaginea.

Atacul de tip șablon constă în reconstruirea imaginii faciale originale dintr-un șablon facial sustras (șablon generat de rețeaua de deep learning) și folosirea imaginii reconstruite pentru a accesa sistemul.

Fig. 6. Acuratețea diferitelor metode de recunoaștere facială evaluate pe setul de date LFW [3]

Variabilitate redusă a aspectului facial

Există diverse situații în care pentru un sistem de identificare facială este dificil să identifice persoana. Unele dintre cele mai dificile situații sunt cele de variabilitate redusă a aspectului facial: gemeni identici, o persoană înainte și după operație, aceeași persoană dar de vârstă diferită, asemănări între mamă - fiică și așa mai departe.

Din cauza acestor mici variații, sistemele de identificare facială întâmpină greutăți în a extrage caracteristicile necesare pentru efectuarea unei identificări valide.

Soluțiile posibile sunt descrise în "Deep Face Recognition: A Survey".[3]

"O soluție fiabilă este utilizarea mai multor surse de date biometrice[168]. Aceste surse de date pot corespunde diferitelor trăsături biometrice (de exemplu, față + mână [169]), senzori (de exemplu, camere foto 2D + 3D), tehnici de extragere și comparare a caracteristicilor, sau instanțe (de exemplu: o secvență de imagini cu diferite poziții ale feței." [3]

Probleme de confidențialitate

Pentru o funcționare eficientă, sistemele de identificare facială utilizează seturi largi cu imagini ale fețelor utilizatorilor.

În acest context, cel puțin două probleme apar în ceea ce privește confidențialitatea utilizatorilor:

Pentru a proteja confidențialitatea utilizatorilor se pot implementa diferite soluții:

Aceste rețele sunt realizate cu scopul de a face imposibilă identificarea genului unei persoane în timp ce taskul de identificare nu este afectat.

"Funcția de pierdere utilizată pentru antrenarea acestei rețele are trei scopuri: unul să asigure că imaginea perturbată este o imagine realistă; altul să asigure că genul persoanei nu poate fi identificat; și al treilea să asigure că performanța de recunoaștere nu este influențată de perturbarea imaginii." [13]

Referințe

[1] "HIMSS Dictionary of Health Information and Technology Terms, Acronyms and Organizations", editia a 5-a, de HIMSS

[2] "Handbook of Face Recognition", First Edition, 2005, by Stan Z. Li, Anil K. Jain

[3] "Deep Face Recognition: A survey", 2019, Mei Wang, Weihong Deng

[4] "Deep Learning (Adaptive Computation and Machine Learning series)" by Ian Goodfellow, Yoshua Bengio, Aaron Courville

[5] "DeepFace: Closing the Gap to Human-Level Performance in Face Verification" by Yaniv Taigman et al.

[6] "FaceNet: A Unified Embedding for Face Recognition and Clustering" by Florian Schroff, et al.

[7] "Deep Face Recognition" by Omar M. Parkhi et al.

[8] "Convolutional Neural Network Layers and Architectures" by Timea Bezdan and Nebojsa Bacanin

[9] "VGGFace2: A dataset for recognising faces across pose and age" by Qiong Cao et al.

[10] "SphereFace: Deep Hypersphere Embedding for Face Recognition" by Weiyang Liu et al.

[11] "ArcFace: Additive Angular Margin Loss for Deep Face Recognition" by Jiankang Deng et al.

[12] "Privacy-Preserving Face Recognition" by Zekeriya Erkin et al.

[13] "Semi-Adversarial Networks: Convolutional Autoencoders for Imparting Privacy to Face Images" by Vahid Mirjalili et al.

LANSAREA NUMĂRULUI 101

Prezentări articole și Panel:
Democratizarea machine learning în Cloud

Vineri, 27 Noiembrie, ora 18:00

Înregistrează-te

Facebook Meetup Live on StreamEvent.ro

VIDEO: NUMĂRULUI 100

Sponsori

  • comply advantage
  • ntt data
  • Betfair
  • Accenture
  • Siemens
  • Bosch
  • FlowTraders
  • MHP
  • Connatix
  • Cognizant Softvision
  • BoatyardX
  • Colors in projects