Serhii Maksymenko,
Data Science Solution Architect
Tehnologia de recunoaștere a feței apare astăzi într-o lumină diferită. Cazurile de utilizare includ aplicații ample, de la detectarea infracțiunilor la identificarea bolilor genetice.
În timp ce guvernele din întreaga lume au investit în sisteme de recunoaștere facială, unele orașe din SUA, cum ar fi Oakland, Somerville și Portland, au interzis-o din cauza preocupărilor legate de drepturile civile și de confidențialitate.
Ce este – o bombă cu ceas sau o descoperire tehnologică? Acest articol deschide ceea ce este recunoașterea facială din punct de vedere tehnologic și modul în care învățarea profundă îi sporește capacitățile. Numai realizând cum funcționează tehnologia de recunoaștere a feței din interior, este posibil să înțelegem de ce este capabilă.
Updated 06/09/2020: Detectarea și recunoașterea fețelor mascate
Cum învățarea profundă poate moderniza software-ul de recunoaștere a fețelor
Descărcați PDF
Cum funcționează recunoașterea facială?
Agoritmul computerizat al software-ului de recunoaștere facială este un pic ca recunoașterea vizuală umană. Dar dacă oamenii stochează datele vizuale într-un creier și își amintesc automat datele vizuale odată ce au nevoie, computerele ar trebui să solicite date dintr-o bază de date și să le potrivească pentru a identifica o față umană.
În câteva cuvinte, un sistem computerizat echipat cu o cameră, detectează și identifică o față umană, extrage caracteristicile faciale, cum ar fi distanța dintre ochi, o lungime a unui nas, o formă a frunții și a pomeților. Apoi, sistemul recunoaște fața și o potrivește cu imaginile stocate într-o bază de date.
Cu toate acestea, o tehnologie tradițională de recunoaștere a feței nu este încă perfectă în totalitate. Ea are atât puncte tari, cât și puncte slabe:
Puncte tari
Identificare biometrică fără contact Până la o secundă de procesare a datelor Compatibilitate cu majoritatea camerelor foto Facilitatea de integrare |
Puncte slabe
Tineriile și prejudecata rasială Probleme legate de confidențialitatea datelor Atacurile de prezentare (PA) Precizia scăzută în condiții de iluminare slabă |
Realizarea punctelor slabe ale sistemelor de recunoaștere a fețelor, cercetătorii de date au mers mai departe. Prin aplicarea tehnicilor tradiționale de viziune pe calculator și a algoritmilor de învățare profundă, aceștia au perfecționat sistemul de recunoaștere a fețelor pentru a preveni atacurile și a spori precizia. Acesta este modul în care funcționează o tehnologie anti-falsificare a fețelor.
Cum îmbunătățește Deep Learning software-ul de recunoaștere a fețelor
Deep Learning este una dintre cele mai noi modalități de îmbunătățire a tehnologiei de recunoaștere a fețelor. Ideea este de a extrage încorporări de fețe din imagini cu fețe. Astfel de încorporări faciale vor fi unice pentru diferite fețe. Iar antrenarea unei rețele neuronale profunde este cea mai optimă modalitate de a îndeplini această sarcină.
În funcție de o sarcină și de termene, există două metode comune de utilizare a învățării profunde pentru sistemele de recunoaștere a fețelor:
Utilizarea modelelor preinstruite, cum ar fi dlib, DeepFace, FaceNet și altele. Această metodă necesită mai puțin timp și efort, deoarece modelele preinstruite au deja un set de algoritmi în scopul recunoașterii fețelor. De asemenea, putem regla fin modelele pre-antrenate pentru a evita prejudecățile și a permite sistemului de recunoaștere a fețelor să funcționeze corect.
Dezvoltați o rețea neuronală de la zero. Această metodă este potrivită pentru sistemele complexe de recunoaștere a fețelor care au o funcționalitate multifuncțională. Ea necesită mai mult timp și efort și necesită milioane de imagini în setul de date de instruire, spre deosebire de un model preinstruit care necesită doar mii de imagini în cazul învățării prin transfer.
Dar dacă sistemul de recunoaștere facială include caracteristici unice, aceasta poate fi o modalitate optimă pe termen lung. Punctele cheie la care trebuie să se acorde atenție sunt:
- Selectarea corectă a arhitecturii CNN și a funcției de pierdere
- Optimizarea timpului de interferență
- Puterea unui hardware
Se recomandă utilizarea rețelelor neuronale convoluționale (CNN) atunci când se dezvoltă o arhitectură de rețea, deoarece acestea s-au dovedit a fi eficiente în sarcinile de recunoaștere și clasificare a imaginilor. Pentru a obține rezultatele așteptate, este mai bine să folosiți ca bază o arhitectură de rețea neuronală general acceptată, de exemplu, ResNet sau EfficientNet.
Când antrenăm o rețea neuronală în scopul dezvoltării unui software de recunoaștere facială, ar trebui să minimizăm erorile în majoritatea cazurilor. Aici este crucial să luăm în considerare funcțiile de pierdere utilizate pentru calcularea erorii dintre ieșirea reală și cea prezisă. Cele mai frecvent utilizate funcții în sistemele de recunoaștere facială sunt funcția de pierdere triplet și AM-Softmax.
- Funcția de pierdere triplet presupune existența a trei imagini a două persoane diferite. Există două imagini – ancoră și pozitivă – pentru o persoană, iar cea de-a treia – negativă – pentru o altă persoană. Parametrii rețelei sunt învățați astfel încât să apropie aceleași persoane în spațiul caracteristic și să separe persoanele diferite.
- Funcția AM-Softmax este una dintre cele mai recente modificări ale funcției softmax standard, care utilizează o regularizare specială bazată pe o marjă aditivă. Aceasta permite obținerea unei mai bune separabilități a claselor și, prin urmare, îmbunătățește precizia sistemului de recunoaștere a fețelor.
Există, de asemenea, mai multe abordări pentru a îmbunătăți o rețea neuronală. În sistemele de recunoaștere facială, cele mai interesante sunt distilarea cunoștințelor, învățarea prin transfer, cuantificarea și convoluțiile separabile în profunzime.
- Distilarea cunoștințelor implică două rețele de dimensiuni diferite atunci când o rețea mare își învață propria variantă mai mică. Valoarea cheie este că, după antrenare, rețeaua mai mică funcționează mai repede decât cea mare, dând același rezultat.
- Abordarea învățării prin transfer permite îmbunătățirea preciziei prin antrenarea întregii rețele sau doar a anumitor straturi pe un set de date specific. De exemplu, dacă sistemul de recunoaștere a fețelor are probleme legate de prejudecata rasială, putem lua un anumit set de imagini, să spunem, poze cu chinezi, și putem antrena rețeaua astfel încât să atingă o precizie mai mare.
- Abordarea prin cuantificare îmbunătățește o rețea neuronală pentru a atinge o viteză de procesare mai mare. Prin aproximarea unei rețele neuronale care utilizează numere în virgulă mobilă cu o rețea neuronală de numere cu lățime mică de biți, putem reduce dimensiunea memoriei și numărul de calcule.
- Convoluțiile separabile în profunzime sunt o clasă de straturi care permit construirea unui CNN cu un set de parametri mult mai mic în comparație cu CNN-urile standard. Deși are un număr mic de calcule, această caracteristică poate îmbunătăți sistemul de recunoaștere facială, astfel încât să îl facă potrivit pentru aplicațiile de viziune mobilă.
Elementul cheie al tehnologiilor de învățare profundă este cererea de hardware de mare putere. Atunci când se utilizează rețele neuronale profunde pentru dezvoltarea de software de recunoaștere facială, obiectivul nu este doar de a îmbunătăți precizia recunoașterii, ci și de a reduce timpul de răspuns. Acesta este motivul pentru care GPU, de exemplu, este mai potrivit pentru sistemele de recunoaștere a feței alimentate cu învățare profundă, decât CPU.
Cum am implementat aplicația de recunoaștere a feței alimentată cu învățare profundă
Când am dezvoltat Big Brother (o aplicație demonstrativă de cameră foto) la MobiDev, am avut ca scop crearea unui software de verificare biometrică cu streaming video în timp real. Fiind o aplicație de consolă locală pentru Ubuntu și Raspbian, Big Brother este scrisă în Golang și configurată cu ID-ul camerei locale și tipul de cititor de cameră prin intermediul fișierului de configurare JSON. Acest videoclip descrie cum funcționează Big Brother în practică:
Din interior, ciclul de lucru al aplicației Big Brother cuprinde:
1. Detectarea fețelor
Aplicația detectează fețele într-un flux video. Odată ce fața este capturată, imaginea este decupată și trimisă către back-end prin intermediul unei cereri HTTP form-data. API-ul back end salvează imaginea într-un sistem de fișiere local și salvează o înregistrare în jurnalul de detecție cu un ID de persoană.
She back end utilizează Golang și MongoDB Collections pentru a stoca datele angajaților. Toate solicitările API se bazează pe API RESTful.
2. Recunoașterea instantanee a feței
She back end are un lucrător de fundal care găsește noi înregistrări neclasificate și utilizează Dlib pentru a calcula vectorul descriptor de 128 de dimensiuni al caracteristicilor feței. Ori de câte ori este calculat un vector, acesta este comparat cu mai multe imagini de referință ale feței prin calcularea distanței euclidiene față de fiecare vector de caracteristici al fiecărei persoane din baza de date, găsind o potrivire.
Dacă distanța euclidiană față de persoana detectată este mai mică de 0,6, lucrătorul stabilește un personID în jurnalul de detecție și îl marchează ca fiind clasificat. În cazul în care distanța depășește 0,6, acesta creează un nou ID de persoană în jurnal.
3. Acțiuni ulterioare: alertă, acordarea accesului și altele
Imaginile unei persoane neidentificate sunt trimise managerului corespunzător cu notificări prin chatbots în messenger. În aplicația Big Brother, am folosit Microsoft Bot Framework și Errbot bazat pe Python, ceea ce ne-a permis să implementăm chatbotul de alertă în cinci zile.
Ulterior, aceste înregistrări pot fi gestionate prin intermediul panoului de administrare, care stochează fotografiile cu ID-uri în baza de date. Software-ul de recunoaștere facială funcționează în timp real și efectuează instantaneu sarcinile de recunoaștere facială. Utilizând Golang și colecțiile MongoDB pentru stocarea datelor angajaților, am introdus baza de date cu ID-uri, incluzând 200 de intrări.
Iată cum este concepută aplicația de recunoaștere a fețelor Big Brother:
În cazul extinderii până la 10.000 de intrări, am recomanda îmbunătățirea sistemului de recunoaștere a fețelor pentru a menține o viteză mare de recunoaștere pe partea din spate. Una dintre modalitățile optime este utilizarea paralelizării. Prin configurarea unui load balancer și construirea mai multor web workers, putem asigura activitatea corectă a unei părți din back-end și viteza optimă a unui întreg sistem.
Alte cazuri de utilizare a recunoașterii bazate pe învățare profundă
Recunoașterea feței nu este singura sarcină în care dezvoltarea software-ului bazat pe învățare profundă poate îmbunătăți performanța. Alte exemple includ:
Detecția și recunoașterea fețelor mascate
De când COVID-19 a făcut ca oamenii din multe țări să poarte măști de față, tehnologia de recunoaștere facială a devenit mai avansată. Prin utilizarea algoritmului de învățare profundă bazat pe rețele neuronale convoluționale, camerele pot recunoaște acum fețele acoperite cu măști. Inginerii din domeniul științei datelor utilizează algoritmi precum modelele de recunoaștere multi-granularitate bazate pe ochiul feței și modele de recunoaștere perioculară pentru a îmbunătăți capacitățile sistemului de recunoaștere facială. Prin identificarea unor caracteristici ale feței precum fruntea, conturul feței, detaliile oculare și perioculare, sprâncenele, ochii și pomeții, aceste modele permit recunoașterea fețelor mascate cu o precizie de până la 95%.
Un bun exemplu de astfel de sistem este tehnologia de recunoaștere a fețelor creată de una dintre companiile chineze. Sistemul este format din doi algoritmi: recunoașterea fețelor bazată pe învățare profundă și măsurarea temperaturii prin imagistică termică în infraroșu. Atunci când persoanele cu măști faciale stau în fața camerei, sistemul extrage caracteristicile faciale și le compară cu imaginile existente în baza de date. În același timp, mecanismul de măsurare a temperaturii în infraroșu măsoară temperatura, detectând astfel persoanele cu temperaturi anormale.
Detectarea defectelor
În ultimii doi ani, producătorii au folosit inspecția vizuală bazată pe inteligență artificială pentru detectarea defectelor. Dezvoltarea algoritmilor de învățare profundă permite acestui sistem să definească automat cele mai mici zgârieturi și fisuri, evitând factorii umani.
Detecția anomaliilor corporale
Compania Aidoc, cu sediul în Israel, a dezvoltat o soluție bazată pe deep learning pentru radiologie. Prin analiza imaginilor medicale, acest sistem detectează anomalii la nivelul toracelui, coloanei vertebrale, capului și abdomenului.
Identificarea vorbitorilor
Tehnologia de identificare a vorbitorilor creată de compania Phonexia identifică, de asemenea, vorbitorii prin utilizarea abordării de învățare metrică. Sistemul recunoaște vorbitorii după voce, producând modele matematice ale vorbirii umane numite voiceprints. Aceste amprente vocale sunt stocate în baze de date, iar atunci când o persoană vorbește, tehnologia pentru vorbitori identifică amprenta vocală unică.
Recunoașterea emoțiilor
Recunoașterea emoțiilor umane este o sarcină realizabilă în prezent. Prin urmărirea mișcărilor unei fețe prin intermediul camerei, tehnologia de recunoaștere a emoțiilor clasifică emoțiile umane. Algoritmul de învățare profundă identifică punctele de reper ale unei fețe umane, detectează o expresie facială neutră și măsoară abaterile expresiilor faciale recunoscându-le pe cele mai pozitive sau negative.
Recunoașterea acțiunilor
Visual O companie, care este un furnizor de camere Nest Cams, și-a alimentat produsul cu inteligență artificială. Prin utilizarea tehnicilor de învățare profundă, aceștia au pus la punct camerele Nest Cams pentru a recunoaște nu numai diferite obiecte, cum ar fi oameni, animale de companie, mașini etc., ci și pentru a identifica acțiuni. Setul de acțiuni care urmează să fie recunoscute este personalizabil și selectat de către utilizator. De exemplu, o cameră poate recunoaște o pisică care zgârie ușa sau un copil care se joacă cu aragazul.
Dacă e să rezumăm, rețelele neuronale profunde sunt un instrument puternic pentru omenire. Și numai un om decide ce viitor tehnologic va urma.
Cum învățarea profundă poate moderniza software-ul de recunoaștere a fețelor
Descărcați PDF
.