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 s prepoznavanjem lica: 7 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
Motivacija
Nedavno je u mojoj zemlji došlo do vala 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ćaju u meni. 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. S tim na umu, započeo sam ovaj projekt.
Opće informacije
Sustav zvona na vratima uglavnom je namijenjen starijim osobama ili osobama s oštećenjem vida i prilično je jednostavan u svom radu. Ukratko, prekidač za zvono na vratima aktivira kameru za snimanje. Zatim se lica na snimci detektiraju i uspoređuju s bijelom i crnom listom. Putnik dobiva jasne vizualne povratne informacije jasnim prikazom na semaforu. Ovim, zeleno, žuto ili crveno svjetlo označava da su osobe na bijeloj listi, nepoznate sustavu, odnosno na crnoj listi. Ako se upali žuto ili crveno svjetlo, fotografiju šalje bot Telegrama kako bi obavijestio/upozorio rođaka ili skrbnika.
Razina stručnosti
Projekt je postavljen za entuzijaste koji su osobito znatiželjni u korištenju računalnog 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 budući da je cjevovod organiziran na način da ga možete proširiti vlastitom računalnom vizijom i idejama za prepoznavanje lica bez mnogo muke.
Korak 1: Materijali
Popis proizvoda s minimalnim zahtjevima:
Proizvod | Veza | Komentar |
---|---|---|
Malina Pi 3b | RPi | Link prikazuje RPi 4 jer ima bolje performanse i gotovo jednaku cijenu kao RPi 3b. |
Mikro SD | Amazon | Mikro SD kartica od 16 GB ili veća odradit će posao. No, kartice od 16 GB na Amazonu sada su prilično iste cijene kao i kartice od 32 GB. |
Fotoaparat Raspberry Pi | Amazon | Kamera v1 je jeftinija, ali v2 je bolja i bit će dulje podržana. |
15 -polni FPC fleksibilni kabel | Amazon | Duljina zapravo ovisi o okolnostima izvođenja ovog projekta. Ako samo želite izgraditi prototip, originalni fleksibilni kabel će odraditi posao. |
Napajanje 5v micro usb | Adafruit | Ovaj nikad nije iznevjerio! Izvrsna kvaliteta. (Nema na fotografiji) |
Arkadni gumbi s ugrađenom LED diodom | Amazon | Odaberite veličinu koju želite, ali CAD dizajn temelji se na gumbima od 60 mm |
Otpornici | Amazon | Trebate samo par otpornika 1k i 100 ohma. Redoviti 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 vrpčani kabel za disketu (pogledajte fotografiju). |
Cijev za skupljanje / električna traka | AmazonAmazon |
Potrebni alati:
Alat | Bitno? | Komentar |
---|---|---|
Lemilica | Da | |
Multimetar | Da | |
Skidač žice | Da | Ili možete koristiti nož/škare. |
Laserski rezač | Ne | |
3D pisač | Ne | |
Stezaljke | Ne | Korisno za držanje kutije zajedno u fazi testiranja. |
Opaske:
Kako bih povećao pristupačnost projekta, odlučio sam ga razviti pomoću Raspberry Pi 3b. Iako povećava pristupačnost, smanjuje mogućnosti aplikacije budući da RPi nisu tako brzi. Ako tražite brže računalo s jednim računalom, možda biste trebali pogledati NVIDIA Jetson Nano
Korak 2: Ožičenje
Shematski dijagram je najinformativniji za ovaj korak i vrlo je razumljiv. U slučaju da ste tek počeli s elektronikom, možete upotrijebiti sliku legende. Vrijednost komponente (ako postoji) navedena je u shematskom dijagramu. Fotografije mogu pomoći da vidite kako ja gradim krug. U osnovi, spojio sam sve komponente što je moguće bliže arkadnom gumbu što rezultira jasnim pregledom onoga što se događa.
Opaske:
- Zaista volim koristiti konektore za vrpčane kabele, jer su oni mnogo čvršći od korištenja jednostrukih kratkospojnika.
- Kao što je predloženo, koristio sam očišćeni vrpčani kabel sa starog računala. Ovo je ipak malo nezgodno jer ćete morati ručno potvrditi konfiguraciju kabela. U ovom sam projektu, na primjer, otkrio da su neke rupe međusobno povezane (vjerojatno korištene kao tlo za izvornu primjenu). 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. Stoga odlučujem 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 Autodesku Fusion 360 (koja se može slobodno preuzeti, vidi Napomene) koja odgovara cijelom hardveru. U privitku možete pronaći datoteku koju sam poslao svojoj lokalnoj tvrtki za lasersko rezanje. Ovime 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 također ih montirajte na donju ploču.
- Spojite 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 na vratima. Sada je sve 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.
Opaske:
Autodesk Fusion 360 slobodno je 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 operacijskog sustava. 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 (vidi slike):
sudo apt ažuriranje
sudo apt potpuna nadogradnja
Zatim kameru morate omogućiti pomoću sljedeće naredbe:
sudo raspi-config
U izborniku idite na 5. Opcije sučelja -> P1 kamera. Odaberite omogućiti kameru i ponovno pokrenuti RPi izvršavanjem:
ponovno podizanje sustava
Kamera bi sada trebala biti ispravno konfigurirana. Može se testirati otvaranjem terminala i izvršiti sljedeće:
raspistill -v -o /home/pi/test.jpg
Slika se sprema u: /home /pi.
Korak 5: Postavljanje Dockera
Kako bih izbjegao ovisnosti i pogreške pri instalaciji, odlučio sam izgraditi prilagođenu sliku Dockera za ovaj projekt (vidi wikipedia.org - Docker). Ako nikada niste koristili ili čuli za Docker, bez brige, 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 spremniku), dat ću vam nekoliko savjeta. No, vrlo se preporučuje upotreba slike Docker. Uostalom, ja sam ga izgradio kako bih vam olakšao vođenje ovog projekta!
Što 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 pomoću drugog okruženja (ili spremnika kako se to naziva u Dockeru). No, u usporedbi s virtualenvom i Anakondom, Docker je znatno moćniji jer nije ograničen samo na sadržaje Python paketa. Doista, u Docker spremniku možete instalirati i upravljati i paketima željenog operacijskog sustava. Na primjer, razmislite o web stranici koju želite migrirati koja pokreće Python web okvir (npr. Django) s bazom podataka (npr. MySQL). Bez Docker spremnika morali biste instalirati sve pakete na novi poslužitelj, proces koji je vrlo sklon pogreš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 sada pokrenuti se s Dockerom!
Instaliranje Dockera
Instalirajte Docker izvršavanjem:
curl -sSL https://get.docker.com | š
Zatim se korisnik dodaje u korisničku skupinu 'docker' koja daje prava za pokretanje Dockera. To čine:
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 sliku Dockera koja sadrži sve ovisnosti potrebne za pokretanje Python skripti za zvono na vratima. Ovaj proces može potrajati jer je slika prilično velika (~ 1,5 GB). Izvršiti:
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), a potrebno je instalirati sljedeće pakete:
- prepoznavanje lica
- pikamera
- numpy
- Jastuk
- python-telegram-bot
- RPi. GPIO
Ova je veza vrlo korisna: Github - Instalirajte dlib i face_recognition na Raspberry Pi. Međutim, ovdje postoje neke opaske: 1) Jastuku je potreban najmanje Python 3.5, koji se neće instalirati na ovaj način. 2) Također, neće svi paketi koji su potrebni u projektu zvona na vratima biti instalirani slijedeći ovu metodu. Međutim, trebali biste ga moći instalirati jednostavnom upotrebom pip3.
Korak 6: Pokretanje skripti zvona na vratima
Nabavite skripte
Skripte se mogu ručno preuzeti sa: github.com - Erientes/zvono na vratima. Ili, ako imate instaliran Git, izvedite:
git clone
Stvorite pseudonime
Sada, kako bismo si olakšali život, napravimo neke pseudonime za pokretanje skripti. Izvršiti:
leafpad ~/.bashrc
Dodajte sljedeće retke i spremite datoteku:
alias doorbell_run = 'docker run --privileged -v/home/pi/doorbell:/zvono na vratima -w/zvono na vratima -it erientes/zvono na vratima python $ 1'
alias doorbell_login = 'docker run --privileged -v/home/pi/doorbell:/zvono na vratima -w/zvono na vratima -it erientes/zvono na vratima'
Test skripte
Da biste provjerili je li sve ispravno instalirano, otvorite novi terminal i izvedite:
primjeri zvonjenja na vratima/0_test_installation.py
Rezultat bi jednostavno trebala biti poruka u prozoru terminala koja kaže 'Instalacija zvona je uspješno završila!'. Da biste provjerili može li se kameri pristupiti iz Docker spremnika, pokrenite:
primjeri zvonjenja na vratima/1_test_camera.py
Pokretanjem 1_test_camera.py fotografija će biti snimljena i spremljena kao 'test.jpg', koju možete pronaći u/home/pi/zvonce na vratima. Na kraju, LED upravljački programi mogu se testirati izvršavanjem:
primjeri zvonjenja na vratima/2_test_voicehat_drivers.py
Kada se ova skripta izvodi, LED dioda u arkadnom prekidaču trebala bi reagirati kada se pritisne gumb.
Pokretanje skripti zvona na vratima
Da biste pokrenuli skripte Doorbell, najprije morate dobiti vjerodajnice za Telegram bota. Instalirajte Telegram na svoj telefon i idite na telegram.me - Botfather. Započnite razgovor i unesite:
/newbot
Unesite ime i korisničko ime za robota. Nakon toga dobit ćete 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 s prepoznavanjem lica:
zvono na vratima main.py
Opaske:
Ako želite saznati više o tome kako kôd radi, pogledajte komentare u samim skriptama. Ako imate pitanja o kodu, kontaktirajte me putem Github -a
Korak 7: Upotreba zvona na vratima
Pokrenimo skriptu zvona na vratima izvršavajući:
zvono na vratima main.py Nakon učitavanja paketa, skripte miruju. U osnovi se mogu dogoditi 2 stvari:
- Netko pozvoni na vrata.
- Netko je dodan na popis dopuštenih.
Netko pozvoni na vrata
U tom slučaju, skripta će početi fotografirati sve dok ne snima fotografiju na kojoj se detektira lice. Nakon otkrivanja, neke metode iz python paketa 'face_recognition' pozivaju se 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 svjetlo. Kamera na vratima šalje fotografije Telegram botu s narančastom ikonom. Ovo stanje se može dogoditi ako je netko dodan na oba popisa. Na primjer, kada je netko isprva bio dobrodošao, a kasnije je stavljen na crnu listu. |
Ne | Ne | Uključuje se žuto svjetlo. Kamera na vratima šalje fotografije Telegram botu s narančastom ikonom. |
Ne | Da | Uključuje se crveno svjetlo. Kamera na vratima šalje fotografije Telegram botu s crvenom ikonom. |
Netko je dodan na popis dopuštenih
Da biste nekoga dodali na popis dopuštenih, pritisnite žuti gumb 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 ponovno pritisnite žuti gumb. Možete li lako provjeriti je li bio uspješan, pozvonite na vrata i provjerite je li zeleno svjetlo prošlo.
Kako nekoga dodati na crnu listu?
Očigledno, ljudi s lošim namjerama neće proći da nam daju fotografiju svog lica. Umjesto toga, možete dodati slike zloglasnih ljudi koje je (na primjer) policija objavila u mapu img/blacklist. Svakog sata ova se mapa provjerava ima li novih slika. Ako postoji nova slika, kodiranje lica se izračunava i dodaje na crnu listu.csv. Slika se zatim preimenuje i premješta u mapu/img/blacklist/encoded.
Opaske:
- Rukovanje skriptama prijavom u RPi pruža mnogo više kontrole i informacija, ali osnovne kontrole i informacije mogu se dobiti isključivo korištenjem semafora.
- Prepoznavanje lica provodi se pomoću python paketa 'face_recognition'. Ovaj paket temelji se na Dlibu koji sadrži najsuvremeniji algoritam za prepoznavanje lica koji izvodi toč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 natječaju za pomoćnu tehnologiju
Preporučeni:
Zvono na vratima senzora pokreta: 5 koraka (sa slikama)
Zvono na vratima senzora pokreta: Kad sam sinu Jaydenu rekao za izazov, odmah je pomislio upotrijebiti LEGO WeDo set. Godinama se 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): Što radi? (pogledajte video) Kad je gumb pritisnut, Raspberry otkriva prijavu novog uređaja na bežičnoj mreži. Na ovaj način- može prepoznati gumb pritisnut 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 se zapravo možete ogrebati! Dakle, prije par godina nakon objave na Facebooku o ideji za zvono na vratima s zasebnim prstenovima za svaku osobu u mojoj kući, moj kolega bacio ideju da uključi
Nečujno zvono na vratima gumba 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 želim potrošiti bogatstvo na " pametnog " rješenje? Nečujno zvono na vratima isto je kao
Maska za promjenu lica za promjenu lica - Budite bilo što: 14 koraka (sa slikama)
Maska za promjenu lica za promjenu lica - Budite bilo što: Što radite kada ne možete odlučiti što želite biti za Noć vještica? Budi sve. Maska za projekciju sastoji se od bijele 3D tiskane maske, pi od maline, malog projektora i baterije. Sposoban je projicirati sve i svašta