Sadržaj:
- Korak 1: Materijali
- Korak 2: Ožičenje
- Korak 3: Izrada kućišta
- Korak 4: Konfiguriranje kamere
- Korak 5: Postavljanje Dockera
- Korak 6: Pokretanje skripti zvona na vratima
- Korak 7: Upotreba zvona na vratima
Video: Zvono na vratima sa prepoznavanjem lica: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Motivacija
Nedavno je u mojoj zemlji došlo do talasa pljački koje su usmjerene na starije osobe u njihovim domovima. Obično pristup odobravaju sami stanari jer ih posjetitelji uvjeravaju da su oni njegovatelji/medicinske sestre. Nema više riječi, koliko se ljute i tužne osjećam zbog ovih priča. Dom bi trebao biti vaše prvo sigurno utočište, a još više ako ste već u ranjivom položaju dok ste vani. Imajući ovo na umu, započeo sam ovaj projekat.
Opće informacije
Sistem zvona na vratima je uglavnom dizajniran za starije osobe ili osobe sa oštećenim vidom i prilično je jednostavan u svom radu. Ukratko, prekidač za zvono na vratima pokreće kameru da dobije snimke. Zatim se lica na snimcima otkriju i uparuju s bijelom i crnom listom. Putnik dobija jasne vizuelne povratne informacije jasnim prikazom na semaforu. Ovim, zeleno, žuto ili crveno svjetlo označava da su osobe na bijeloj listi, nepoznate sistemu, odnosno na crnoj listi. Ako se upali žuto ili crveno svjetlo, fotografiju šalje telegram bot kako bi obavijestio/upozorio rođaka ili čuvara.
Nivo stručnosti
Projekt je postavljen za entuzijaste koji su posebno znatiželjni u korištenju računarskog vida i umjetne inteligencije. Ovo uputstvo je napisano za publiku početnike, stoga ne brinite ako nemate iskustva! Nadalje, projekt može biti zanimljiv i iskusnijim proizvođačima jer je cjevovod organiziran na način da ga možete proširiti vlastitom računarskom vizijom i idejama za prepoznavanje lica bez mnogo muke.
Korak 1: Materijali
Lista proizvoda sa minimalnim zahtjevima:
Proizvod | Veza | Komentar |
---|---|---|
Raspberry Pi 3b | RPi | Link prikazuje RPi 4 jer ima bolje performanse i gotovo jednaku cijenu kao RPi 3b. |
Micro SD | Amazon | Mikro SD kartica od 16 GB ili veća odradit će posao. Ali kartice od 16 GB na Amazonu sada su prilično iste cijene kao i kartice od 32 GB. |
Raspberry Pi kamera | Amazon | Kamera v1 je jeftinija, ali v2 je bolja i bit će duže podržana. |
15 -polni FPC fleksibilni kabel | Amazon | Trajanje zapravo ovisi o okolnostima izvođenja ovog projekta. Ako samo želite izgraditi prototip, originalni fleksibilni kabel će obaviti posao. |
Napajanje 5v micro usb | Adafruit | Ovaj nikad nije iznevjerio! Odlična kvaliteta. (Nema na fotografiji) |
Arkadni tasteri sa ugrađenom LED diodom | Amazon | Odaberite željenu veličinu, ali CAD dizajn temelji se na gumbima od 60 mm |
Otpornici | Amazon | Trebate samo par otpornika od 1 k i 100 ohma. Obični 1/4W su u redu. |
Kondenzatori 0,1 uF | Amazon | Potrebna su tri kondenzatora. (Nema na fotografiji) |
Kratkospojne žice / vrpčni kabel | AmazonAmazon | Ako želite uštedjeti nešto novca, možete upotrijebiti i stari kabel s vrpcom za disketu (pogledajte fotografiju). |
Cijev za skupljanje / električna traka | AmazonAmazon |
Alati koji su potrebni:
Alat | Essential? | Komentar |
---|---|---|
Lemilica | Da | |
Multimetar | Da | |
Skidač žice | Da | Ili možete koristiti nož/škare. |
Laserski rezač | Ne | |
3D štampač | Ne | |
Stezaljke | Ne | Korisno za držanje kutije zajedno u fazi testiranja. |
Napomene:
Kako bih povećao pristupačnost projekta, odlučio sam ga razviti koristeći Raspberry Pi 3b. Iako povećava pristupačnost, smanjuje mogućnosti aplikacije jer RPi -ji nisu tako brzi. Ako tražite brži single board računar, trebali biste pogledati NVIDIA Jetson Nano
Korak 2: Ožičenje
Shematski dijagram je najinformativniji za ovaj korak i prilično je razumljiv. U slučaju da ste tek počeli s elektronikom, možete upotrijebiti legendarnu sliku. Vrijednost komponente (ako postoji) navedena je u shematskom dijagramu. Fotografije mogu pomoći da vidite kako ja gradim kolo. U osnovi, spojio sam sve komponente što je moguće bliže arkadnom gumbu što rezultira jasnim pregledom onoga što se događa.
Napomene:
- Zaista volim koristiti konektore za vrpčane kabele, jer su oni mnogo čvršći od upotrebe jednostrukih žica.
- Kao što je predloženo, koristio sam očišćen ribbon kabel sa starog računara. Ovo je ipak malo nezgodno jer ćete morati ručno potvrditi konfiguraciju kabela. Na primjer, u ovom projektu sam otkrio da su neke rupe međusobno povezane (vjerovatno se koriste kao podloga za originalnu aplikaciju). Stoga sam kasnije morao nabaviti drugi kabel kao što možete vidjeti na slikama.
Korak 3: Izrada kućišta
Kućište kamere
Mnoga kućišta za pikameru mogu se slobodno preuzeti s interneta. Odlučio sam ne izmišljati kotač i odabirem osnovno, ali lijepo kućište s interneta: thingiverse.com - Raspberry pi kućište/kućište kamere. (Poziv dizajneru VGeru.)
Kućište semafora
Za kućište semafora dizajnirao sam malu kutiju u Autodesk Fusion 360 (koja se može besplatno preuzeti, vidi Napomene) koja odgovara cijelom hardveru. U prilogu možete pronaći datoteku koju sam poslao svojoj lokalnoj kompaniji za lasersko rezanje. Ovim se dizajn temelji na debljini ploče od 6 mm. Međutim, ako želite prilagoditi stvari, možete pristupiti svim vrstama formata datoteka pomoću ove veze. Kao što je prikazano na slikama, možete koristiti i kartonsku kutiju ako nemate pristup laserskom rezaču. Koristio sam kartonsku kutiju na slici za izradu prototipa i radi kao šarm.
Sastavljanje je prilično jednostavno:
- Montirajte arkadne prekidače.
- Pazite da žice za zvono na vratima ne budu slobodne.
- Spojite vrpčani kabel na RPi.
- Pričvrstite RPi na donju ploču.
- Priključite žice zvona na vrata u žičani konektor i montirajte ih na donju ploču.
- Priključite Picameru na RPi.
- Izbušite rupu na jednoj od bočnih ploča za žicu za uključivanje zvona na vratima i žicu za napajanje RPi.
Žičani konektor koristi se kao mjesto za pričvršćivanje žica prekidača zvona na vratima, tako da se kasnije može pričvrstiti na postojeće zvono. Sve je sada na svom mjestu i može se zalijepiti. Međutim, možda biste htjeli dovršiti sljedeće korake kako biste bili sigurni da sve funkcionira onako kako bi trebalo biti.
Napomene:
Autodesk Fusion 360 je besplatno dostupan za ljubitelje! Ako želite dobiti svoj primjerak, posjetite ovu vezu: autodesk.com - Fusion 360 For Hobbyists. Postoje neki pojmovi pa ih svakako pročitajte i primijenite. To je bio moj prvi projekt s Fusion 360 i nemam puno iskustva u korištenju CAD softvera, ali moram reći da mi se softver i svi dodatni alati koji dolaze s Fusion 360 jako sviđaju
Korak 4: Konfiguriranje kamere
Pretpostavlja se da imate instaliran Raspbian i da radi u GUI načinu rada. Ako još niste instalirali Raspbian, možete slijediti ovaj članak: raspberrypi.org - Instaliranje slika operativnog sistema. Ako pokrenete Raspbian, trebali biste vidjeti radnu površinu kao što je prikazano na slikama.
Postavimo kameru na RPi i vidimo radi li! Ovdje opisana metoda izravno je iz raspberrypi.org - Dokumentacija. Prvo, ažurirajmo na najnovije pakete (uključujući firmver kamere) izvršavanjem sljedećih naredbi u prozoru terminala (pogledajte slike):
sudo apt update
sudo apt potpuna nadogradnja
Zatim kameru morate omogućiti pomoću sljedeće naredbe:
sudo raspi-config
U meniju idite na 5. Opcije povezivanja -> P1 kamera. Odaberite da omogućite kameru i ponovo pokrenete RPi izvršavanjem:
reboot
Kamera bi sada trebala biti pravilno konfigurirana. Može se testirati otvaranjem prozora terminala i izvršenjem:
raspistill -v -o /home/pi/test.jpg
Slika je sačuvana na: /home /pi.
Korak 5: Postavljanje Dockera
Kako bih izbjegao ovisnosti i greške pri instalaciji, odlučio sam izgraditi prilagođenu sliku Dockera za ovaj projekt (pogledajte wikipedia.org - Docker). Bez brige, ako nikada niste koristili ili čuli za Docker, objasnit ću vam korak po korak kako ga koristiti u ovom projektu. Zapravo, super je jednostavno! U slučaju da želite pokrenuti ovaj projekt na lokalnoj instalaciji (umjesto u Docker kontejneru), dat ću vam nekoliko savjeta. Ali se toplo preporučuje upotreba slike Docker. Uostalom, ja sam ga izgradio kako bih vam olakšao vođenje ovog projekta!
Šta je Docker?
Napomena: ovaj dio pruža neke osnovne informacije o Dockeru, koje se mogu preskočiti ako samo želite pokrenuti kôd.
Ovaj projekt sam prvi put koristio Docker i jednostavno je fenomenalan! Možda ste čuli za virtualenv ili Anacondu za Python? Pa, Docker je prilično sličan u smislu da možete jednostavno upravljati verzijama paketa i pokretati različite verzije Pythona na jednom host sistemu koristeći različito okruženje (ili spremnik kako se to naziva u Dockeru). No, u usporedbi s virtualenv i Anacondom, Docker je znatno moćniji jer nije ograničen samo na sadržaje Python paketa. Zaista, u Docker kontejneru možete instalirati i upravljati i paketima željenog operativnog sistema. Na primjer, razmislite o web stranici koju želite migrirati koja pokreće Python web okvir (npr. Django) s bazom podataka (npr. MySQL). Bez Docker kontejnera morali biste instalirati sve pakete na novi server, proces koji je vrlo sklon greškama i greškama. S druge strane, kada je vaša web stranica izgrađena u Dockeru, migracija je u osnovi jednostavna kao i premještanje slikovne datoteke/datoteka na novi poslužitelj i njihovo pokretanje/pokretanje. Kao što možete zamisliti, Docker je vrlo koristan i za projekte na Instructables;)! Ako želite saznati više o Dockeru, posjetite njihovu web stranicu: docker.org - Docker: Enterprise Container Platform. Ajmo sad krenuti s radom s Dockerom!
Instaliranje Dockera
Instalirajte Docker izvršavanjem:
curl -sSL https://get.docker.com | sh
Zatim se korisnik dodaje u korisničku grupu 'docker', koja daje prava za pokretanje Dockera. To rade:
sudo usermod -aG docker $ USER
Sada biste trebali moći pokrenuti Docker. To se može potvrditi pokretanjem slike hello-world:
docker pokrenuti hello-world
Na kraju, povucimo Docker sliku koja sadrži sve zavisnosti potrebne za pokretanje Python skripti za zvono na vratima. Ovaj proces može potrajati jer je slika prilično velika (~ 1,5 GB). Izvršite:
docker pull erientes/zvono na vratima
Napomena: Dockerfile se može pronaći u spremištu zvona na vratima na Githubu. Sada je sve spremno za pokretanje skripti zvona na vratima, o čemu će biti riječi u sljedećem koraku.
Lokalna instalacija
Opet, toplo bih preporučio korištenje slike Dockera umjesto lokalne instalacije. No kako bi ovaj vodič bio dovršen, sada ću opisati neke korake koje sam poduzeo za lokalnu instalaciju.
Da biste mogli pokrenuti kôd, verzija pythona trebala bi biti> = 3.5 (koristio sam python 3.5.3) i potrebno je instalirati sljedeće pakete:
- face_recognition
- picamera
- numpy
- Jastuk
- python-telegram-bot
- RPi. GPIO
Ova veza je od velike pomoći: Github - Instalirajte dlib i face_recognition na Raspberry Pi. Međutim, ovdje postoje neke opaske: 1) Jastuku je potreban najmanje Python 3.5, koji neće biti instaliran na ovaj način. 2) Također, neće biti instalirani svi paketi koji su potrebni u projektu zvona na vratima slijedeći ovu metodu. Međutim, trebali biste ga moći instalirati jednostavnim korištenjem pip3.
Korak 6: Pokretanje skripti zvona na vratima
Preuzmite skripte
Skripte se mogu ručno preuzeti sa: github.com - Erientes/zvono na vratima. Ili, ako imate instaliran Git, izvedite:
git clone
Kreirajte pseudonime
Sada, kako bismo si olakšali život, napravimo neke pseudonime za pokretanje skripti. Izvršite:
leafpad ~/.bashrc
Dodajte sljedeće redove i spremite datoteku:
alias doorbell_run = 'docker run --privileged -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/python zvono na vratima $ 1'
alias doorbell_login = 'docker run --privileged -v/home/pi/doorbell:/zvono na vratima -w/zvono na vratima -to je erientes/zvono na vratima'
Test skripte
Da biste provjerili je li sve ispravno instalirano, otvorite novi terminal i izvedite:
doorbell_run examples/0_test_installation.py
Rezultat bi jednostavno trebala biti poruka u prozoru terminala koja kaže 'Instalacija zvona na vratima je uspješno završena!'. Da biste provjerili može li se kameri pristupiti iz Docker kontejnera, pokrenite:
primjer zvona na vratima/1_test_camera.py
Pokretanjem 1_test_camera.py fotografija će biti snimljena i sačuvana kao 'test.jpg', koju možete pronaći u/home/pi/zvonu na vratima. Na kraju, LED upravljački programi mogu se testirati izvršavanjem:
primjer zvona na vratima/2_test_voicehat_drivers.py
Kada je ova skripta aktivna, LED dioda u arkadnom prekidaču bi trebala reagirati kada se pritisne dugme.
Pokretanje skripti za zvono na vratima
Za pokretanje Doorbell skripti, prvo je potrebno pribaviti vjerodajnice za Telegram bota. Instalirajte Telegram na svom telefonu i idite na telegram.me - Botfather. Započnite razgovor i unesite:
/newbot
Unesite ime i korisničko ime za robota. Nakon toga će vam biti dodijeljen pristupni token. Kopirajte tu vrijednost u datoteku 'credentials_telegram_template.py' u/home/pi/doorbell i spremite je u novu datoteku pod nazivom 'credentials_telegram.py'. Na kraju, započnite razgovor s botom koji ste upravo stvorili klikom na vezu koju vam Botfather pruža.
Na kraju, pokrenimo zvono na vratima sa prepoznavanjem lica:
doorbell_run main.py
Napomene:
Ako želite saznati više o tome kako kod funkcionira, pogledajte komentare u samim skriptama. Ako imate pitanja u vezi koda, kontaktirajte me putem Github -a
Korak 7: Upotreba zvona na vratima
Pokrenimo skriptu zvona na vratima izvršavanjem:
doorbell_run main.py Nakon učitavanja paketa, skripte miruju. U osnovi se mogu dogoditi 2 stvari:
- Neko pozvoni na vrata.
- Neko je dodat na bijelu listu.
Neko pozvoni na vrata
U ovom slučaju, skripta će početi snimati fotografije sve dok ne snima fotografiju na kojoj se detektira lice. Nakon otkrivanja, pozivaju se neke metode iz python paketa 'face_recognition' za izračunavanje 128 kodiranja lica. Zatim se dobiveno kodiranje uspoređuje s kodiranjima na whitelist.csv i blacklist.csv. Mogući ishodi rezultiraju sljedećim odgovorom:
Na bijeloj listi? | Na crnoj listi? | Odgovor |
---|---|---|
Da | Ne | Uključuje se zeleno svjetlo. |
Da | Da | Uključuje se žuto svetlo. Kamera sa zvona na vratima šalje fotografije Telegram botu sa narandžastom ikonom. Ovo stanje se može dogoditi ako je neko dodan na obje liste. Na primjer, kada je neko isprva bio dobrodošao, a kasnije je stavljen na crnu listu. |
Ne | Ne | Uključuje se žuto svetlo. Kamera sa zvona na vratima šalje fotografije Telegram botu sa narandžastom ikonom. |
Ne | Da | Uključuje se crveno svjetlo. Kamera na vratima šalje fotografije Telegram botu sa crvenom ikonom. |
Neko je dodat na bijelu listu
Da biste nekoga dodali na bijelu listu, pritisnite žuto dugme semafora kada je zvono na vratima u stanju mirovanja. Prvo će se upaliti žuto svjetlo. Ako zeleno svjetlo trepne 3 puta, lice osobe je uspješno dodano na bijelu listu. Ako zeleno svjetlo ne trepne 3 puta, pokušaj nije bio uspješan. U tom slučaju ponovo pritisnite žuto dugme. Možete li lako provjeriti je li uspjelo tako što ćete pozvoniti na vrata i provjeriti je li zeleno svjetlo prošlo.
Kako dodati nekoga na crnu listu?
Očigledno, ljudi sa lošim namjerama neće proći da nam daju fotografiju svog lica. Umjesto toga, možete dodati slike ozloglašenih ljudi koje je (na primjer) policija objavila u mapi img/blacklist. Svaki sat se u ovoj mapi provjerava ima li novih slika. Ako postoji nova slika, kodiranje lica se izračunava i dodaje na blacklist.csv. Slika se zatim preimenuje i premješta u mapu/img/blacklist/encoded.
Napomene:
- Upravljanje skriptama prijavljivanjem u RPi pruža mnogo više kontrole i informacija, ali osnovne kontrole i informacije mogu se dobiti isključivo upotrebom prikaza na semaforu.
- Prepoznavanje lica implementirano je pomoću python paketa 'face_recognition'. Ovaj paket je zasnovan na Dlibu koji sadrži najsavremeniji algoritam za prepoznavanje lica, koji obavlja tačnost od 99,38% na referentnoj vrijednosti Labeled Faces in the Wild (izvor: dlib.net-Prepoznavanje lica visoke kvalitete s dubokim metričkim učenjem).
Prva nagrada na takmičenju Pomoćne tehnologije
Preporučuje se:
Nest Hello - Zvono na vratima sa integriranim transformatorom UK (220-240V AC - 16V AC): 7 koraka (sa slikama)
Nest Hello - Zvono na vratima sa integriranim transformatorom UK (220-240V AC - 16V AC): Htio sam kod kuće instalirati Nest Hello zvono na vratima, gizmo koji radi na 16V -24V AC (NAPOMENA: ažuriranje softvera u 2019. promijenilo je Evropu raspon verzija do 12V-24V AC). Standardni zvona za vrata sa integriranim transformatorima dostupni su u Velikoj Britaniji u
Zvono na vratima senzora pokreta: 5 koraka (sa slikama)
Zvono na vratima senzora pokreta: Kada sam svom sinu Jaydenu rekao za izazov, odmah je pomislio da iskoristi LEGO WeDo set. On se godinama igrao s Lego kockama, ali tek početkom prošle školske godine dobio je priliku kodirati s WeDo 2.0
Bežično zvono na vratima - (Raspberry PI i Amazon Dash): 4 koraka (sa slikama)
Bežično zvono na vratima - (Raspberry PI i Amazon Dash): Šta radi? (pogledajte video) Kad se pritisne dugme, Raspberry otkriva prijavu novog uređaja na bežičnoj mreži. Na ovaj način- može prepoznati pritisnuto dugme i proslijediti informacije o toj činjenici na vaš mobilni telefon (ili uređaj vašeg
Zvono na vratima hip hopa: 9 koraka (sa slikama)
Hip hop zvono na vratima: zvono na vratima s više uzoraka i gramofonom na koje možete zapravo ogrebati! Dakle, prije nekoliko godina nakon objave na Facebooku o ideji za zvono na vratima s zasebnim prstenovima za svaku osobu u mojoj kući, prijatelju bacio ideju da uključi
Nečujno zvono na vratima dugmeta Amazon Dash Button: 10 koraka (sa slikama)
Amazon Dash Button Tiho zvono na vratima: Stalno gledate kroz prozor kako biste mogli presresti posjetitelje prije nego što pozvone na vrata? Umorni ste od toga da psi i beba polude kad god zazvoni? Ne želite potrošiti bogatstvo na "pametnog" rešenje? Nečujno zvono na vratima je isto kao