Detecția pulsului folosind procesarea de imagini [307990]
Universitatea “Politehnica” [anonimizat]: [anonimizat]. [anonimizat]
2018
Anexa 6
Copyright © 2018, [anonimizat] a reproduce și de a [anonimizat].
Lista figurilor
Fig. 1.1 – Metode de transmitere a datelor de la dispozitive purtabile în Cloud………………………..
Fig. 1.2 – Inele inteligente Oura………………………………………………………………………………………….
Fig. 1.3 – Vizualizarea grafică a măsurătorilor de puls realizate cu Oura…………………………………
Fig. 1.4 – Centură pentru măsurarea pulsului……………………………………………………………………….
Fig. 1.5 – Stetoscopul inteligent Jabes………………………………………………………………………………….
Fig. 1.6 – [anonimizat]…………..
Fig. 2.1 – Ajustarea ponderilor în funcție de eroare……………………………………………………………….
Fig. 2.2 – Obținerea clasificatorului final ca sumă ponderată de clasificatori slabi…………………….
Fig. 2.3 – Caracteristicile Haar……………………………………………………………………………………………
Fig. 2.4 – Utilizarea caracteristicilor Haar…………………………………………………………………………….
Fig. 2.5 – Exemplificarea calculului folosind imagini integrale……………………………………………….
Fig. 2.6 – Modelul unei fețe………………………………………………………………………………………………..
Fig. 2.7 – Rezultatele comparației algoritmilor de urmărire…………………………………………………….
Fig. 2.8 – Selecția regiunii de interes……………………………………………………………………………………
Fig. 3.1 – Schema logică a algoritmului……………………………………………………………………………….
Fig. 3.2 – Experimentarea algoritmului KCF………………………………………………………………………….
Fig. 3.3 – Selecția regiunii de interes în timpul experimentării………………………………………………….
Fig. 3.4 – Persoana 2 și Persoana 3 în timpul testelor………………………………………………………………
Fig. 4.1 – Camera web Logitech C615…………………………………………………………………………………..
Fig. 4.2 – Camera web Logitech BCC950……………………………………………………………………………….
Fig. 5.1 – Tricoul inteligent Ambiotex……………………………………………………………………………………
Fig. 5.2 – Fitbit Alta HR……………………………………………………………………………………………………….
Lista tabelelor
Tabelul 3.1 – Rezultatele experimentării algoritmilor de urmărire………………………………………………
Tabelul 3.2 – Medii din ROI pentru ficare subiect participant…………………………………………………….
…???
n – erori obtinute la validare
Lista acronimelor
ROI – Region of Interest (Regiune de Interes)
2D/3D –
MB –
BLE
FD
FT
Hz/GHz
GB
HD
RAM
CPU
USB
HR – Heart Rate (Puls)
BPM – Bătăi Pe Minut
PPG – Photopletismography (Fotopletismografie)
HRV – Heart Rate Variability (Variația Pulsului)
ECG – Electrocardiografie
ICA – Independent Component Analysis (Analiza Componentelor Independente)
PCA – Principal Component Analysis (Analiza Componentelor Principale)
iOS
IoT – Internet-of-Things
FFT – Fast Fourier Transform (Transformata Fourier Rapidă)
KCF –
MIL –
MOSSE –
NN – Neural Networks (Rețele Neurale)
SVM (Suport Vector Machine),
RGB
TLD –
KNN (K-Nearest Neigbour),
Cuprins
Introducere
Capitolul 1. Stadiul Actual al Tehnologiei
Metode de măsurare a pulsului prin atingere……………………..
1.1.1 Brățările inteligente………………………………….
1.1.2 Inelul inteligent Oura…………………………………
1.1.3 Centura pentru puls…………………………………..
1.1.4 Stetoscopul inteligent…………………………………
1.1.5 Aplicații pentru smartphone………………………….
1.1.6 Avantaje și dezavantaje ……………………….………
1.2 Metode de măsurare a pulsului fără atingere……………………
Capitolul 2. Aspecte teoretice
2.1 Detecția de fețe……………………………………………….
2.1.1 Metoda Viola Jones……………………………..
2.1.1.1 AdaBoost…………………………………………
2.1.1.2 Caracteristici Haar………………………………
2.1.1.3 Imagini integrale…………………………………
2.1.1.4 Clasificatori în cascadă……………………………
2.1.2 Utilizarea detecției de piele……………………
2.1.3 Aplicații bazate pe detecția de fețe……………………
2.2 Urmărirea de obiecte……………………………………………….
2.3 Selectarea regiunii de interes…………………………………………………
Capitolul 3. Metoda experimentală…………………………………
3.1 Descrierea algoritmului…………………………………………..
3.2 Detecția și urmărirea fețelor………………………………………
3.3 Alegerea regiunii de interes……………………………………….
3.4 Procesarea semnalului……………………………………………..
Capitolul 4. Testare și detalii hardware…………………………..
Capitolul 5. Validarea Rezultatelor……………………………….
Capitolul 6. Studiul particularităților soluției mobile………….
Concluzii……………………………………………………………….
Introducere
Pulsul unei persoane reprezintă numărul de bătăi ale inimii în decursul unui minut. De asemenea, acesta este un parametru fiziologic esențial, fiind o sursă de informare cu privire la activitatea întregului sistem cardiovascular. Pulsul (HR – Heart Rate) are totodată o importanță deosebită în diagnosticare și evaluarea nivelului de stres la care este predispus pacientul. Spre exemplu, persoanele care sunt mai puțin active din punct de vedere fizic vor avea de obicei un puls mai ridicat, din cauza faptului că mușchiul miocardic va fi mai solicitat pentru menținerea ritmului cardiac.
Valoarea pulsului variază în funcție de factori precum vârstă, sex, greutate, însă intervalul normal pentru un adult este definit în lucrări ca fiind 50-90 bătăi pe minut (BPM), în timp ce Asociația Americană a Inimii consideră intervalul normal ca fiind 60-100 BPM. Pulsul cardiac al unei persoane poate să difere și în funcție de alte aspecte, cum ar fi nevoia de oxigen organismului.
Este binecunoscut faptul că trebuie investigată orice variație neobișnuită a pulsului cardiac, astfel că este necesară monitorizarea continuă a acestuia. Există afecțiuni definite pe baza variației pulsului unei persoane, cum ar fi:
Tahicardie – pulsul este ridicat, mai mare decât 100 BPM
Bradicardie – pulsul este scăzut, mai mic decât 40 BPM
Aritmia reprezintă variații ale ritmului cardiac al unei persoane (bătăile inimii sunt neregulate)
În ultimele decade, societatea a devenit mai conștientă de importanța sănătății, iar o consecință a acestui lucru este multitudinea de platforme pentru monitorizarea de la distanță a sănătății pacienților. Printre cele mai frecvente cazuri de utilizare a acestora se numără monitorizarea stării de sănătate a bătrânilor și a pacienților cu probleme cronice.
Există însă situații în care este necesară monitorizarea continuă a pulsului unei persoane, iar contactul cu pielea pacientului este problematică din cauza anumitor afecțiuni de care acesta suferă. Astfel, conectarea pe o perioadă îndelungată la aparatele de monitorizare a pulsului devine inconfortabilă. În plus, un astfel de echipament poate monitoriza o singură persoană odată, ceea ce nu ajută în cazurile în care este nevoie de o monitorizare rapidă sau constantă a persoanelor dintr-o anumită locație – ca de exemplu nou-născuții dintr-un salon de spital, persoanele dintr-un birou sau o sală de așteptare.
Scopul acestui proiect este dezvoltarea unui program software capabil să detecteze pulsul pentru mai multe persoane simultan, folosind procesarea de imagini. Această tehnică necesită ca subiectul să fie relaxat și să fie plasat în apropierea unei camere web. Distanța dintre cameră și pacient poate varia între 1 și 3 metri, iar condițiile de iluminare trebuie să fie constante în timpul măsurătorii.
Punctul de pornire în realizarea celor menționate îl reprezintă faptul că în timpul bătăilor inimii, pomparea sângelui în corp cauzează variația culorii pielii. Această variație nu este sesizabilă cu ochiul liber, însă poate fi analizată în urma procesării imaginilor. Pentru fiecare cadru, se alege o regiune de interes (ROI) și se observă cum pixelii din zona selectată își schimbă intensitatea. Calculând frecvența la care se modifică nuanța pielii, se află frecvența bătăilor inimii.
În vederea realizării proiectului, procesarea imaginilor s-a realizat în mediul de dezvoltare Spyder (Anaconda Navigator), folosind librăriile OpenCV și limbajul de programare Python. Pentru a măsura simultan pulsul mai multor persoane, au fost implementate atât detecția de fețe, cât și urmărirea de obiecte.
De asemenea, rezultatele acestei lucrări au fost prezentate în cadrul conferinței COMM 2018, în sesiunea „Image Processing”.
În continuare, lucrarea este structurată în 5 capitole: Capitolul 1 descrie metode existente de măsurare a pulsului, Capitolul 2 prezintă aspecte teoretice, Capitolul 3 descrie soluția dezvoltată în cadrul proiectului și etapele acesteia. De asemenea, Capitolul 4 prezintă detaliile legate de testarea algoritmului, iar Capitolul 5 prezintă metodele de validare a rezultatelor obținute. În final, sunt prezentate concluziile.
Capitolul 1. Stadiul Actual al Tehnologiei
În prezent există numeroase metode de măsurare a pulsului. Posibilitatea integrării acestora în diverse aplicații face ca activitatea de cercetare în această direcție să fie continuă și să aibă rezultate foarte bune. În cele ce urmează, am clasificat metodele de măsurare a pulsului în două mari categorii: metode de măsurare a pulsului prin atingere, respectiv fără atingere.
1.1 Metode de măsurare a pulsului prin atingere
În ultimii ani au devenit tot mai populare dispozitivele purtabile, care permit utilizatorului să își monitorizeze permanent parametrii vitali. Acestea cuprind tehnologii electronice încorporate în articole de îmbrăcăminte și accesorii care pot fi purtate confortabil pe corp. Succesul acestora se datorează unei serii de facilități, cum ar fi sincronizarea rapidă a datelor în Cloud, posibilitatea stocării datelor pe dispozitiv pentru mai multe zile (sincronizarea fiind necesară de obicei săptămânal), durabilitatea bateriei. În general, tehnologia purtabilă are o anumită capacitate de comunicație și permite accesul purtătorului la informații în timp real.
De asemenea, utilizatorul își poate îmbunătăți calitatea somnului și își poate organiza mult mai ușor activitățile fizice. După ce datele sunt înregistrate folosind senzorii integrați în dispozitive, se realizează transmiterea datelor în Cloud. Aceasta se poate face direct (prin conexiune Wi-Fi) sau prin sincronizarea cu aplicația mobilă folosind BLE (Bluetooth Low Energy), după care are loc transmiterea datelor în Cloud.
Fig. 1.1 – Metode de transmitere a datelor de la dispozitive purtabile în Cloud
Primul dispozitiv purtabil pentru măsurarea ritmului cardiac a fost creat în anul 1977, de către profesorul finlandez Seppo Säynäjäkangas, fapt ce a dus la înființarea companiei Polar Electro. Dispozitivele clasice cuprindeau un transmițător și un receptor, și pentru o bună conductivitate era folosită apa sărată. De asemenea, în versiunile vechi ale monitoarelor pentru puls, de fiecare dată când era detectată o bătaie a inimii, era transmis un semnal radio. Cu ajutorul acestor semnale, receptorul determina frecvența cardiacă a purtătorului dispozitivului. Exista însă riscul apariției unor interferențe, odată cu recepția de semnale de la alți utilizatori din zonă.
1.1.1 Brățările inteligente
În prezent, printre dispozitivele purtabile cu cel mai mare succes se numără brățările inteligente. Acestea oferă o multitudine de opțiuni, inclusiv măsurarea pulsului. Datele obținute sunt post-procesate fie de către senzori, fie de către dispozitivele atașate senzorilor. Sincronizarea datelor este rapidă, astfel că dispozitivele pot fi utilizate pentru crearea unui istoric al activității cardiace.
Întrucât aceste dispozitive sunt purtate la încheietura mâinii, valorile măsurate sunt însă ușor influențabile în timpul activităților ce solicită această parte a corpului. Un exemplu poate fi utilizarea tastaturii: deși purtătorul este relaxat și are o valoare normală a pulsului, rezultatul obținut poate fi diferit din cauza activității intense a mâinilor și a modului în care este purtat dispozitivul (prea strâns, ori prea slab). Cu toate acestea, în condițiile în care utilizatorul este relaxat sau își solicită corpul într-un mod armonios, rezultatele obținute vor fi cât mai exacte.
Potrivit unor studii, majoritatea dispozitivelor purtabile nu sunt însă destinate măsurării cu o precizie foarte bună a pulsului utilizatorului, deși au integrată această funcție, iar competiția între producători este foarte ridicată. Totuși, există dezvoltatori precum Apple sau Fitbit, ce reprezintă vârful de gamă și care inovează cu fiecare produs lansat. Acest lucru se datorează și faptului că aceste companii investesc în cercetare și folosesc rezultatele lucrărilor științifice pentru îmbunătățirea propriilor produse.
Principiul de funcționare al acestor dispozitive este fotopletismografia (PPG). Dispozitivul este prevăzut cu o sursă de lumină, ce emite un fascicul către piele. O parte din lumină va fi absorbită de piele, iar o parte va fi supusă procesului de reflexie, în funcție de volumul de sânge care circulă prin vasele de sânge Dacă țesutul este bine irigat, cantitatea de lumină absorbită va fi mai mare și va fi reflectată o cantitate mai mică de lumină. Prin măsurarea cantității de lumină ce se întoarce în urma reflexiei, se obține pulsul pacientului.
Un studiu efectuat pe 12 persoane a comparat rezultatele obținute cu un astfel de dispozitiv, purtat pe încheietura mâinii, și cele ale unei electrocardiografii (ECG). Testele s-au efectuat în diferite condiții: stare de relaxare a subiecților sau după ce aceștia au efectuat exerciții fizice. Pulsul a fost monitorizat atât în timpul mișcării, cât și după, iar cea mai mare eroare întâlnită între măsurătorile efectuate cu cele două dispozitive a fost de 5 bătăi pe minut (BPM).
1.1.2 Inelul inteligent Oura
Oura este un inel inteligent ce înglobează funcții precum înregistrarea ritmului zilnic de mișcare, intensitatea efortului fizic, durata și calitatea somnului, variația pulsului (HRV – Heart Rate Variability). Datele pot fi vizualizate cu ușurință atât pe Android cât și pe iOS, iar ritmul cardiac măsurat este asociat diferitelor activități realizate de utilizator (exerciții fizice, somn) sau perioadelor de inactivitate. În Fig. 1.2 sunt prezentate inelele Oura, iar în Fig. 1.3 este prezentat modul de vizualizare în timp a pulsului măsurat cu un astfel de dispozitiv.
Fig. 1.2 – Inele inteligente Oura. Sursa: [https://ouraring.com]
Fig. 1.3 – Vizualizarea grafică a măsurătorilor de puls realizate cu Oura
1.1.3 Centura pentru puls
Un alt tip de dispozitive purtabile îl reprezintă centurile pentru piept. Acestea funcționează pe același principiu ca și electrocardiograma, măsurând activitatea electrică a inimii: în timpul activității cardiace, sunt generate semnale electrice care vor produce contracții ale mușchiului cardiac. Semnalul electric este înregistrat de electrozii cu care este prevăzută centura, și este apoi preluat de un transmițător, ce conține un microprocesor pentru analiza datelor.
Aceste centuri sunt considerate a avea cea mai mare precizie de măsurare, deoarece riscul de prindere inadecvată este mult mai mic, spre deosebire de cazul ceasurilor inteligente (care uneori sunt purtate prea strâns sau prea slab pe încheietura mâinii). De asemenea, centurile sunt purtate mult mai aproape de inimă. În Fig. 1.4 poate fi observată o centură pentru măsurarea pulsului.
Fig. 1.4 – Centură pentru măsurarea pulsului
Sursa: [http://www.medicalexpo.com]
1.1.1.4 Stetoscopul inteligent
Stetoscopul este un instrument folosit în medicină, ce are rol de amplificare și percepute sunetele produse de organele interne ale pacientului în timpul funcționării acestora. Stetoscopul inteligent Jabes amplifică sunetele de până la 20 de ori, folosind filtre digitale. Poate fi conectat la computer, iar software-ul conține o bază de date atât cu sunete de la pacienți sănătoși, cât și de la pacienți care suferă de afecțiuni ale ritmului cardiac. Astfel, persoana care îl utilizează poate realiza o comparație a rezultatului cu sunetele din baza de date.
Fig. 1.5 – Stetoscopul inteligent Jabes
Sursa: [https://www.allheart.com]
1.1.1.5 Aplicații pentru smartphone
Există aplicații mobile precum Heart Rate Plus – Pulse & Heart Rate Monitor și Heart Rate Monitor, care măsoară pulsul unei persoane utilizând blițul smartphone-ului, având același principiu de funcționare descris anterior. De asemenea, Samsung a introdus această funcționalitate pe dispozitivele sale, astfel că smartphone-urile recente au un senzor dedicat pentru măsurarea pulsului. Aplicația necesară este pre-instalată, iar utilizatorul trebuie să acopere centrul senzorului cu degetul, fără să apese foarte puternic pentru că poate restricționa circulația sângelui. În timpul măsurătorii este necesar ca utilizatorul să fie relaxat și să nu vorbească. Am experimentat două dintre aplicații și am obținut rezultate similare, după cum este ilustrat în Fig. 1.6.
Fig. 1.6 – Rezultate obținute cu aplicația Heart Rate Plus,
respectiv Heart Rate Monitor
1.1.2 Avantaje și dezavantaje
În ceea ce privește dispozitivele purtabile, în decursul ultimilor ani a avut loc o creștere semnificativă a calității măsurătorilor efectuate. Acest lucru se datorează în principal interesului ridicat al utilizatorilor, care duce la o competiție strânsă între dezvoltatori.
Principalele avantaje ale acestor tehnologii sunt accesul imediat și permanent la datele stocate, precum și integrarea în aplicații de SmartHealth a datelor obținute cu acestea. Măsurarea pulsului a devenit o acțiune extrem de rapidă și mult mai precisă în ultimii ani.
Totuși, aceste dispozitive au și o serie de dezavantaje ce îngreunează utilizarea lor, sau le fac inaccesibile pentru anumite categorii de persoane.
În primul rând, un dispozitiv cu o acuratețe mare de măsurare va avea și un preț ridicat. Prețurile pornesc de la câteva sute de lei, și ajung până la câteva mii. Un alt minus, în special pentru dispozitivele cu prețuri mai scăzute, este faptul că acestea pot atinge temperaturi destul de ridicate, din cauza anumitor componente sau a microprocesorului (dacă acesta este integrat). În plus, aceste dispozitive pot cauza iritații sau arsuri la nivelul pielii utilizatorului.
1.2 Metode de măsurare a pulsului fără atingere
În decursul ultimilor ani a fost dezvoltată o serie de aplicații bazate pe IoT (Internet-of-Things), ce integrează diverse soluții pentru urmărirea stării de sănătate. Se dorește monitorizarea pacienților de la distanță, prin transmiterea rapidă a datelor în Cloud, dar și eficientizarea metodelor de obținere a parametrilor necesari monitorizării. În ceea ce privește detecția de puls folosind procesarea de imagini, există două direcții ce permit dezvoltarea de aplicații științifice.
În primul rând, este analizată variația culorii pielii, cauzată de bătăile inimii. O altă metodă este reprezentată de măsurarea mișcărilor involuntare ale capului (și insesizabile cu ochiul liber), cauzate de activitatea cardiacă. Momentan, aceste metode sunt în special implementate în mediul științific, fiind subiectul a numeroase articole de cercetare și necesitând în primul rând implementarea algoritmului de detecție de fețe.
Există diverse lucrări științifice în care autorii prezintă o metodă fără contact pentru măsurarea pulsului, acestea fiind în special utile pentru oamenii care întâmpină diferite afecțiuni ale pielii. O metodă constă utilizarea unor metode multiple de selecție a regiunii de interes (ROI), zonă care este apoi utilizată pentru calcularea valorilor medii ale pixelilor. În plus, metoda este testată în timp ce subiectul se mișcă, dar și atunci când apar tulburări de semnal. Erorile întâlnite sunt destul de scăzute: aproximativ 3,4 ± 0,6 BPM în cazurile în care subiectul stă nemișcat și 2,0 ± 1,6 BPM atunci când subiectul este în mișcare.
De asemenea, un alt sistem pentru măsurarea pulsului este dezvoltat folosind o metodă de a înregistra modificările de ritm cardiac atât în cazul în care subiectul este nemișcat, cât și atunci când se află în mișcare. Regiunea de interes selectată este împărțită în 3 zone, iar pentru fiecare dintre acestea se calculează valoarea medie a pixelilor. Pentru a obține un semnal clar, are loc analiza componentelor independente (ICA), după care se utilizează detecția valorii de vârf a semnalului, pentru determinarea valorii ritmului cardiac. După cum menționează autorii, algoritmul nu oferă rezultatul în timp real, însă valorile obținute sunt cele așteptate, în comparație cu alte metode de măsurare a HR.
Pe de altă parte, există un procedeu ce are rezultate în timp real și se bazează pe implementarea a trei metode diferite de procesare a semnalului: ICA, Analiza Componentelor Principale (PCA) și transformarea rapidă Fourier (FFT). Obținerea de imagini este realizată utilizând o cameră de laptop, iar metoda de calcul a HR se bazează pe variația culorii pielii. Rezultatele obținute sunt similare cu alte metode.
În plus, există abordări ce cobină utilizarea camerelor web și a camerelor cu termoviziune. Experimentele au fost realizate în mijlocul zilei, astfel că singura sursă de iluminare este lumina soarelui. De asemenea, voluntarii (atât bărbați cât și femei) au stat la un metru de cameră și nu s-au mișcat în timpul măsurătorilor. Regiunea de interes a fost considerată pe frunte, deoarece această zonă are o temperatură constantă. Pentru reducerea complexității procesului, ROI selectată a fost mai mică, iar pe baza rezultatelor experimentului se concluzionează că ICA și PCA au precizie similară la extragerea pulsului.
De asemenea, este descrisă estimarea variabilității pulsului (HR – Heart Rate Variability) prin procesarea video pentru obținerea unui semnal dependent de timp. Datele sunt apoi folosite pentru a extrage semnalul PPG și se calculează densitatea puterii spectrale pentru a detecta componentele de frecvență necesare pentru măsurarea HR.
În altă lucrare științifică se propune o metodă de măsurare a ritmului cardiac instantaneu, ce variază dinamic în cadrul unor secvențe video scurte. Provocarea în utilizarea acestui tip de secvențe video este aceea că sursele ICA ar putea să nu aibă o independență suficientă. Fără a determina independența surselor, există posibilitatea ca semnalul frecvenței cardiace să fie combinat cu alte semnale, ceea ce ar conduce la o citire inexactă. De acees, există descrieri pentru determinarea independenței surselor în vedea obținerii unei lecturi corecte.
O altă abordare este detecția ritmul cardiac și durata bătăilor inimii, măsurând mișcarea capului subiectului. Aceasta este o urmare a fluxului de sânge aferent fiecărei bătăi a inimii. Metoda prezentată utilizează analiza componentelor principale (PCA) pentru a descompune traiectoriile mișcărilor capului într-un set de mișcări de componente. Apoi se alege componenta ce corespunde cel mai bine bătăilor inimii, pe baza spectrului de frecvențe temporale. În cele din urmă, se analizează mișcarea proiectată la această componentă și se identifică valorile maxime, ce indică de fapt valoarea pulsului măsurat.
https://ieeexplore.ieee.org/document/7410772/
Capitolul 2. Aspecte teoretice
2.1 Detecția de fețe
Primele descoperiri semnificative în ceea ce privește detecția de fețe au fost realizate în anii '60, de către matematicianul Woodrow Wilson Bledsoe. Printre publicațiile acestuia se numără două studii cunoscute ca fiind primele încercări de implementare a unui sistem computerizat de recunoaștere facială. În prima lucrare cercetătorul analizează dacă tehnologiile existente la acel moment sunt suficiente pentru crearea unui sistem de recunoaștere facială bazat pe fotografii realizate din același unghi. Cea de-a doua lucrare abordează o problemă mai complexă, și anume recunoașterea identității unei persoane folosind fotografii noi ale acesteia, făcute din unghiuri diferite.
De-a lungul ultimelor decade, s-au făcut progrese semnificative în această direcție, iar în zilele noastre detecția și recunoașterea facială sunt implementate la scară largă, fiind utilizate în special de instituțiile guvernamentale și în cadrul platformelor de Social Media. Printre cazurile de utilizare ale acestora sunt recunoașterea unor persoane (infractori, persoane dispărute) prin comparația imaginilor obținute de la camerele de supraveghere cu cele din bazele de date, aplicații de securitate sau chiar alegerea ochelarilor de vedere potriviți cumpărătorului.
2.1.1 Metoda Viola Jones
Algoritmul de detecție de fețe dezvoltat de Paul Viola și Michael Jones în lucrarea lor este bazat pe conceptul de învățare automatizată (machine learning) și antrenat pe seturi formate atât din imagini pozitive (fotografii cu fețe) cât și imagini negative (imagini care nu conțin fețe). Deși este o metodă a cărei antrenare este considerată lentă, detecția este rapidă, cautându-se cele mai relevante trăsături, precum ochii, nasul, sprâncenele. Detectorul de fețe Viola-Jones a introdus mai multe caracteristici cheie, descrise în continuare.
2.1.1.1 AdaBoost
Algoritmul de învățare AdaBoost a fost introdus de Z. Freund și R. Schapire cu scopul de a combina trăsături slabe în clasificatori puternici (de ansamblu), și este unul dintre cei mai folosiți și studiați algoritmi. Conform studiului celor doi cercetători, un clasificator bine antrenat trebuie să îndeplinească 3 condiții:
Antrenarea trebuie să fie realizată pe un număr suficient de exemple, astfel încât să fie construit un model. Există însă și riscul de supra-antrenare (overfitting), ce constă în memorarea datelor utilizate în cadrul etapei de învățare, pe care le va recunoaște foarte bine, însă orice alt exemplu (fie el pozitiv sau negativ), nu va fi recunoscut de clasificator.
Eroarea de antrenare trebuie să fie cât mai mică. Aceasta este definită ca fiind eroarea obținută la rularea modelului antrenat pe setul de date de antrenare. Spre deosebire de aceasta, eroarea de test apare la rularea modelului pe un set de date de test pentru măsurarea acurateții.
Complexitatea clasificatorului nu trebuie să fie foarte ridicată. Pentru argumentarea acestei condiții, este deseori menționat „Briciul lui Occam”. Conform acestuia, pentru un fenomen este de preferat cea mai simplă explicație a acestuia. Din punct de vedere matematic, afirmația este susținută de Teoria Probabilităților: orice ipoteză introduce posibilitatea existenței unei erori. Un exemplu practic este faptul că se recomandă folosirea unor clasificatori slabi drept clasificatori de bază, în ceea ce privește evitarea fenomenului de supra-antrenare, deoarece complexitatea modelului poate fi controlată mult mai ușor. De asemenea, există o condiție de învățare pentru clasificatorii slabi: de exemplu, pentru o problemă de clasificare cu două clase, eroarea fiecăreia dintre acestea trebuie să fie mai mică decât ½ (eroare = ½ – x, unde x > 0). Pe baza acestei condiții, se poate demonstra că eroarea finală de antrenare pentru AdaBoost scade foarte rapid către zero.
Exemple de clasificatori slabi (imperfecți): KNN (K-Nearest Neigbour), SVM (Suport Vector Machine), NN (Rețele Neurale), Naive Bayes Classifier. Aceștia pot fi combinați pentru a forma un clasificator de ansamblu (agregat). Vom considera exemplul unui clasificator agregat boolean, ce va returna 1 sau -1, având:
un set de clasificatori slabi;
„n” iterații;
α – aceeași pondere inițială pentru toți clasificatorii;
– cel mai bun clasificator slab pentru iterația i, i = 1,n;
H – clasificatorul de ansamblu;
Fiecare clasificator slab va avea o eroare cuprinsă între 0 (clasifică totul perfect) și 1 (clasifică totul greșit):
în cazul în care eroarea este 0 (sau cât mai mică) ponderea se dorește a fi mai mare;
în cazul în care eroarea este 1 (sau cât mai mare) ponderea se dorește a fi mai mică;
Fig. 2.1 ilustrează variația ponderii în funcție de eroarea obținută:
Fig. 2.1 – Ajustarea ponderilor în funcție de eroare
După fiecare iterație se alege clasificatorul cu cel mai bun rezultat, iar termenul corespunzător acestuia se adaugă în suma pentru clasificatorul final (Fig. 2.2).
Fig. 2.2 – Obținerea clasificatorului final ca sumă ponderată de clasificatori slabi
2.1.1.2 Caracteristici Haar
Caracteristicile Haar prezentate în Fig. 2.3 sunt imagini dreptunghiulare ce pot fi definite ca diferența dintre media pixelilor din zona negră și media pixelilor din zona albă. Există mai multe tipuri de caracteristici, ce pot indica prezența sau absența unor elemente în imagine, cum ar fi muchii sau diferențe de luminanță. Acestea sunt deplasate de mai multe ori de-a lungul imaginii, clasificând-o ca fiind pozitivă sau negativă. Există mai multe tipuri de caracteristici:
muchie – exemplu în Fig. 2.3 (a)
linie – exemplu Fig. 2.3 (b)
caracteristici cu 4 pătrate – exemplu Fig. 2.3 (c)
Fig. 2.3 – Caracteristicile Haar
Fiecare caracteristică este formată din zone de aceeași formă și dimensiune, dispuse vertical, orizontal sau pe diagonală. Această limitare a dispunerilor este însă compensată prin avantajele aduse de combinarea cu noțiunea de imagine integrală. Fig. 2.4 exemplifică implementarea algoritmului. Prima caracteristică este corespunzătoare zonei ochilor și calculează diferența de intensitate dintre sprâncene și ochi. Cea de-a doua caracteristică va compara intensitatea pixelilor din zona alăturată nasului cu cea a pixelilor nasului.
Fig. 2.4 – Utilizarea caracteristicilor Haar
2.1.1.3 Imagini integrale
Conversia valorilor intensității pixelilor într-o imagine integrală. Acest lucru face posibil calculul rapid al sumei pixelilor dintr-o imagine sau dintr-un dreptunghi. Imaginea integrală într-un punct de coordonate (x,y) va conține suma tuturor pixelilor aflați deasupra și la stânga punctului considerat.
Pentru exemplificare, vom considera Fig. 2.5. Folosind imaginea integrală, valoarea dreptunghiului albastru poate fi calculată cu Formula 1, unde fiecare termen reprezintă valoarea unui dreptunghi:
=
Formula 1. Calculul imaginii integrale
Fig. 2.5 – Exemplificarea calculului folosind imagini integrale
Astfel, scăzând valoarea dreptunghiului roșu și a celui negru din valoarea dreptunghiului verde și adăugând apoi valoarea dreptunghiului galben, se obține valoarea dreptunghiului colorat cu albastru. În acest mod, caracteristicile sunt evaluate mult mai rapid în procesul de detecție de fețe.
2.1.1.4 Clasificatori în cascadă
Pentru a evita aplicarea trăsăturilor în aceleași regiuni de mai multe ori, în condițiile în care un clasificator anterior a returnat un rezultat negativ, următorii clasificatori nu vor mai fi aplicați pentru acea zonă a imaginii. Astfel, operațiunile mai complexe vor fi aplicate numai în regiunile cu probabilitate ridicată de a reprezenta o față. Această structură a detecției în cascadă este comparată cu structura unui arbore de decizie degenerat. La final, zona ce are un rezultat pozitiv pentru toți clasificatorii, va fi considerată a fi o față. Implementarea acestei metode face ca numărul zonelor pe care este aplicat clasificatorul final să fie redus la jumătate. De cele mai multe ori, o cascadă ce conține un număr mare de clasificatori va oferi rezultate mai satisfăcătoare, însă va necesita mai mult timp de procesare. Deși un detector de fețe rapid are multe aplicații, în situațiile în care viteza de procesare nu este esențială, algoritmul permite și implementarea unor procesări suplimentare.
Un clasificator este un arbore de decizie, iar prin selecția adâncimii maxime a acestuia, pot fi controlate 3 aspecte importante:
Bias-ul modelului: se dorește ca acesta să fie cât mai mic, adică rezultatul predicției să fie cât mai aproape de rezultatul corect.
Timpul de antrenare: pentru clasificatorii slabi se dorește un timp redus de antrenare a acestora, deoarece va fi antrenat un număr mare de clasificatori.
Timpul de predicție al clasificatorului trebuie să fie cât mai redus, pentru a construi un model cu o rată de predicție ridicată.
În articolul lor, Viola și Jones descriu o cascadă ce conține mai bine de 6000 de trăsături. Considerând un set dificil de date, cu 507 fețe și 75 milioane de ferestre de analiză, implementarea clasificatorului în cascadă a necesitat utilizarea a aproximativ 10 caracteristici pentru fiecare sub-fereastră a imaginii. În comparație cu soluțiile precedente, această abordare reprezintă un salt semnificativ – de exemplu, este de aproximativ 15 ori mai rapidă decât sistemul descris de Rowley et al.
Autorii au antrenat detectorul de fețe atât pe imagini pozitive, cât și negative. Fiind format din imagini descărcate aleator de pe internet, setul de antrenare a cuprins 4916 fețe etichetate manual. Numărul total de caracteristici ale detectorului a fost de 6061 (dispuse pe straturi) și numărul de trăsături a crescut odată cu numărul stratului, după cum reiese din primele 5 exemple:
stratul 1: 1 caracteristică
stratul 2: 10 caracteristici
stratul 3: 25 caracteristici
stratul 4: 25 caracteristici
stratul 5: 50 caracteristici
Fiecare clasificator a fost antrenat pe 9832 de fețe (cele 4916 menționate, și proiecțiile în oglindă ale acestora) și pe 10.000 de sub-ferestre ce nu conțineau fețe. Viteza detectorului final a depins de numărul de caracteristici evaluate pe fiecare sub-fereastră: pe un procesor Pentium III de 700 MHz, detectorul de fețe procesa o imagine de 384×288 pixeli în aproximativ 0.067 secunde. Rezultatul demonstrează saltul semnificativ realizat de cei doi cercetători, metoda prezentată de aceștia fiind de aproximativ 600 de ori mai rapidă decât detectorul Schneiderman-Kanade.
2.1.2 Utilizarea detecției de piele
Există algoritmi de detecție de fețe bazați pe segmentarea imaginii color pentru a obține regiunile de interes, adică pixelii ce reprezintă piele. Ulterior se implementează filtrul Gabor, iar regiunile pielii sunt împărțite în două clase: față sau non-față. Acesta este un filtru liniar utilizat pentru analiza texturilor, definite ca nivelul de gri al unui pixel dat, precum și al pixelilor din vecinătatea acestuia. Relevanța implementării filtrului este susținută de comparația acestuia cu sistemul vizual uman. Rezultatele experimentale arată că metoda menționată în această lucrare poate realiza o detecție cu o acuratețe ridicată. Pentru a evalua viteza de detecție a algoritmului propus, în cadrul articolului se realizează o comparație cu alte metode cunoscute. Algoritmul este format din 4 etape:
Clasificarea pixelilor din imaginea color în două mari clase (piele/non-piele), astfel că imaginea rezultată va fi o imagine binară.
Segmentarea imaginii binare în regiuni interconectate și consistente
Eliminarea regiunilor ce nu sunt semnificative.
Localizarea zonelor semnificative din imagine.
Alegerea unui model de culoare pentru piele este complexă, iar detecția pielii este unul din pașii de început în algoritmul de detecție a feței. Metoda aleasă trebuie să fie rapidă și totodată să aibă o rată de succes semnificativă: un număr ridicat de rezultate de tip true positive (un pixel clasificat ca fiind piele este într-adevăr piele) și un număr cât mai redus de false positives (un pixel clasificat ca fiind piele nu este de fapt piele).
Următorul pas implementat în lucrare este eliminarea zonelor de piele ce au o dimensiune mai mică decât un anumit prag (mai exact 15×15 pixeli), astfel că zonele rămase sunt potențiale fețe. Este apoi aplicată o cascadă formată din 4 filtre Gabor, realizându-se o comparație a regiunilor de piele cu modele de fețe sugerate. Sunt verificate 4 condiții ce trebuie îndeplinite simultan:
Imaginea binară rezultată anterior conține cel puțin trei zone care unite formează un triunghi.
Se trasează o axă verticală ce trece prin centrul de greutate al zonei de piele selectate. Această axă trebuie să treacă și prin cea mai de jos zonă detectată la punctul 1.
Celelalte două zone identificate la punctul 1 trebuie să aparțină celor două cadrane Q1 și Q2 exemplificate în Fig. 2.6.
Distanțele dintre zona de jos identificată la punctul 2 și celelalte două zone trebuie să fie aproximativ egale.
Fig. 2.6 – Modelul unei fețe. Sursa: [Hajraoui et. al]
În cadrul unei alte lucrări științifice, autorii compară algoritmi de detecție de fețe bazați pe culoarea pielii, implementați în 3 spații de culoare diferite. Rezultatele obținute sunt utilizate pentru a obține o nouă culoare pentru pixelii de piele, iar metoda prezentată are o acuratețe de 95,18%.
Utilizarea unui detector de piele are câteva avantaje, printre care și un timp mai redus de procesare. Acest lucru se datorează faptului că procesarea culorilor este mai rapidă decât procesarea trăsăturilor faciale. Detecția și urmărirea de fețe folosind culoarea pixelilor ce reprezintă o față este complexă, din cauza faptului că rezultatul poate fi influențat de numeroși factori, cum ar fi lumina ambientală sau poziția și mișcarea subiectului. De asemenea, reprezentarea unei persoane diferă în spațiul culorilor, de la o cameră web la alta.
Prin combinarea rezultatelor acestor algoritmi, sunt extrase regiunile ce reprezintă piele. Următorul pas este extragerea trăsăturilor faciale și construirea unui dreptunghi în jurul regiunii ce a fost identificată ca fiind față. În cazul în care algoritmii au rezultate diferite, însă cel puțin unul dintre ei a clasificat o zonă drept față, în final regiunea respectivă va fi considerată o față.
În lucrarea autorii prezintă o metodă de detecție a fețelor în video, în timp real, folosind modelul detecției de piele. Se realizează o diferență între cadre, după care se aplică algoritmul AdaBoost. De asemenea, sunt prezentate 3 caracteristici care îngreunează detecția de fețe:
Schimbările de expresie facială
Existența ochelarilor, a bărbii sau a altor elemente pe față
Vulnerabilitatea la schimbările de iluminare
Algoritmul prezentat de autori constă în:
separarea țintei de fundalul imaginii: fundalul unei imagini are întotdeauna un impact puternic asupra procesului de detecție de fețe, fapt pentru care se dorește eliminarea acestuia. Acest lucru se realizează prin calculul diferenței dintre două cadre succesive, pentru a se stabili dacă în video există un obiect ce se află în mișcare. O problemă poate să apară însă în cazul în care obiectul are o mișcare lentă în video, care nu este astfel identificată.
Astfel, distanța rezultată între cei doi pixeli având aceleași coordonate (x,y) în cele 2 imagini succesive se calculează aflând diferența pentru fiecare componentă (RGB) dintre cadrul anterior și cel curent. Dacă această diferență este mai mică decât un anumit prag, pixelul din imaginea diferențială va avea aceeași valoare din imaginea anterioară, altfel valoarea lui va fi 0.
2.1.3 Aplicații bazate pe detecția de fețe
În prezent, detecția, recunoașterea și urmărirea de fețe sunt operațiuni integrate în platformele de socializare sub diferite aspecte. Recunoașterea și urmărirea de fețe sunt acțiuni pentru care este necesară mai întâi realizarea detecției de fețe.
Spre exemplu, etichetarea persoanelor în fotografii a devenit o acțiune tot mai simplă în ultimii ani, datorită sugestiilor de etichetare. Facebook a dezvoltat un program de recunoaștere facială, numit „DeepFace”, bazat pe algoritmii de detecție și recunoaștere dezvoltați de compania Face.com. Acesta funcționează pe baza unui algoritm de calcul ce generează un model pentru fiecare utilizator. Modelul este realizat pe baza trăsăturilor faciale ale unei persoane, calculându-se diferite distanțe dintre ochi, nas și urechi. Programul identifică dacă două fețe din două fotografii diferite sunt de fapt ale aceleiași persoane, cu o acuratețe de 97,25%, comparabilă cu cea a unui om, de 97,53%. Identificarea nu este influențată de diferențe de iluminare a fețelor sau de unghiul din care este realizată fotografia. Baza de date folosită pentru procesul de învățare a fost constituită dintr-un număr mare de fotografii încărcate pe Facebook și un set de date de pe YouTube.
Pentru dezvoltarea aplicației au fost folosite modelarea 3D a fețelor și rețele neurale cu o adâncime de 9 straturi. Rețelele neurale sunt optime pentru lucrul cu seturi foarte mari de date de antrenare, și în particular, arhitectura acestei rețelei este bazată pe fixarea locației fiecărei fețe, pixel cu pixel. Concret, contribuțiile pentru dezvoltarea acestei aplicații sunt:
1. Dezvoltarea arhitecturii unei rețele neurale și a unei metode de învățare ce folosește un set mare de date pentru reprezentarea de fețe.
2. Dezvoltarea unui sistem eficient de aliniere facială, bazat pe modelarea 3D explicită.
3. Obținerea unui sistem ce întrece performanțele sistemelor existente și are o rată de succes comparabilă cu performanța umană.
Snapchat este o aplicație foarte populară, ce permite modificarea imaginii în diferite modalități, cum ar fi aplicarea unor măști, a unor efecte, sau chiar „schimbarea” fețelor între persoane. Implementarea acestor opțiuni pentru utilizatori implică:
detecția de fețe: pentru cadrele achiziționate se realizează detecția de fețe, în urma căreia este returnat dreptunghiul de detecție – coordonatele x, y (coordonatele unui colț al dreptunghiului pentru față), h și w (înălțimea, respectiv lățimea dreptunghiului ce va delimita fața identificată).
identificarea trăsăturilor faciale: vor fi returnate și coordonatele pentru ochi, nas, gură.
procesarea imaginii
Antrenarea sistemului s-a făcut folosind câteva zeci de mii de fețe pe care s-au marcat manual punctele ce delimitează trăsăturile faciale. Pe baza acestora, se constituie apoi o mască (o rețea obținută prin unirea punctelor marcate) folosită pentru inserarea efectelor vizuale.
Serviciile cognitive Microsoft dispun de o aplicație pentru detecție a fețelor în imagini. Acesta este punctul de start pentru alte aplicații ce pot fi dezvoltate și returnează un dreptunghi corespunzător feței detectate, și opțional, marcarea trăsăturilor faciale. Pentru experimentarea serviciului este recomandată folosirea unor fotografii frontale de o calitate ridicată, ce pot avea o mărime de până la 6 MB. Dimensiunea minimă a fețelor ce pot fi detectate este de 36×36 pixeli, iar într-o imagine pot fi detectate cel mult 64 de fețe ce vor fi ordonate crescător, după dimensiune. De asemenea, sunt evaluate diferite atribute, precum zâmbetul (0 – inexistent, 1 – zâmbet larg) sau vârsta.
2.2 Urmărirea de obiecte
Urmărirea de obiecte (object tracking) are multiple aplicații practice, și este un obiect de studiu curent în procesarea de imagini. Pentru implementare, este necesară mai întâi localizarea trăsăturilor de interes (poziția de start), după care are loc urmărirea locației zonei respective, în cadrul clipului video. Necesitatea utilizării algoritmilor de urmărire provine din timpul mare de procesare al detectoarelor de obiecte sau de fețe.
Denumirea de „online tracking” se datorează faptului că implementarea algoritmului se face pe măsură ce se primesc noi cadre de la camera web, adică procesarea se face într-un singur sens: înainte. Există un singur cadru din care se preia informația necesară, după care urmărirea trebuie făcută corespunzător. Complexitatea problemei de urmărire este ridicată, din cauza numeroșilor factori ce pot interveni, precum:
apariția unor surse multiple de iluminare sau o iluminare prea slabă a obiectului – acestea pot schimba aspectul zonei de interes
textura obiectului (mat ori strălucitor) poate afecta aspectul obiectului
reflexia speculară – în cazul obiectelor lucioase, are loc reflexia unei cantități semnificative de lumină, într-un cadru restrâns de unghiuri. În ceea ce privește obiectele mate, în cazul acestora are loc reflexia difuză, în care lumina este reflectată uniform
transparența obiectului
forma obiectului
confuzia obiectelor – de exemplu, un grup de pinguini
modelul de mișcare al obiectului
contrastul imaginii
mișcarea camerei web sau zoom-ul
Un algoritm de urmărire este descris ca având 5 componente:
ținta – poate fi reprezentată de un obiect, un dreptunghi, un contur, o arie, un grup de dreptunghiuri, etc.
tipul caracteristicilor – poate fi un model geometric 2D sau 3D, etc.
modelul de mișcare – uniform, Gaussian, Implicit, etc.
optimizarea
actualizarea
Un algoritm bun de urmărire este descris ca fiind un algoritm implementat cu succes într-un număr mare de videoclipuri în care au loc schimbări precum cele menționate anterior. De asemenea, s-a realizat testarea a 19 algoritmi de urmărire, pe un set de 315 videoclipuri cu durata medie de 9,2 secunde. Setul a fost ulterior suplimentat cu 10 videoclipuri cu durata de 1-2 minute.
Pentru fiecare dintre acești algoritmi se dă un dreptunghi de urmărire inițial, după care se compară locația subiectului ce trebuie urmărit cu dreptunghiul procesat de algoritm. Singura informație necesară pentru urmărirea obiectului este locația inițială a acestuia, astfel încât rezultatul depinde numai de acuratețea algoritmului. Nu se realizează o antrenare pe obiecte sau persoane, pentru că ar fi introdusă dependența de setul de învățare.
Evaluarea performanțelor trackerilor este obiectivă, bazată pe teste statistice și s-a realizat folosind curba de supraviețuire Kaplan Meier. Dintre cei 19 algoritmi testați, TLD (Tracking-Learning-Detection) se află în primii 4, având unul dintre cele mai bune rezultate. Este unul dintre trackerii disponibili în OpenCV, motiv pentru care a fost testat și în cadrul acestei lucrări.
Deși urmărirea de obiecte este o temă de actualitate, iar OpenCV este o librărie de cercetare în Computer Vision intens utilizată, aceasta oferă posibilitatea de experimentare a unui număr redus de algoritmi de urmărire a obiectelor. Algoritmii disponibili pot fi împărțiți în două categorii:
Algoritmi dezvoltați să urmărească ținta prin urmărirea traiectoriei acesteia și care folosesc predicția viitoarei locații, fapt ce presupune corecția unei erori între cadre. Unul dintre dezavantajele acestora este pierderea acurateții atunci când camera web se mișcă prea repede sau are loc o schimbare bruscă a direcției de deplasare a țintei, și identificarea altui obiect în locația prezisă de algoritm. Exemple de algoritmi: MIL (Multiple Instance Learning), Boosting, MedianFlow.
Algoritmi dezvoltați pentru a fi implementați în probleme complexe de urmărire, adaptându-se la noi condiții și corectând toate erorile semnificative existente. Dezavantajul acestora este necesitatea unei memorii mai mari și a unui consum de putere de procesare mai mare. Un astfel de algoritm disponibil în OpenCV este TLD.
În continuare, vor fi descriși algoritmi de urmărire de obiecte disponibili în librăria OpenCV.
Algoritmul TLD, împarte activitatea de urmărire a țintei în 3 sub-activități: urmărire, învățare și detecție:
Obiectul țintă este definit prin locația sa din primul cadru, după care, pentru fiecare cadru care urmează, se dorește urmărirea țintei sau să se indice că obiectul nu mai este prezent (după caz). Estimarea mișcării obiectului de la un cadru la altul presupune faptul că acesta este vizibil, iar mișcarea este limitată. Există probabilitatea ca algoritmul să eșueze, dacă obiectul iese din cadru și revine apoi.
Detectorul localizează toate aparițiile obiectului și corectează urmărirea, dacă este necesar. Fiecare cadru este procesat independent și este scanat complet, în vederea identificării aparițiilor observate anterior și învățate. La fel ca în cazul oricărui alt detector, și aici erorile întâlnite pot fi de două tipuri: false positives și false negatives.
Etapa de învățare constă în aproximarea erorilor de detecție și actualizarea detectorului astfel încât să evite aceste erori în cadrele ce urmează. Se ține cont că ambele etape anterioare pot da greș.
MIL Tracker (Multiple Instance Learning) este un algoritm de învățare supervizată, folosit în problemele în care nu există suficiente informații cu privire la etichetele datelor de învățare. În învățarea supervizată instanțele sunt etichetate individual, în timp ce MIL utilizează grupuri etichetate de instanțe. Algoritmul MIL de urmărire de obiecte este bazat pe conceptul de „boosting”, adică pe combinarea unui număr mare de clasificatori slabi într-un clasificator puternic. Antrenarea acestor clasificatori se realizează secvențial. Acest algoritm nu consideră numai locația curentă a obiectului (etichete pozitive), ci ia în considerare și vecinătatea acestuia (potențiale etichete pozitive).
Algoritmul BOOSTING este bazat pe o versiune online de AdaBoost și necesită să fie antrenat atât cu imagini pozitive, cât și negative ale obiectului țintă. Dreptunghiul de inițializare (ales de utilizator sau obținut prin detecție) este considerat un exemplu pozitiv al obiectului, iar pentru cadrele următoare, clasificatorul va fi rulat pentru fiecare pixel din vecinătatea locației inițiale. Se obține un scor al clasificatorului, iar noua locație va corespunde valorii maxime.
Algoritmul de urmărire KCF (Kernelized Correlation Filters) utilizează faptul că pentru etichetele pozitive folosite în algoritmul MIL există multe regiuni în care acestea se suprapun. Datele care se suprapun conduc la anumite proprietăți matematice care sunt folosite de acest algoritm pentru a face procesul de urmărire mai rapid și mai precis.
MedianFlow Tracker: dându-se un punct în imagine, acest algoritm va încerca localizarea aceluiași punct în cadrele următoare. Pentru utilizarea algoritmului în aplicații, se va selecta de fapt o zonă de interes (desenarea unui dreptunghi). Pentru reactualizarea regiunii de interes, se va considera media punctelor pentru fiecare axă, în timpul mișcării.
Algoritmul de urmărire GoTurn este bazat pe Rețele Neurale Convoluționale. De asemenea, folosește un model pre-antrenat, fapt pentru care este mai rapid în comparație cu ceilalți algoritmi.
Algoritmul MOSSE este bazat pe filtre MOSSE (Minimum Output Sum of Squared Error), care produce filtre stabile de corelație când este inițializat cu un singur cadru. Acesta este un algoritm puțin sensibil la variațiile de iluminare, scală, poziție, și poate procesa până la aproximativ 700 cadre pe secunde.
Este dificil de realizat o comparație complexă și obiectivă [Peter Janku] a algoritmilor prezentați anterior, din cauza diferitelor situații în care aceștia pot fi utilizați. De asemenea, algoritmii de urmărire sunt dezvoltați pentru a depăși diferite probleme întâlnite: unii funcționează mai bine în situația în care obiectul țintă se rotește, alții fac față mai bine schimbărilor condițiilor de iluminare, sau mișcărilor bruște ale camerei web. Uneori, inițializarea trackerului eșuează, ori ținta este pierdută în timpul rulării algoritmului. Acest lucru face ca pentru o comparație cât mai realistă, să fie nevoie de un set foarte mare de date.
Fig. 2.7 prezintă rezultatele unui studiu comparativ al acestor algoritmi.
Fig. 2.7 – Rezultatele comparației algoritmilor de urmărire
Sursa: [???]
Algoritmii MIL si BOOSTING au avut cele mai bune rezultate, aceștia fiind reactualizați pe parcursul videoclipului cu imaginea obiectului țintă
2.3 Selectarea regiunii de interes
Algoritmii de procesare a imaginilor sunt destinați detecției și localizării unor trăsături specifice dintr-o imagine digitală. Multe aplicații de supraveghere și recunoaștere funcționează pe baza detecției unor potențiale obiective, denumite și regiuni de interes (ROI – Region of Interest) în imaginile digitale. Aceste regiuni pot fi apoi utilizate pentru a solicita automat acțiuni suplimentare sau intervenții. De asemenea, poate fi necesară o analiză ulterioară a acestora, pentru identificarea și recunoașterea obiectului țintă.
A fost studiată problema utilizării regiunilor de interes pentru a crește eficiența transmisiei de imagini/video pe canale ce au lățime de bandă limitată. De exemplu, imaginile prin satelit pot fi utilizate pentru a investiga și supraveghea zboruri. Există și situații în care, din motive de eficiență, se dorește transmiterea unei imagini ce conține numai zona de interes, și nu întregul cadru. Un astfel de exemplu este prezentat în Fig. 2.8. Diferite aplicații pot beneficia puternic de distribuția inegală de resurse (biți, protecția la eroare, rezoluție etc.) pe diferite regiuni de imagine. De exemplu, imaginile pot fi transmise prin atribuirea unei priorități mai mari pachetelor care acoperă o regiune considerată a necesita o rezistență mai mare la erorile de transmisiune cauzate de o rețea cu zgomot. De asemenea, în cazul codării cu o rată de compresie scăzută (videoconferințe pe telefoanele mobile), este importantă codificarea anumitor zone de imagine (de exemplu fețe) cu fidelitate mai mare decât altele.
Fig. 2.7 – Selecția regiunii de interes, Sursa: [Yiran Ding, Unsplash]
În lucrarea selecția regiunii de interes pe baza algoritmilor de procesare a imaginilor este comparată cu selecția naturală a acesteia, de către observator. Studiile psihologice au arătat că oamenii detectează regiuni de interes înainte de a face orice prelucrare a informației vizuale. Prin mișcările globului ocular, atenția vizuală este focusată asupra anumitor părți ale unei imagini, ce trebuie fixate și mai apoi analizate cu o atenție sporită. Autorii au arătat că, în general, oamenii privesc aceleași regiuni ale unei imagini. De obicei, la vizualizarea unui cadru nou, au loc aproximativ trei fixări diferite pe secundă, intercalate cu mișcări ale ochilor. Pentru recunoașterea unui cadru vizual complex, creierul are nevoie de câteva astfel de fixări, regiunile respective fiind ulterior procesate în detaliu. Cercetătorii au arătat, de asemenea, că algoritmii computerizați ar putea fi concepuți pentru a găsi regiuni de interes similare cu cele determinate de oameni.
Conținutul informațional al unei imagini este înglobat în valorile anumitor parametri, ce sunt stabilite în urma aplicării algoritmilor de procesare a imaginilor. Aplicarea unui algoritm de procesare a imaginilor înseamnă reprezentarea pixelilor imaginii într-un anumit interval de valori, într-un mod caracteristic algoritmului aplicat. Astfel, se generează maxime locale specifice, iar după aplicarea unei proceduri de grupare, setul de maxime locale este redus la un subset de regiuni de interes generate după procesarea imaginii.
Identificarea regiunii de interes a fost studiată de-a lungul anilor atât pe baza caracteristicilor, cât și folosind obiecte. În ceea ce privește utilizarea unor caracteristici, această metodă constă în identificarea pixelilor ce au trăsături similare cu ținta stabilită, și agregarea acestor pixeli pentru a defini regiunea de interes. Însă din cauza faptului că nu toți pixelii au caracteristici optice semnificative, uneori regiunile de interes nu sunt identificate corespunzător. Intervine și inabilitatea de a distinge țintele, ceea ce poate cauza confuzie în anumite stagii de procesare. În ceea ce privește abordarea bazată pe obiecte, aceasta utilizează informații precum forma și dimensiunea țintei, astfel că detecția regiunii de interes se face la un nivel mai performant decât prin metoda prelucrării fiecărui pixel în parte. Ambele metode sunt însă limitate atunci când sunt implementate pe imagini de o calitate scăzută.
Capitolul 3. Metoda experimentală
În timpul bătăilor inimii, sângele este pompat în întregul corp, provocând variații ale culorii pielii. Aceste schimbări nu pot fi observate cu ochiul liber, însă pot fi detectate pe baza prelucrării videoclipurilor. Pentru a implementa algoritmii de procesare a imaginilor, este necesară alegerea unei regiuni de interes, relevantă pentru observarea modului în care pixelii din zona selectată își modifică intensitatea. Prin calculul valorii medii a intensității acestor pixeli pentru fiecare cadru, prelucrarea datelor obținute și extragerea frecvenței la care apare valoarea maximă în urma procesării mediilor, se poate afla frecvența bătăilor inimii.
3.1 Descrierea algoritmului
Schema logică a algoritmului este ilustrată în Fig. 3.1.
Pentru fiecare cadru preluat de la camera web, se va decide în primul rând dacă se aplică detecția de fețe (FD – Face Detection) sau urmărirea de fețe (FT – Face Tracking):
se aplică FD dacă se procesează primul cadru preluat de la camera web sau dacă a trecut un anumit timp de la ultimul FD aplicat. Apoi se identifică toate fețele din imagine și se va hotărî, pentru fiecare dintre acestea, dacă a fost întâlnită și la detecția aplicată anterior. Dacă o față a mai fost întâlnită, va avea loc actualizarea parametrilor acesteia (ex. momentul de timp la care fața a fost găsită ultima dată, dreptunghiul corespunzător). Dacă fața este una nouă, se va crea o persoană nouă. De asemenea, odată cu aplicarea FD are loc și inițializarea algoritmului de urmărire, care va fi aplicat începând cu următorul cadru.
dacă trebuie aplicat FT, are loc actualizarea trackerului și a parametrilor corespunzători, cum ar fi momentul de timp la care fața a fost reactualizată.
Următorul pas este eliminarea persoanelor care au ieșit din cadru, numite în această lucrare „persoane istorice”. O persoană este considerată istorică dacă în urma aplicării algoritmului de urmărire sau detecție, actualizarea feței nu a mai avut loc cu succes de un anumit timp. De aceea, după fiecare FD sau FT încheiat cu succes, se salvează momentul de timp corespunzător, și se face apoi diferența de timp pentru fiecare cadru ce urmează. Dacă următoarele cadre se încheie cu o detecție/urmărire, se actualizează variabila cu noul moment de timp. Altfel, dacă persoana nu mai este gasită iar diferența de timp dintre cadrul curent și ultimul cadru este mai mare decât un prag prestabilit, persoana este eliminată. Pentru persoanele din cadru, se va afișa valoarea pulsului.
Fig. 3.2 – Schema logică a algoritmului
Pentru a ușura modul de lucru în timpul dezvoltării aplicației, am folosit un fișier de configurare. Astfel, se stabilesc mult mai ușor diferite setări, precum: numărul de secunde după care o față este considerată „istorică”, ce algoritm de urmărire se folosește, dacă o funcție trebuie sau nu executată în timpul experimentărilor, etc.
Detecția și urmărirea fețelor
Programul dezvoltat procesează imaginile primite de la camera web, din fiecare cadru fiind extrase informațiile de interes. În această lucrare, scopul principal nu este implementarea detectorului de fețe. Din acest motiv, nu am ales cea mai bună metodă curentă, ci una care este ușor accesibilă și cunoscută ca fiind deja implementată și pe alte platforme. Detecția de fețe (FD – Face Detection) a fost implementată folosind Cascadele Haar. Pentru obținerea zonei de interes, pot fi implementate două variante:
Aplicarea algoritmului pentru detecție de fețe pentru fiecare cadru.
Aplicarea algoritmului pentru detecție de fețe pentru primul cadru, iar în continuare (pentru următoarele „N-1” cadre), urmărirea feței detectate.
Cea de-a doua variantă este mai puțin costisitoare și mai rapidă. Când este urmărit un obiect detectat în cadrul anterior, se știu detalii cu privire la aspectul obiectului. De asemenea, se știu locația din cadrul anterior, direcția și viteza mișcării sale. Cu toate acestea, se pot acumula erori și în algoritmul de urmărire, iar dreptunghiul de urmărire să se îndepărteze de obiect, cu fiecare cadru. De asemenea, dacă obiectul este acoperit de un obstacol pentru o perioadă mai îndelungată, sau dacă se mișcă prea repede, se poate pierde locația acestuia.
Am ales implementarea celei de-a doua variante, din două motive:
Urmărirea unei fețe este mult mai rapidă în comparație cu detecția de fețe. Realizarea detecției o dată la câteva cadre, și utilizarea unui algoritm de urmărire pentru restul cadrelor înseamnă o reducere semnificativă a timpului de procesare.
Implementarea urmăririi de fețe este necesară pentru a putea calcula pulsul pentru mai multe persoane simultan.
Astfel, am experimentat 6 algoritmi de urmărire disponibili în OpenCV (Fig. ):
BOOSTING
MIL (Multiple Instance Learning)
KCF (Kernelized Correlation Filters)
TLD (Tracking-Learning-Detection)
MEDIANFLOW
GOTURN
MOSSE
În Fig. 3.3 se observă experimentarea algoritmului KCF.
Fig. 3.3 – Experimentarea algoritmului KCF
Am realizat o comparație subiectivă a acestor algoritmi, prezentată în Tabelul 3.1, pentru care am rulat fiecare algoritm de urmărire pentru 30 de secunde. La experiment au participat 3 persoane, iar pentru fiecare dintre algoritmi am apreciat stabilitatea și cât de bine este urmărită fiecare față. Pe baza experimentării am acordat calificative de la 1 (foarte slab) la 5 (foarte bine) pentru fiecare secțiune.
Tabelul 3.1 – Rezultatele experimentării algoritmilor de urmărire
Am decis ca în varianta finală să fie implementat algoritmul MOSSE….
3.3 Alegerea regiunii de interes
Regiunea de interes este o zonă a imaginii selectată pe criterii specifice, ce urmează să fie utilizată în timpul procesărilor. Din motive ce țin de simplitatea și corectitudinea aplicării algoritmului, regiunea de interes va fi considerată în zona frunții. Pentru a observa variația culorii pielii, fruntea este cea mai indicată zonă deoarece oferă detaliat modificările întâlnite. Dimensiunile dreptunghiului ce delimitează această zonă sunt în raport cu dreptunghiul de detectare a feței, astfel încât dimensiunea ROI se schimbă în funcție de distanța dintre subiect și cameră web. Selectarea ROI poate fi observată în Fig. 3.4.
Fig. 3.4 – Selecția regiunii de interes în timpul experimentării
Următorul pas este calculul mediei pixelilor din regiunea de interes, pentru fiecare cadru. Fiecare valoare calculată va fi salvată într-un vector de dimensiune constantă, prestabilită. Am considerat lungimea vectorului ca fiind 250.
După rularea programului, funcția de măsurare a pulsului va fi apelată numai după ce au fost procesate minim 10 cadre, adică vectorul de medii are cel puțin 10 elemente. După câteva secunde, când vectorul ajunge să fie compus din 250 de elemente, se adaugă media corespunzătoare la sfârșitul vectorului pentru fiecare cadru nou, după care vectorul este reconsiderat ca fiind format numai din ultimele 250 elemente (primul element nu se mai ia în considerare).
După calcularea valorii medii a pixelilor din ROI, am comparat rezultatele obținute pentru persoanele care au o diferență vizibilă a culorii pielii, așa cum este prezentat în Tabelul 3.2. Testele au fost realizate în aceleași condiții pentru fiecare dintre persoanele implicate.
Tabelul 3.2 – Medii din ROI pentru ficare subiect participant
În Fig. 3.5 sunt prezentate Persoana 2 și Persoana 3 în timpul efectuării testelor. În timpul experimentului, s-a încercat pe cât posibil ca persoanele să stea nemișcate, la aceeași distanță de camera web și să dispună de aceleași condiții de iluminare. Toate experimentele au fost realizate ziua, singura sursă de lumină fiind lumina soarelui. Subiecții nu au purtat machiaj și nici unul dintre ei nu suferă de vreo afecțiune a pielii.
Fig. 3.5 – Persoana 2 și Persoana 3 în timpul testelor
3.4 Procesarea semnalului
Am început procesarea semnalului prin egalizarea de histogramă a cadrului primit de la camera web. Histograma unei imagini este distribuția nivelelor de gri ale acesteia (reprezentarea grafică a numărului de pixeli pentru fiecare intensitate considerată). Egalizarea histogramei este o modalitate de îmbunătățire a contrastului unei imagini, având ca scop obținerea unei histograme uniforme.
Următorul pas a fost aplicarea FFT (Fast Fourier Transform) pe vectorul format din ultimele „N” cadre ale semnalului obținut la punctul anterior. Pentru implementarea corectă a transformatei Fourier, a fost nevoie mai întâi de aplicarea ferestrei Hamming. Atunci când se aplică transformata Fourier finită, semnalul este „tăiat” la cele două capete, ceea ce înseamnă multiplicarea acestuia cu o fereastră dreptunghiulară. Dacă cele două capete ale semnalului nu corespund, în urma aplicării transformatei vor fi introduse zgomote de frecvență înaltă. Aplicarea ferestrei Hamming menține un semnal „neted”.
Frecvențele cardiace normale sunt între 35 și 195 bătăi pe minut, astfel că pentru evitarea citirilor eronate se poate aplica filtrarea frecvențelor. Pulsul corespunde unei frecvențe între 0,5 Hz și 3 Hz. Această gamă de frecvențe este departe de frecvența de 50 Hz sau 60 Hz a rețelei de alimentare, ceea ce înseamnă foarte puține șanse de interferență. Pe de altă parte, componenta continuă poate influența spectrul, dată fiind apropierea frecvenței cardiace de cea de 0 Hz. De asemenea, în timpul procesului, frecvența de eșantionare are efect numai asupra densității spectrale, deoarece algoritmul va funcționa la frecvența camerei web. Mai întâi este detectat maximul, evitând valoarea componentei de 0 Hz.
Capitolul 4 – Testare și detalii hardware
În timpul dezvoltării aplicației, s-au efectuat teste folosind laptop HP ProBook 470 G4, ce dispune de:
Procesor: Intel (R) Core ™ i5-7200U, CPU @ 2.50 GHz.
RAM: 4 GB.
Cameră Web HD de 720p.
De asemenea, codul a fost rulat folosind și alte camere web, observându-se o diferență semnificativă a calității semnalului obținut.
Logitech C615 – camera permite înregistrarea de videoclipuri de rezoluție full HD, având autofocus și pentru cadre apropiate. Rezoluția este de 1920×1080 pixeli, și dispune de interfață USB 2.0.
Fig. 4.1- Camera web Logitech C615
Logitech BCC950 – camera are funcție de rotire video de până la 180 de grade și permite înregistrare video HD 1080 pixeli. De asemenea, rezoluția este de 1920×1080 pixeli, iar camera dispune de interfață USB 2.0.
Fig. 4.2 – Camera web Logitech BCC950
Capitolul 5. Validarea Rezultatelor
Testele HR au fost efectuate mai târziu în paralel cu mai mult dispozitive de măsurare a pulsului, pentru a verifica precizia măsurătorilor. S-au detectat erori de ~ 3%, dar este destul de greu de calculat eroarea reală, din cauza faptului că și aceste dispozitive prezintă anumite erori de măsurare a pulsului. Testele au fost făcute pe nuanțe diferite de piele, subiecții fiind atât de origine europeană și chineză, dar și două persoane ce provin din subcontinentul indian. Nu au fost descoperite diferențe semnificative în ceea ce privește precizia măsurătorilor.
Ambiotex este un tricou inteligent cu senzori încorporați care înregistrează informații și parametri vitali, cum ar fi pulsul, respirația, variația ritmului cardiac (HRV), consumul de calorii și activitatea fizică, toate în timp real. Compania este specializată în cercetarea și dezvoltarea de produse inovatoare de fitness, stil de viață și produse de sănătate.
Fitbit Alta HR este considerat a fi cel mai bun produs Fitbit, masurând pulsul în mod continuu.
sdsdsdsss
Tabelul II prezintă intervalele de puls detectate și erorile întâlnite pentru fiecare dintre acestea. Fiecare eroare a fost calculată folosind valoarea medie a rezultatelor obținute cu Ambiotex HR și Fitbit Alta HR.
Capitolul 6. Studiul particularităților soluției mobile
În prezent, există algoritmi de măsurare a pulsului pentru care a fost implementată o soluție mobilă.
O astfel de metodă a fost dezvoltată de compania FotoNation Limited. A fost propusă o abordare ce îmbunătățește performanțele procesării imaginilor pe dispozitivele mobile, precum și acuratețea detecției și urmăririi de fețe.
Autorii descriu implementarea detecției de fețe ținându-se cont de nivelul de încredere acumulat, ceea ce determină probabilitatea ca o față să fie prezentă într-o anumită sub-fereastră a imaginii. În situația în care valoarea probabilității depășește o valoare de prag prestabilită, este confirmată prezența unei fețe în zona procesată a imaginii. De asemenea, se descrie obținerea unor locații cu șanse mari să reprezinte o față, prin aplicarea algoritmului de detecție pe o hartă a pielii din imagine. Pentru aceasta, este mai întâi necesară implementarea unui detector de piele.
Concluzii
Monitorizarea valorii pulsului este esențială, deoarece variațiile neobișnuite ale acestuia ajută la stabilirea unui diagnostic. Dintre toate metodele de măsurare a pulsului, cele ce nu necesită contactul cu pielea pacientului sunt considerate de viitor atât în viața de zi cu zi, cât și în ceea ce privește integrarea acestora în aplicații de IoT.
Metoda pe care am prezentat-o în această lucrare rezolvă problema monitorizării pulsului pentru mai multe persoane simultan și face ca implementarea pe dipozitivele mobile să devină fezabilă. Folosind aceasta metodă, a fost măsurat pulsul pentru maxim 4 persoane. De asemenea, algoritmul necesită un timp redus de procesare, datorită implementării detecției de fețe în conjuncție cu urmărirea de obiecte.
This article represents a good proof of concept for this
method, but there are areas which remain unexplored. For the
future, we propose to study the influence of camera quality to
the number of faces that can be detected and to the maximum
distance between the camera and the subject. Also, we
envision to implement the HR measuring algorithm on
different platforms, such as Android and Raspberry Pi. This is
in order to develop tracking of multiple persons and their HR,
over multiple cameras.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Detecția pulsului folosind procesarea de imagini [307990] (ID: 307990)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
