Kazalo:

Zvonec pri vratih s prepoznavanjem obrazov: 7 korakov (s slikami)
Zvonec pri vratih s prepoznavanjem obrazov: 7 korakov (s slikami)

Video: Zvonec pri vratih s prepoznavanjem obrazov: 7 korakov (s slikami)

Video: Zvonec pri vratih s prepoznavanjem obrazov: 7 korakov (s slikami)
Video: Терренс Дикон раскрывает скрытую связь: сознание и энтропия 2024, Julij
Anonim
Zvonec na vratih s prepoznavanjem obrazov
Zvonec na vratih s prepoznavanjem obrazov

Motivacija

V zadnjem času je v moji državi val ropov, ki so namenjeni starejšim ljudem na njihovih domovih. Običajno dostop omogočijo stanovalci sami, saj jih obiskovalci prepričajo, da so negovalci/medicinske sestre. Ne gre za besede, kako jezne in žalostne sem zaradi teh zgodb. Dom bi moral biti vaše prvo varno zatočišče, še bolj pa, če ste že zunaj v ranljivem položaju. S tem v mislih sem začel ta projekt.

Splošne informacije

Sistem vratnih zvoncev je namenjen predvsem starejšim ali slabovidnim osebam in je pri svojem delovanju precej preprost. Skratka, stikalo za zvonec sproži kamero, da pridobi posnetek. Nato se na posnetku zaznajo obrazi, ki se ujemajo s seznamom dovoljenih in črnim seznamom. Potnik dobi jasen vizualni odziv z jasnim prikazovalnikom na semaforju. Pri tem zelena, rumena ali rdeča luč označuje, da so osebe na seznamu belih, sistemu neznane oziroma na črnem seznamu. Če se sproži rumena ali rdeča luč, fotografijo pošlje bot Telegrama, da obvesti/opozori sorodnika ali skrbnika.

Raven strokovnosti

Projekt je bil zasnovan za navdušence, ki jih še posebej zanima uporaba računalniškega vida in umetne inteligence. Ta navodila so napisana za občinstvo začetnikov, zato ne skrbite, če nimate izkušenj! Poleg tega je projekt lahko zanimiv tudi za bolj izkušene izdelovalce, saj je cevovod organiziran tako, da ga lahko razširite z lastno računalniško vizijo in idejami za prepoznavanje obrazov brez veliko težav.

1. korak: Materiali

Materiali
Materiali

Seznam izdelkov z minimalnimi zahtevami:

Izdelek Povezava Komentiraj
Malina Pi 3b RPi Povezava prikazuje RPi 4, saj ima boljše zmogljivosti in skoraj enako ceno kot RPi 3b.
Mikro SD Amazon To bo naredila kartica micro SD velikosti 16 GB ali več. Toda kartice s 16 GB na Amazonu so zdaj skoraj enake kot kartice s 32 GB.
Fotoaparat Raspberry Pi Amazon Kamera v1 je cenejša, vendar je v2 boljša in bo podprta dlje.
15 -polni FPC fleksibilni kabel Amazon Dolžina je dejansko odvisna od okoliščin pri izvedbi tega projekta. Če želite samo izdelati prototip, bo originalni flex kabel opravil svoje delo.
Napajanje 5v micro usb Adafruit Ta nikoli ni razočaral! Odlična kakovost. (Ni na fotografiji)
Arkadni gumbi z vgrajeno LED Amazon Izberite želeno velikost, vendar zasnova CAD temelji na gumbih 60 mm
Upori Amazon Potrebujete le nekaj uporov 1k in 100 ohmov. Navadni 1/4W so v redu.
Kondenzatorji 0,1 uF Amazon Potrebni so trije kondenzatorji. (Ni na fotografiji)
Mostične žice / tračni kabel AmazonAmazon Če želite prihraniti nekaj dolarjev, lahko uporabite tudi star tračni kabel za disketo (glejte fotografijo).
Krčljiva cev / električni trak AmazonAmazon

Potrebna orodja:

Orodje Bistveno? Komentiraj
Spajkalnik Da
Multimeter Da
Odstranjevalec žice Da Lahko pa uporabite nož/škarje.
Laserski rezalnik Ne
3D tiskalnik Ne
Sponke Ne Uporabno za shranjevanje škatle skupaj v fazi testiranja.

Opombe:

Za večjo dostopnost projekta sem se odločil, da ga bom razvil z Raspberry Pi 3b. Čeprav povečuje dostopnost, zmanjšuje zmogljivosti aplikacije, saj RPi niso tako hitri. Če iščete hitrejši enojni računalnik, si oglejte NVIDIA Jetson Nano

2. korak: Ožičenje

Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje

Shematski diagram je najbolj informativen za ta korak in je povsem samoumeven. Če ste novi v elektroniki, lahko uporabite podobo legende. Vrednost komponente (če obstaja) je navedena v shematičnem diagramu. Fotografije lahko pomagajo videti, kako sestavim vezje. V bistvu sem vse komponente povezal čim bližje arkadnemu gumbu, kar ima za posledico jasen pregled nad dogajanjem.

Opombe:

  • Zelo rad uporabljam konektorje s tračnim kablom, saj so precej trdnejši od uporabe enosmernih žic.
  • Kot je predlagano, sem uporabil počiščen trak iz starega računalnika. To je sicer nekoliko zapleteno, saj boste morali ročno potrditi konfiguracijo kabla. V tem projektu sem na primer ugotovil, da so bile nekatere luknje med seboj povezane (verjetno uporabljene kot podlaga za prvotno aplikacijo). Zato sem moral kasneje dobiti drug kabel, kot lahko vidite na slikah.

3. korak: Izdelava ohišja

Gradnja ohišja
Gradnja ohišja
Gradnja ohišja
Gradnja ohišja
Gradnja ohišja
Gradnja ohišja
Gradnja ohišja
Gradnja ohišja

Ohišje fotoaparata

Veliko ohišij za pikamero lahko prosto prenesete z interneta. Odločil sem se torej, da ne bom znova odkril kolesa in iz interneta izbral osnovno, a lepo ohišje: thingiverse.com - ohišje/ohišje kamere Raspberry pi. (Pokličite oblikovalcu VGerju.)

Ohišje semaforja

Za ohišje semaforja sem v Autodesku Fusion 360 oblikoval majhno škatlo (ki jo je mogoče brezplačno prenesti, glejte Opombe), ki ustreza vsej strojni opremi. V priponki najdete datoteko, ki sem jo poslala lokalnemu podjetju za lasersko rezanje. Pri tem zasnova temelji na debelini plošče 6 mm. Če pa želite stvari prilagoditi, lahko s te povezave dostopate do vseh vrst datotek. Kot je prikazano na slikah, lahko uporabite tudi kartonsko škatlo, če nimate dostopa do laserskega rezalnika. Za izdelavo prototipov sem uporabil kartonsko škatlo na sliki in deluje kot čar.

Sestavljanje je precej preprosto:

  1. Namestite arkadna stikala.
  2. Prepričajte se, da so žice za zvonec na vratih proste.
  3. Tračni kabel priključite na RPi.
  4. RPi privijte na spodnjo ploščo.
  5. Žice vratnega zvonca priključite na žični konektor in ga pritrdite tudi na spodnjo ploščo.
  6. Picamero priključite na RPi.
  7. V eni od stranskih plošč izvrtajte luknjo za preklopno žico pri vratih in napajalno žico RPi.

Žični konektor se uporablja kot pritrdilna točka za žice stikala za zvonec, tako da ga lahko pozneje pritrdite na obstoječi zvonec. Zdaj je vse na svojem mestu in ga je mogoče zlepiti. Morda pa boste najprej želeli dokončati naslednje korake in se prepričati, da vse deluje tako, kot bi moralo biti.

Opombe:

Autodesk Fusion 360 je prosto na voljo za ljubitelje! Če želite dobiti svoj izvod, obiščite to povezavo: autodesk.com - Fusion 360 Za ljubitelje. Obstaja nekaj pogojev, zato jih preberite in uporabite. To je bil moj prvi projekt s Fusion 360 in nimam veliko izkušenj z uporabo programske opreme CAD, vendar moram reči, da so mi programska oprema in vsa dodatna orodja, ki so priložena Fusion 360, zelo všeč

4. korak: Konfigurirajte kamero

Konfiguriranje kamere
Konfiguriranje kamere
Konfiguriranje kamere
Konfiguriranje kamere
Konfiguriranje kamere
Konfiguriranje kamere

Predpostavlja se, da imate nameščen Raspbian in da deluje v načinu grafičnega vmesnika. Če še nimate nameščenega Raspbiana, lahko sledite temu članku: raspberrypi.org - Nameščanje slik operacijskega sistema. Če zaženete Raspbian, bi morali videti namizje, kot je prikazano na slikah.

Nastavimo kamero na RPi in poglejmo, če deluje! Tu opisana metoda je neposredno iz dokumenta raspberrypi.org - Dokumentacija. Najprej posodobimo na najnovejše pakete (vključno z vdelano programsko opremo fotoaparata), tako da v terminalskem oknu izvedemo naslednje ukaze (glej slike):

sudo apt posodobitev

sudo apt popolna nadgradnja

Nato morate kamero omogočiti z naslednjim ukazom:

sudo raspi-config

V meniju pojdite na 5. Možnosti vmesnika -> Kamera P1. Izberite, da omogočite kamero in znova zaženete RPi tako, da izvedete:

znova zaženite

Kamero bi bilo treba zdaj pravilno konfigurirati. Preizkusite ga lahko tako, da odprete terminalsko okno in izvedete:

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

Slika se shrani v: /home /pi.

5. korak: Nastavitev Dockerja

Nastavitev Dockerja
Nastavitev Dockerja
Nastavitev Dockerja
Nastavitev Dockerja
Nastavitev Dockerja
Nastavitev Dockerja
Nastavitev Dockerja
Nastavitev Dockerja

Da bi se izognili odvisnostim in napakam pri namestitvi, sem se odločil za ta projekt zgraditi podobo Dockerja po meri (glej wikipedia.org - Docker). Če za Docker niste nikoli uporabljali ali slišali, brez skrbi, vam bom korak za korakom razložil, kako ga uporabiti v tem projektu. Pravzaprav je zelo enostavno! Če želite ta projekt zagnati v lokalni namestitvi (namesto v vsebniku Docker), vam bom dal nekaj nasvetov. Vendar je zelo priporočljivo uporabiti podobo Docker. Navsezadnje sem ga zgradil, da vam olajšam vodenje tega projekta!

Kaj je Docker?

Opomba: ta del vsebuje nekaj osnovnih informacij o Dockerju, ki jih lahko preskočite, če želite samo zagnati kodo.

Ta projekt sem prvič uporabil Docker in je preprosto super! Morda ste že slišali za virtualenv ali Anacondo za Python? No, Docker je precej podoben v smislu, da lahko preprosto upravljate različice paketov in zaženete različne različice Pythona na enem gostiteljskem sistemu z uporabo drugega okolja (ali vsebnika, kot se imenuje v Dockerju). Toda v primerjavi z virtualenv in Anacondo je Docker veliko močnejši, saj ni omejen samo na pakete Python. V vsebniku Docker lahko namestite in upravljate tudi pakete želenega operacijskega sistema. Na primer, razmislite o spletnem mestu, ki ga želite preseliti, ki izvaja spletni okvir Python (npr. Django) z bazo podatkov (npr. MySQL). Brez vsebnika Docker bi morali na nov strežnik namestiti vse pakete, proces, ki je zelo nagnjen k napakam in hroščem. Po drugi strani pa je selitev, ko je bilo vaše spletno mesto zgrajeno v Dockerju, v bistvu tako preprosto, kot da slikovno datoteko/datoteke premaknete na nov strežnik in jih zaženete. Kot si lahko predstavljate, je Docker zelo uporaben tudi za projekte na Instructables;)! Če želite izvedeti več o Dockerju, obiščite njihovo spletno stran: docker.org - Docker: Enterprise Container Platform. Zdaj pa začnimo z Dockerjem!

Namestitev Dockerja

Namestite Docker tako, da izvedete:

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

Nato je uporabnik dodan v uporabniško skupino 'docker', ki zagotavlja pravice za zagon Dockerja. To naredijo:

sudo usermod -aG docker $ USER

Zdaj bi morali zagnati Docker. To lahko potrdite z zagonom slike hello-world:

docker teči hello-world

Nazadnje potegnimo podobo Dockerja, ki vsebuje vse odvisnosti, potrebne za izvajanje skriptov Python za zvonjenje na vratih. Ta postopek lahko traja nekaj časa, saj je slika precej velika (~ 1,5 GB). Izvedite:

docker pull erientes/zvonec na vratih

Opomba: Dockerfile lahko najdete v skladišču zvoncev na vratih v Githubu. Zdaj je vse pripravljeno za izvajanje scenarijev zvonjenja na vratih, o katerih bomo razpravljali v naslednjem koraku.

Lokalna namestitev

Še enkrat, toplo priporočam uporabo slike Dockerja namesto lokalne namestitve. Da pa bo ta vadnica popolna, bom zdaj opisal nekaj korakov, ki sem jih naredil za lokalno namestitev.

Če želite zagnati kodo, mora biti različica pythona> = 3.5 (uporabil sem python 3.5.3) in namestiti naslednje pakete:

  • face_recognition
  • pikamera
  • numpy
  • Blazina
  • python-telegram-bot
  • RPi. GPIO

Ta povezava je zelo koristna: Github - Namestite dlib in face_recognition na Raspberry Pi. Vendar pa obstaja nekaj opozoril: 1) Vzglavnik potrebuje vsaj Python 3.5, ki po tej metodi ne bo nameščen. 2) Tudi vsi paketi, ki so potrebni pri projektu zvonjenja na vratih, ne bodo nameščeni po tej metodi. Vendar pa bi ga morali namestiti z uporabo pip3.

6. korak: Zaženite skripte zvonjenja pri vratih

Izvajanje skriptov zvonjenja pri vratih
Izvajanje skriptov zvonjenja pri vratih
Izvajanje skriptov zvonjenja pri vratih
Izvajanje skriptov zvonjenja pri vratih
Izvajanje skriptov zvonjenja pri vratih
Izvajanje skriptov zvonjenja pri vratih

Pridobite skripte

Skripte lahko ročno prenesete z: github.com - Erientes/doorbell. Ali če imate nameščen Git, izvedite:

git clone

Ustvari vzdevke

Zdaj, da si olajšamo življenje, ustvarimo nekaj vzdevkov za izvajanje skriptov. Izvedite:

leafpad ~/.bashrc

Dodajte naslednje vrstice in shranite datoteko:

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'

Preskusni skripti

Če želite preveriti, ali je vse pravilno nameščeno, odprite nov terminal in izvedite:

examplebell_run examples/0_test_installation.py

Rezultat bi moral biti preprosto sporočilo v terminalskem oknu, ki pravi 'Namestitev vratnega zvonca je uspešno končana!'. Če želite preveriti, ali je do kamere mogoče dostopati iz vsebnika Docker, zaženite:

Primeri vratnega zvonjenja/1_test_camera.py

Z zagonom 1_test_camera.py bo fotografija posneta in shranjena kot 'test.jpg', ki jo najdete v/home/pi/doorbell. Nazadnje lahko gonilnike LED preskusite tako:

Primeri vratnega zvonjenja/2_test_voicehat_drivers.py

Ko se ta skript izvaja, se mora LED na arkadnem stikalu odzvati, ko pritisnete gumb.

Izvajanje skript vratnega zvonca

Če želite zagnati skripte Doorbell, morate najprej pridobiti poverilnice za Telegram bot. Namestite Telegram v telefon in pojdite na telegram.me - Botfather. Začnite pogovor in vnesite:

/newbot

Vnesite ime in uporabniško ime za bot. Po tem vam bo na voljo žeton za dostop. Kopirajte to vrednost v datoteko 'credentials_telegram_template.py' v/home/pi/doorbell in jo shranite v novo datoteko z imenom 'credentials_telegram.py'. Nazadnje začnite pogovor z botom, ki ste ga pravkar ustvarili, tako da kliknete povezavo, ki vam jo ponuja Botfather.

Nazadnje zaženimo zvonec na vratih s prepoznavanjem obrazov:

doorbell_run main.py

Opombe:

Če želite izvedeti več o delovanju kode, si oglejte komentarje v samih skriptah. Če imate vprašanje glede kode, me kontaktirajte prek Github -a

7. korak: Uporaba zvonca na vratih

Image
Image
Uporaba zvonca na vratih
Uporaba zvonca na vratih
Uporaba zvonca na vratih
Uporaba zvonca na vratih

Zaženimo skript zvonjenja na vratih tako, da izvedemo:

doorbell_run main.py Po nalaganju paketov skripti ne delujejo. V bistvu se lahko zgodita 2 stvari:

  1. Nekdo pozvoni na vrata.
  2. Nekdo je dodan na seznam dovoljenih.

Nekdo pozvoni na vrata

V tem primeru bo skript začel fotografirati, dokler ne posname fotografije, na kateri je zaznan obraz. Po zaznavi se pokličejo nekatere metode iz paketa python 'face_recognition' za izračun 128 kodiranja obraza. Nato dobljeno kodiranje primerjamo s kodiranji v whitelist.csv in blacklist.csv. Možni rezultati imajo za posledico naslednji odziv:

Na belem seznamu? Na črnem seznamu? Odziv
Da Ne Prižge se zelena luč.
Da Da Prižge se rumena luč. Kamera na vratih pošilja fotografije botu Telegram z oranžno ikono. To stanje se lahko zgodi, če je bil nekdo dodan na oba seznama. Na primer, ko je bil nekdo sprva dobrodošel, pozneje pa je bil uvrščen na črni seznam.
Ne Ne Prižge se rumena luč. Kamera na vratih pošilja fotografije botu Telegram z oranžno ikono.
Ne Da Prižge se rdeča luč. Kamera na vratih pošilja fotografije v Telegram bot z rdečo ikono.

Nekdo je dodan na seznam dovoljenih

Če želite nekoga dodati na seznam dovoljenih, pritisnite rumeni gumb semaforja, ko je zvonec na vratih v stanju mirovanja. Najprej se prižge rumena lučka. Če zelena lučka utripa 3 -krat, je obraz osebe uspešno dodan na seznam dovoljenih. Če zelena lučka ne utripa trikrat, poskus ni bil uspešen. V tem primeru ponovno pritisnite rumeni gumb. Če je bil uspešen, lahko preprosto preverite tako, da pozvonite na vrata in preverite, ali je prižgana zelena luč.

Kako nekoga dodati na črni seznam?

Očitno ljudje s slabimi nameni ne bodo šli mimo, da bi nam dali fotografijo svojega obraza. Namesto tega lahko v mapo img/blacklist dodate slike zloglasnih ljudi, ki jih je (na primer) objavila policija. Vsako uro se v tej mapi preverijo nove slike. Če je nova slika, se kodiranje obrazov izračuna in doda na blacklist.csv. Slika se nato preimenuje in premakne v mapo/img/blacklist/encoded.

Opombe:

  • Upravljanje skriptov z prijavo v RPi zagotavlja veliko več nadzora in informacij, vendar je osnovno upravljanje in informacije mogoče pridobiti le z uporabo semaforja.
  • Prepoznavanje obrazov se izvaja z uporabo paketa python 'face_recognition'. Ta paket temelji na Dlibu, ki vsebuje najsodobnejši algoritem za prepoznavanje obrazov, ki izvaja natančnost 99,38% pri merilu Označeni obrazi v divjini (vir: dlib.net-Visokokakovostno prepoznavanje obrazov z globokim metričnim učenjem).
Natečaj pomožne tehnologije
Natečaj pomožne tehnologije
Natečaj pomožne tehnologije
Natečaj pomožne tehnologije

Prva nagrada na tekmovanju v pomožni tehniki

Priporočena: