Cuprins:

Sonerie cu recunoaștere a feței: 7 pași (cu imagini)
Sonerie cu recunoaștere a feței: 7 pași (cu imagini)

Video: Sonerie cu recunoaștere a feței: 7 pași (cu imagini)

Video: Sonerie cu recunoaștere a feței: 7 pași (cu imagini)
Video: Sunetul care te va speria fara sa-ti dai seama 2024, Iulie
Anonim
Sonerie cu recunoaștere a feței
Sonerie cu recunoaștere a feței

Motivație

Recent, în țara mea a existat un val de jafuri care se adresează persoanelor vârstnice din propriile case. De obicei, accesul este acordat chiar de ocupanți, deoarece vizitatorii îi conving că sunt îngrijitori / asistenți medicali. Este doar dincolo de cuvinte, cât de furios și de trist mă fac să mă simt aceste povești. Acasă ar trebui să fie primul tău refugiu sigur și cu atât mai mult dacă ești deja într-o poziție vulnerabilă când ești afară. Având în vedere acest lucru, am început acest proiect.

Informații generale

Sistemul de sonerie este conceput în principal pentru persoanele în vârstă sau cu deficiențe de vedere și este destul de simplu în funcționarea sa. Pe scurt, comutatorul soneriei declanșează camera pentru a obține imagini. Apoi, fețele din imagini sunt detectate și potrivite cu o listă albă și o listă neagră. Ocupantul primește feedback vizual clar printr-un afișaj clar al semaforului. Prin prezenta, lumina verde, galbenă sau roșie indică faptul că persoana (persoanele) se află pe lista albă, necunoscută sistemului sau respectiv pe lista neagră. Dacă se declanșează lumina galbenă sau roșie, fotografia este trimisă de un bot Telegram pentru a informa / avertiza o rudă sau un îngrijitor.

Nivelul de expertiză

Proiectul a fost creat pentru entuziaștii care sunt deosebit de curioși cu privire la utilizarea viziunii pe computer și a inteligenței artificiale. Acest instructiv este scris pentru un public de începători, așa că nu vă faceți griji dacă nu aveți experiență! În plus, proiectul poate fi interesant și pentru producătorii mai experimentați, deoarece conducta este organizată într-un mod în care îl puteți extinde cu propria dvs. viziune pe computer și idei de recunoaștere a feței fără prea multe probleme.

Pasul 1: Materiale

Materiale
Materiale

Lista de produse cu cerințe minime:

Produs Legătură cometariu
Raspberry Pi 3b RPi Link arată RPi 4, deoarece are o performanță mult mai bună și un preț aproape egal cu RPi 3b.
Micro SD Amazon Un card micro SD de 16 GB sau mai mare va face treaba. Dar cardurile de 16 GB de pe Amazon au acum aproape același preț ca și cardurile de 32 GB.
Camera Raspberry Pi Amazon Camera v1 este mai ieftină, dar v2 este mai bună și va fi acceptată mai mult.
Cablu flexibil 15 pini FPC Amazon Lungimea depinde de fapt de circumstanțele realizării acestui proiect. Dacă doriți doar să construiți un prototip, cablul flex original va face treaba.
Sursa de alimentare 5v micro usb Adafruit Acesta nu l-a dezamăgit niciodată! Calitate excelentă. (Nu pe fotografie)
Butoane arcade cu LED încorporat Amazon Alegeți dimensiunea dorită, dar designul CAD se bazează pe butoane de 60 mm
Rezistențe Amazon Ai nevoie doar de câteva rezistențe de 1k și 100 ohmi. 1 / 4W obișnuite sunt bine.
Condensatoare 0,1 uF Amazon Sunt necesari trei condensatori. (Nu pe fotografie)
Sârme jumper / cablu panglică AmazonAmazon Dacă doriți să vă economisiți câțiva dolari, puteți utiliza și un vechi cablu ribbon pentru unitate floppy (a se vedea fotografia).
Tub de micșorare / bandă electrică AmazonAmazon

Instrumente necesare:

Instrument Esenţial? cometariu
Ciocan de lipit da
Multimetru da
Dispozitiv de sârmă da Sau puteți folosi un cuțit / foarfece.
Cutter cu laser Nu
imprimantă 3d Nu
Cleme Nu Util pentru menținerea cutiei la un loc în faza de testare.

Observații:

Pentru a crește accesibilitatea proiectului, am decis să-l dezvolt cu ajutorul unui Raspberry Pi 3b. Deși crește accesibilitatea, scade capacitățile aplicației, deoarece RPi nu sunt atât de rapide. Dacă sunteți în căutarea unui singur computer de bord mai rapid, vă recomandăm să aruncați o privire la NVIDIA Jetson Nano

Pasul 2: Cablare

Cablare
Cablare
Cablare
Cablare
Cablare
Cablare

Diagrama schematică este cea mai informativă pentru acest pas și este destul de explicativă. În cazul în care sunteți nou în domeniul electronicii, puteți utiliza imaginea legendei. Valoarea componentei (dacă este cazul) este indicată în diagrama schematică. Fotografiile pot ajuta să văd cum construiesc circuitul. Practic, am conectat toate componentele cât mai aproape de butonul arcade, ceea ce duce la o imagine de ansamblu clară a ceea ce se întâmplă.

Observații:

  • Îmi place foarte mult să folosesc conectori de cablu panglică, deoarece sunt mult mai solizi decât utilizarea firelor jumper.
  • După cum sa sugerat, am folosit un cablu panglică scavenged de pe un computer vechi. Acest lucru este un pic dificil, de vreme ce va trebui să afirmați manual configurația cablului. De exemplu, în acest proiect, am aflat că unele găuri erau conectate între ele (probabil folosite ca pământ pentru aplicația originală). Prin urmare, a trebuit să obțin un cablu diferit mai târziu, după cum puteți vedea pe imagini.

Pasul 3: Construirea carcasei

Construirea carcasei
Construirea carcasei
Construirea carcasei
Construirea carcasei
Construirea carcasei
Construirea carcasei
Construirea carcasei
Construirea carcasei

Carcasa camerei

Multe carcase pentru camera foto pot fi descărcate gratuit de pe internet. Așadar, aleg să nu reinventez roata și să aleg o carcasă de bază, dar drăguță de pe internet: thingiverse.com - carcasă / carcasă Raspberry pi. (Strigă către designerul VGer.)

Carcasa semaforului

Pentru carcasa semaforului, am proiectat o cutie mică în Autodesk Fusion 360 (care poate fi descărcată gratuit, consultați Observații) care se potrivește cu toate componentele hardware. În atașament, puteți găsi fișierul pe care l-am trimis companiei mele locale de tăiere cu laser. Prin prezenta, designul se bazează pe o grosime a plăcii de 6 mm. Cu toate acestea, dacă doriți să reglați lucrurile, puteți accesa tot felul de formate de fișiere utilizând acest link. După cum se arată în imagini, puteți utiliza și o cutie de carton dacă nu aveți acces la un dispozitiv de tăiat cu laser. Am folosit cutia de carton de pe imagine pentru prototipare și funcționează ca un farmec.

Ansamblul este destul de simplu:

  1. Montați comutatoarele Arcade.
  2. Asigurați-vă că păstrați firele pentru soneria liberă.
  3. Conectați cablul panglică la RPi.
  4. Înșurubați RPi pe panoul inferior.
  5. Conectați firele soneriei la un conector de sârmă și montați-l și pe panoul inferior.
  6. Conectați Picamera la RPi.
  7. Faceți o gaură într-unul dintre panourile laterale pentru firul de comutare al soneriei și firul de alimentare RPi.

Conectorul de sârmă este utilizat ca punct de montare pentru firele comutatorului soneriei, astfel încât să poată fi fixat ulterior la o sonerie existentă. Totul este acum la locul său și poate fi lipit împreună. Cu toate acestea, este posibil să doriți mai întâi să finalizați pașii următori, pentru a vă asigura că totul funcționează așa cum ar trebui să fie.

Observații:

Autodesk Fusion 360 este disponibil gratuit pentru pasionați! Dacă doriți să obțineți copia, vizitați acest link: autodesk.com - Fusion 360 For Hobbyists. Există câțiva termeni, deci asigurați-vă că le citiți și aplicați. A fost primul meu proiect cu Fusion 360 și nu am prea multă experiență în utilizarea software-ului CAD, dar trebuie să spun că îmi place foarte mult software-ul și toate instrumentele suplimentare care vin cu Fusion 360

Pasul 4: Configurarea camerei

Configurarea camerei
Configurarea camerei
Configurarea camerei
Configurarea camerei
Configurarea camerei
Configurarea camerei

Se presupune că aveți Raspbian instalat și că acesta rulează în modul GUI. Dacă nu aveți încă Raspbian instalat, puteți urma acest articol: raspberrypi.org - Instalarea imaginilor sistemului de operare. Dacă porniți Raspbian, ar trebui să vedeți un desktop așa cum se arată în imagini.

Să configurăm camera pe RPi și să vedem dacă funcționează! Metoda descrisă aici este direct din raspberrypi.org - Documentație. În primul rând, să actualizăm la cele mai recente pachete (inclusiv firmware-ul camerei) executând următoarele comenzi într-o fereastră a terminalului (vezi imagini):

actualizare sudo apt

sudo apt full-upgrade

Apoi, camera trebuie activată folosind următoarea comandă:

sudo raspi-config

În meniu, accesați 5. Opțiuni de interfață -> Cameră P1. Alegeți să activați camera și reporniți RPi executând:

reporniți

Camera ar trebui să fie acum configurată corect. Poate fi testat deschizând o fereastră de terminal și executând:

raspistill -v -o /home/pi/test.jpg

Imaginea este salvată în: / home / pi.

Pasul 5: Configurarea Docker

Configurarea Docker
Configurarea Docker
Configurarea Docker
Configurarea Docker
Configurarea Docker
Configurarea Docker
Configurarea Docker
Configurarea Docker

Pentru a evita dependența și erorile de instalare, am decis să construiesc o imagine Docker personalizată pentru acest proiect (vezi wikipedia.org - Docker). Dacă nu ați folosit niciodată sau nu ați auzit de Docker, nu vă faceți griji, vă voi explica pas cu pas cum să îl utilizați în acest proiect. De fapt, este foarte ușor! În cazul în care doriți să rulați acest proiect pe o instalare locală (în loc să fie într-un container Docker), vă voi oferi câteva sfaturi. Dar este foarte recomandat să utilizați imaginea Docker. La urma urmei, îl construiesc pentru a vă facilita derularea acestui proiect!

Ce este Docker?

Notă: această parte oferă câteva informații de fundal despre Docker, care pot fi omise dacă doriți doar să rulați codul.

Acest proiect este prima dată când am folosit Docker și este pur și simplu minunat! Poate ați auzit despre virtualenv sau Anaconda pentru Python? Ei bine, Docker este destul de similar în sensul că puteți gestiona cu ușurință versiunile de pachete și puteți rula diferite versiuni Python pe un sistem gazdă utilizând un mediu diferit (sau container așa cum se numește în Docker). Dar, în comparație cu virtualenv și Anaconda, Docker este mult mai puternic, deoarece nu este limitat să conțină doar pachete Python. Într-adevăr, într-un container Docker, puteți instala și gestiona și pachetele unui sistem de operare dorit. De exemplu, luați în considerare un site web pe care doriți să îl migrați, care rulează un cadru web Python (de exemplu, Django) cu o bază de date (de exemplu, MySQL). Fără un container Docker, ar trebui să instalați toate pachetele pe noul server, un proces foarte predispus la erori și erori. Pe de altă parte, când site-ul dvs. web a fost construit în Docker, migrarea este practic la fel de ușoară ca mutarea fișierului / fișierelor de imagine pe noul server și executarea acestuia / acestora. După cum vă puteți imagina, Docker este foarte util și pentru proiecte pe Instructables;)! Dacă doriți să aflați mai multe despre Docker, vizitați site-ul lor web: docker.org - Docker: Enterprise Container Platform. Acum, să ne ridicăm și să alergăm cu Docker!

Se instalează Docker

Instalați Docker executând:

curl -sSL https://get.docker.com | SH

Apoi, utilizatorul este adăugat la grupul de utilizatori „docker”, care oferă drepturile pentru a rula Docker. Acest lucru se face prin:

sudo usermod -aG docker $ USER

Acum, ar trebui să puteți rula Docker. Acest lucru poate fi validat executând imaginea Hello-World:

docker run hello-world

În cele din urmă, să tragem imaginea Docker care conține toate dependențele necesare pentru a rula scripturile Python de la sonerie. Acest proces ar putea dura ceva timp, deoarece imaginea este destul de mare (~ 1,5 GB). A executa:

docker pull erientes / sonerie

Notă: fișierul Docker poate fi găsit în depozitul soneriei de pe Github. Acum, totul este gata pentru a rula scripturile de la sonerie, care vor fi discutate în pasul următor.

Instalare locală

Din nou, aș recomanda cu tărie să folosiți imaginea Docker în locul unei instalări locale. Dar pentru a completa acest tutorial, voi descrie acum câțiva pași pe care i-am făcut pentru instalarea locală.

Pentru a putea rula codul, versiunea python ar trebui să fie> = 3.5 (am folosit python 3.5.3) și trebuie instalate următoarele pachete:

  • recunoaștere facială
  • picamera
  • neclintit
  • Pernă
  • python-telegram-bot
  • RPi. GPIO

Acest link este destul de util: Github - Instalați dlib și face_recognition pe un Raspberry Pi. Cu toate acestea, există câteva avertismente aici: 1) Pillow are nevoie de cel puțin Python 3.5, care nu va fi instalat urmând această metodă. 2) De asemenea, nu toate pachetele necesare în proiectul sonerie vor fi instalate urmând această metodă. Cu toate acestea, ar trebui să îl puteți instala pur și simplu utilizând pip3.

Pasul 6: Rularea Scripturilor Doorbell

Rularea Scripturilor Soneriei
Rularea Scripturilor Soneriei
Rularea Scripturilor Soneriei
Rularea Scripturilor Soneriei
Rularea Scripturilor Soneriei
Rularea Scripturilor Soneriei

Obțineți scripturile

Scripturile pot fi descărcate manual de pe: github.com - Erientes / sonerie. Sau dacă aveți Git instalat, executați:

git clone

Creați aliasuri

Acum, pentru a ne ușura viața, să creăm câteva aliasuri pentru a rula scripturile. A executa:

leafpad ~ /.bashrc

Adăugați următoarele rânduri și salvați fișierul:

alias doorbell_run = 'docker run --privileged -v / home / pi / doorbell: / doorbell -w / doorbell -it erientes / doorbell python $ 1'

alias doorbell_login = 'docker run --privileged -v / home / pi / doorbell: / doorbell -w / doorbell -it erientes / doorbell bash'

Testează scripturile

Pentru a testa dacă totul este instalat corect, deschideți un terminal nou și executați:

doorbell_run examples / 0_test_installation.py

Rezultatul ar trebui să fie pur și simplu un mesaj în fereastra terminalului care spune „Instalarea soneriei s-a încheiat cu succes!”. Pentru a testa dacă camera poate fi accesată de containerul Docker, rulați:

doorbell_run examples / 1_test_camera.py

Rulând 1_test_camera.py o fotografie va fi făcută și salvată ca „test.jpg”, care poate fi găsită în / home / pi / sonerie. În cele din urmă, driverele LED pot fi testate executând:

doorbell_run examples / 2_test_voicehat_drivers.py

Când acest script rulează, LED-ul din comutatorul arcade ar trebui să răspundă la apăsarea butonului.

Rularea scripturilor Doorbell

Pentru a rula scripturile Doorbell, mai întâi trebuie obținute acreditările pentru botul Telegram. Instalați Telegram pe telefon și accesați telegram.me - Botfather. Porniți o conversație și introduceți:

/ newbot

Completați un nume și un nume de utilizator pentru bot. După aceea, vi se va furniza jetonul de acces. Copiați această valoare în fișierul „credentials_telegram_template.py” din / home / pi / doorbell și salvați-l într-un fișier nou numit „credentials_telegram.py”. În cele din urmă, începeți o conversație cu botul pe care tocmai l-ați creat făcând clic pe linkul pe care vi-l oferă Botfather.

În cele din urmă, să rulăm clopoțelul cu recunoaștere facială:

doorbell_run main.py

Observații:

Dacă doriți să aflați mai multe despre modul în care funcționează codul, consultați comentariile din scripturi. Dacă aveți o întrebare despre cod, vă rugăm să mă contactați prin Github

Pasul 7: Utilizarea soneriei

Image
Image
Folosind clopoțelul
Folosind clopoțelul
Folosind clopoțelul
Folosind clopoțelul

Să rulăm scriptul soneriei executând:

doorbell_run main.py După încărcarea pachetelor, scripturile rămân inactive. În principiu, există două lucruri care se pot întâmpla:

  1. Cineva sună la sonerie.
  2. Cineva este adăugat la lista albă.

Cineva sună la sonerie

În acest caz, scriptul va începe să facă fotografii până când va realiza o fotografie în care este detectată o față. După detectare, sunt apelate unele metode din pachetul python „face_recognition” pentru a calcula o codificare 128 a feței. Apoi, codarea obținută este comparată cu codificările din whitelist.csv și blacklist.csv. Rezultatele posibile duc la următorul răspuns:

În lista albă? În lista neagră? Raspuns
da Nu Lumina verde se aprinde.
da da Lumina galbenă se aprinde. Camera sonerie trimite fotografii către botul Telegram cu pictogramă portocalie. Această stare se poate întâmpla dacă cineva a fost adăugat la ambele liste. De exemplu, când cineva a fost binevenit la început, dar a fost inclus pe lista neagră mai târziu.
Nu Nu Lumina galbenă se aprinde. Camera sonerie trimite fotografii către botul Telegram cu pictogramă portocalie.
Nu da Lumina roșie se aprinde. Camera sonerie trimite fotografii către botul Telegram cu pictogramă roșie.

Cineva este adăugat la lista albă

Pentru a adăuga pe cineva pe lista albă, apăsați butonul galben al semaforului când soneria este în stare de repaus. În primul rând, lumina galbenă se va aprinde. Dacă ledul verde clipește de 3 ori, fața persoanei este adăugată cu succes pe lista albă. Dacă ledul verde nu clipeste de 3 ori, încercarea nu a avut succes. În acest caz, apăsați din nou butonul galben. Puteți verifica cu ușurință dacă a avut succes sunând la sonerie și verificând dacă semaforul verde este trecut.

Cum se adaugă pe cineva pe lista neagră?

Evident, persoanele cu intenții rele nu vor trece pe acolo pentru a ne oferi o fotografie a feței lor. Deci, în schimb, puteți adăuga imagini cu persoane notorii pe care (de exemplu) poliția le-a publicat în folderul img / lista neagră. În fiecare oră, acest folder este verificat pentru imagini noi. Dacă există o imagine nouă, codificarea feței este calculată și adăugată la lista neagră.csv. Imaginea este apoi redenumită și mutată în folderul / img / lista neagră / codificată.

Observații:

  • Operarea scripturilor prin conectare la RPi oferă mult mai mult control și informații, dar controlul și informațiile de bază pot fi obținute doar folosind afișajul semaforului.
  • Recunoașterea feței este implementată utilizând pachetul python „face_recognition”. Acest pachet se bazează pe Dlib care conține un algoritm de recunoaștere a feței de ultimă generație, care realizează o precizie de 99,38% pe fața de referință etichetată în Wild (sursă: dlib.net - Recunoaștere a feței de înaltă calitate cu învățare profundă metrică).
Concurs de asistență tehnică
Concurs de asistență tehnică
Concurs de asistență tehnică
Concurs de asistență tehnică

Premiul I în cadrul concursului de asistență tehnică

Recomandat: