Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:cghenea:facial-recognition-locker [2021/05/30 20:34]
razvan.apetroaie
pm:prj2021:cghenea:facial-recognition-locker [2021/06/04 21:43] (current)
razvan.apetroaie
Line 4: Line 4:
  
 ===== Introducere ===== ===== Introducere =====
-  * Metodele tradiționale de a obține accesul sunt metode de tipul "​something you have" (descuierea ușii folosind o cheie) și "​something you know" (parola propriului cont). Scopul proiectului este implementarea unei metode "​something you are", mai exact recunoașterea facială, oferind accesul fără necesitatea de a memora sau a deține un obiect anume.+  * Metodele tradiționale de a obține accesul sunt metode de tipul "​something you have" (descuierea ușii folosind o cheie) și "​something you know" (parola propriului cont). Scopul proiectului este implementarea unei metode "​something you are", mai exact recunoașterea facială, oferind accesul fără necesitatea de a memora ​un cod sau a deține un obiect anume.
   * Proiectul își propune controlarea unei încuietori electrice pe baza capturilor realizate de o camera atașată și a rezultatului dat de un server extern în urma procesării imaginilor.   * Proiectul își propune controlarea unei încuietori electrice pe baza capturilor realizate de o camera atașată și a rezultatului dat de un server extern în urma procesării imaginilor.
  
 ===== Descriere generală ===== ===== Descriere generală =====
 Ansamblul va avea atașată o cameră VGA ce va realiza capturi la apăsarea butonului. Imaginile vor fi trimise la un server extern folosind un modul Ethernet, unde acestea vor avea rol de input pentru modelul de recunoaștere facială implementat,​ urmând că răspunsul să fie transmis plăcuței Arduino. Microcontrolerul va putea atunci să acționeze asupra incuietoarei prin intermediul unui releu.\\ Ansamblul va avea atașată o cameră VGA ce va realiza capturi la apăsarea butonului. Imaginile vor fi trimise la un server extern folosind un modul Ethernet, unde acestea vor avea rol de input pentru modelul de recunoaștere facială implementat,​ urmând că răspunsul să fie transmis plăcuței Arduino. Microcontrolerul va putea atunci să acționeze asupra incuietoarei prin intermediul unui releu.\\
-{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_diagram.jpg?​575x200}}+{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_diagram.jpg?​450x150}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 23: Line 23:
   * Conectori de pini   * Conectori de pini
   * Placă PCB de prototipare   * Placă PCB de prototipare
-{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_hardware.jpg?​300x200}}{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_front.jpg?​200x150}}{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_back.jpg?​200x150}}+{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_hardware.jpg?​300x200}}\\ 
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_front.jpg?​200x150}} 
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_back.jpg?​200x150}}
  
 ==== Schema electrică ==== ==== Schema electrică ====
Line 48: Line 50:
 În prima jumătate a execuției din [[https://​youtu.be/​h58WgDPylpk|demo]],​ s-au obținut imaginile (primele 5):\\ În prima jumătate a execuției din [[https://​youtu.be/​h58WgDPylpk|demo]],​ s-au obținut imaginile (primele 5):\\
 {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_photos.png?​250x200}}\\ {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2021/​cghenea/​face_recognition_locker_photos.png?​250x200}}\\
-Avand ca imagine de referinta ​ultima ​captura ​din set, programul a returnat valorile False, True, False, True, respectiv True, dupa care incuietoarea ​se deschide. Se observa ​o "​shiftare"​ sau decupare a pozelor (posibil un bug la sincronizare), ​insa din moment ce se realizeaza ​5 capturi iar "​shiftarea"​ pare uniforma, nu este afectat rezultatul final (cel putin intr-o imagine se gaseste fata intreaga). Dupa boot-are, primele 2-3 poze ies intotdeauna ​cu luminozitate ​crescutadupa care se stabilizeaza si restul pozelor au un rezultat normal, ​obtinandu-se o corectitudine ​consistenta.\\ +Având ​ca imagine de referință ​ultima ​captură ​din set, programul a returnat valorile False, True, True, True, respectiv True, după care încuietoarea ​se deschide. Se observă ​o "​shiftare"​ sau decupare a pozelor (posibil un bug la sincronizare), ​însă ​din moment ce se realizează ​5 capturi iar "​shiftarea"​ pare uniformă, nu este afectat rezultatul final (cel puțin într-o imagine se găsește fața întreagă). După boot-are, primele 2-3 poze ies întotdeauna ​cu luminozitate ​crescutădupă care se stabilizează și restul pozelor au un rezultat normal, ​obținându-se o corectitudine ​consistentă.\\ 
-In a doua jumatate ​a demo-ului, se testeaza ​cazul negativ prin capturarea unor imagini ce nu contin ​nicio fatasi prin urmare ​incuietoarea ​nu se deschide.+În a doua jumătate ​a demo-ului, se testează ​cazul negativ prin capturarea unor imagini ce nu conțin ​nicio fațăși prin urmare ​încuietoarea ​nu se deschide.
 ===== Concluzii ===== ===== Concluzii =====
-Utilizarea unei camere pe un Arduino Uno R3 este un bun exemplu de testare a limitelor acestui microcontroller. ​Atat numarul ​de pini cat si memoria SRAM au fost utilizate aproape la maxim, ​aducand dificultati in implementare pe partea de optimizare ​si remapare a pinilor. Au existat conflicte ​in utilizarea pinilor din moment ce shield-ul Ethernet ​necesita ​ca pinii 10-13 sa fie neutilizati, iar schema ​originala ​a camerei se folosea ​partial ​de acesti ​pini. +Utilizarea unei camere pe un Arduino Uno R3 este un bun exemplu de testare a limitelor acestui microcontroller. ​Atât numărul ​de pini cât și memoria SRAM au fost utilizate aproape la maxim, ​aducând dificultăți în implementare pe partea de optimizare ​și remapare a pinilor. Au existat conflicte ​în utilizarea pinilor din moment ce shield-ul Ethernet ​necesită ​ca pinii 10-13 să fie neutilizați, iar schema ​originală ​a camerei se folosea ​parțial ​de acești ​pini. Proiectul ​și-a atins scopul propus, ​însă ​ar putea fi îmbunătățit în câteva ​puncte ​în condiția în care se utilizează ​un microcontroller cu mai multe resurse: 
-Proiectul ​si-a atins scopul propus, ​insa ar putea fi imbunatatit in cateva ​puncte ​in conditia in care se utilizeaza ​un microcontroller cu mai multe resurse: +  * sistemul de lock are câteva vulnerabilități. Pentru a nu permite accesul unei persoane care deține ​poză cu proprietarul,​ serverul ar putea face autentificarea folosindu-se de mai multe poze în diverse ​poziții ​sau de o filmare. De asemenea, semnalul trimis pentru deschiderea incuietorii ar trebui ​să conțină ​măsură ​de securitate. ​În momentul de fațădacă un atacator se poate conecta la rețeaua locală și află adresa IP și portul microcontroller-ului,​ acesta poate trimite orice pachet UDP pentru descuiere 
-  * sistemul de lock are cateva vulnerabilitati. Pentru a nu permite accesul unei persoane care detine ​poza cu proprietarul,​ serverul ar putea face autentificarea folosindu-se de mai multe poze in diverse ​pozitii ​sau de o filmare. De asemenea, semnalul trimis pentru deschiderea incuietorii ar trebui ​sa contina ​masura ​de securitate. ​In momentul de fatadaca un atacator se poate conecta la reteaua locala si alfa adresa IP si portul microcontroller-ului,​ acesta poate trimite orice pachet UDP pentru descuiere +  * se pot adauga mai multe funcționalități, precum autentificarea printr-o ​parolă introdusă ​la numpad ​și configurarea dispozitivului folosind tastatura ​și un display LCD.
-  * se pot adauga mai multe functionalitati, precum autentificarea printr-o ​parola introdusa ​la numpad ​si configurarea dispozitivului folosind tastatura ​si un display LCD.+
 ===== Download ===== ===== Download =====
-[[https://​github.com/​aptrazvan/​FacialRecognitionLocker]]+[[https://​github.com/​aptrazvan/​FacialRecognitionLocker|Github - FacialRecognitionLocker]]
 ===== Jurnal ===== ===== Jurnal =====
-  * 25 Aprilie - Alegerea temei proiectului ​si crearea paginii de documentatie +  * 25 Aprilie - Alegerea temei proiectului ​și crearea paginii de documentație 
-  * 2-3 Mai - Testarea ​separata ​a componentelor ​exceptand ​camera +  * 2-3 Mai - Testarea ​separată ​a componentelor ​exceptând ​camera 
-  * 5-6 Mai - Acomodarea cu librariile ​de lucru si realizarea unui ansamblu de autentificare printr-o ​parola introdusa ​prin numpad +  * 5-6 Mai - Acomodarea cu librăriile ​de lucru și realizarea unui ansamblu de autentificare printr-o ​parolă introdusă ​prin numpad 
-  * 10-14 Mai - Procurarea unor materiale ​aditionale si documentarea pentru folosirea camerei pe Arduino+  * 10-14 Mai - Procurarea unor materiale ​adiționale și documentarea pentru folosirea camerei pe Arduino
   * 17 Mai - Testarea camerei   * 17 Mai - Testarea camerei
   * 20-22 Mai - Realizarea lipiturilor pentru conexiuni   * 20-22 Mai - Realizarea lipiturilor pentru conexiuni
-  * 23-25 Mai - Implementarea programului pentru ​placuta ​Arduino ​si a script-urilor de pe server +  * 23-25 Mai - Implementarea programului pentru ​plăcuța ​Arduino ​și a script-urilor de pe server 
-  * 26-28 Mai - Debugging ​si testare +  * 26-28 Mai - Debugging ​și testare 
-  * 30 Mai - Realizarea ​documentatiei+  * 30 Mai - Realizarea ​documentației
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
-Documentatie camera:\\+Documentație cameră:\\
 [[https://​www.instructables.com/​OV7670-Arduino-Camera-Sensor-Module-Framecapture-T/​]]\\ [[https://​www.instructables.com/​OV7670-Arduino-Camera-Sensor-Module-Framecapture-T/​]]\\
 [[https://​circuitdigest.com/​microcontroller-projects/​how-to-use-ov7670-camera-module-with-arduino]]\\ [[https://​circuitdigest.com/​microcontroller-projects/​how-to-use-ov7670-camera-module-with-arduino]]\\
 [[https://​github.com/​ComputerNerd/​ov7670-no-ram-arduino-uno]]\\ [[https://​github.com/​ComputerNerd/​ov7670-no-ram-arduino-uno]]\\
-[[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P Datasheet]]+[[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P Datasheet]]\\
 [[https://​www.arduino.cc/​reference/​en/​language/​variables/​utilities/​progmem/​|PROGMEM]]\\ [[https://​www.arduino.cc/​reference/​en/​language/​variables/​utilities/​progmem/​|PROGMEM]]\\
 [[https://​www.arduino.cc/​en/​Reference/​Ethernet|Arduino Ethernet]]\\ [[https://​www.arduino.cc/​en/​Reference/​Ethernet|Arduino Ethernet]]\\
-[[https://​pypi.org/​project/​face-recognition/​|Libraria ​Python face_recognition]]\\ +[[https://​pypi.org/​project/​face-recognition/​|Librăria ​Python face_recognition]]\\ 
-[[https://​linuxhint.com/​send_receive_udp_python/​|Model client-server ​in Python]]\\ +[[https://​linuxhint.com/​send_receive_udp_python/​|Model client-server ​în Python]]\\ 
-[[https://​en.wikipedia.org/​wiki/​BMP_file_format|Formatul BMP]]//+[[https://​en.wikipedia.org/​wiki/​BMP_file_format|Formatul BMP]]\\
 [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​cghenea/​facial-recognition-locker?​do=export_pdf|PDF]] [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​cghenea/​facial-recognition-locker?​do=export_pdf|PDF]]
pm/prj2021/cghenea/facial-recognition-locker.1622396094.txt.gz · Last modified: 2021/05/30 20:34 by razvan.apetroaie
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0