Sisukord:

Uksekell näotuvastusega: 7 sammu (piltidega)
Uksekell näotuvastusega: 7 sammu (piltidega)

Video: Uksekell näotuvastusega: 7 sammu (piltidega)

Video: Uksekell näotuvastusega: 7 sammu (piltidega)
Video: КАК ПОДКЛЮЧИТЬ ЭЛЕКТРИЧЕСКИЙ ПРОВОДНОЙ ЗВОНОК ZAMEL ИЗ ЛЕРУА МЕРЛЕН 2024, November
Anonim
Näotuvastusega uksekell
Näotuvastusega uksekell

Motivatsioon

Viimasel ajal on minu riigis toimunud röövlaine, mis on suunatud eakatele inimestele nende kodus. Tavaliselt võimaldavad juurdepääsu inimesed ise, kuna külastajad veenavad neid, et nad on hooldajad/õed. See on lihtsalt sõnatu, kui vihased ja kurvad need lood mind tekitavad. Kodu peaks olema teie esimene turvapaik ja veelgi enam, kui olete väljas olles juba haavatavas olukorras. Seda silmas pidades alustasin selle projektiga.

Üldine informatsioon

Uksekellade süsteem on mõeldud peamiselt eakatele või nägemispuudega inimestele ning on oma ülesannetes üsna sirgjooneline. Lühidalt, uksekella lüliti käivitab kaamera kaadrite saamiseks. Seejärel tuvastatakse kaadrite näod ning sobitatakse need valge ja musta nimekirjaga. Sõitja saab selge visuaalse tagasiside selge valgusfoori ekraaniga. Seega näitab roheline, kollane või punane tuli, et isik (ud) on lubatud nimekirjas, süsteemile tundmatu või musta nimekirja. Kui süttib kollane või punane tuli, saadab foto Telegrami bot, et teavitada/hoiatada sugulast või hooldajat.

Asjatundlikkuse tase

Projekt loodi entusiastidele, kes on eriti huvitatud arvutinägemise ja tehisintellekti kasutamisest. See juhend on kirjutatud algajate publikule, nii et ärge muretsege, kui teil pole kogemusi! Lisaks võib projekt olla huvitav ka kogenumatele tegijatele, kuna torujuhe on korraldatud nii, et saate seda ilma palju probleemideta laiendada oma arvutinägemuse ja näotuvastuse ideedega.

Samm: materjalid

Materjalid
Materjalid

Tootenimekiri miinimumnõuetega:

Toode Link Kommenteeri
Vaarika Pi 3b RPi Link näitab RPi 4, kuna sellel on palju parem jõudlus ja peaaegu sama hind kui RPi 3b -l.
Micro SD Amazon 16 GB või suurem micro SD -kaart teeb selle töö ära. Kuid Amazoni 16 GB kaardid on nüüd peaaegu sama hinnaga kui 32 GB kaardid.
Raspberry Pi kaamera Amazon Kaamera v1 on odavam, kuid v2 on parem ja seda toetatakse kauem.
15 kontaktiga FPC painduv kaabel Amazon Pikkus sõltub tegelikult selle projekti tegemise asjaoludest. Kui soovite lihtsalt prototüüpi ehitada, teeb originaal painduskaabel selle töö ära.
Toiteallikas 5v micro usb Adafruit See ei lasknud end kunagi alt! Suurepärane kvaliteet. (Fotol pole)
Arkaadnupud sisseehitatud LED-iga Amazon Valige soovitud suurus, kuid CAD -disain põhineb 60 mm nuppudel
Takistid Amazon Teil on vaja vaid paari 1k ja 100 oomi takistit. Tavalised 1/4 W on head.
Kondensaatorid 0,1 uF Amazon Vaja on kolme kondensaatorit. (Fotol pole)
Jumper juhtmed / lint kaabel AmazonAmazon Kui soovite endale raha säästa, võite kasutada ka vana disketiseadme lintkaablit (vt fotot).
Kahanev toru / elektrilint AmazonAmazon

Vajalikud tööriistad:

Tööriist Oluline? Kommenteeri
Jootekolb Jah
Multimeeter Jah
Traadi eemaldaja Jah Või võite kasutada nuga/käärid.
Laserlõikur Ei
3D printer Ei
Klambrid Ei Kasulik testimisfaasis karbi koos hoidmiseks.

Märkused:

Projekti kättesaadavuse suurendamiseks otsustasin selle välja töötada Raspberry Pi 3b abil. Kuigi see suurendab juurdepääsetavust, vähendab see rakenduse võimalusi, kuna RPi -d pole nii kiired. Kui otsite ühe lauaarvutit, mis on kiirem, võiksite vaadata NVIDIA Jetson Nano

2. samm: juhtmestik

Juhtmestik
Juhtmestik
Juhtmestik
Juhtmestik
Juhtmestik
Juhtmestik

Skemaatiline diagramm on selle sammu jaoks kõige informatiivsem ja üsna iseenesestmõistetav. Kui olete elektroonikaga uus, saate kasutada legendi pilti. Komponendi väärtus (kui see on olemas) on toodud skemaatilisel diagrammil. Fotod võivad aidata näha, kuidas ma vooluringi ehitan. Põhimõtteliselt ühendasin kõik komponendid arkaadinupule võimalikult lähedale, mille tulemuseks on selge ülevaade toimuvast.

Märkused:

  • Mulle meeldib väga kasutada lintkaabli pistikuid, kuna need on palju vastupidavamad kui ühe hüppajaga juhtmed.
  • Nagu soovitatud, olen kasutanud vanast arvutist eemaldatud lintkaablit. See on siiski natuke keeruline, kuna peate kaabli konfiguratsiooni käsitsi kinnitama. Näiteks selles projektis sain teada, et mõned augud olid omavahel ühendatud (tõenäoliselt kasutati algse rakenduse pinnasena). Seetõttu pidin hiljem hankima teistsuguse kaabli, nagu piltidel näha.

3. samm: korpuse ehitamine

Korpuse ehitamine
Korpuse ehitamine
Korpuse ehitamine
Korpuse ehitamine
Korpuse ehitamine
Korpuse ehitamine
Korpuse ehitamine
Korpuse ehitamine

Kaamera korpus

Paljusid picamera ümbriseid saab Internetist vabalt alla laadida. Niisiis, otsustan ratast mitte leiutada ja valin Internetist lihtsa, kuid kena ümbrise: thingiverse.com - Raspberry pi kaameraümbris/ümbris. (Karju disainer VGerile.)

Foori korpus

Fooride korpuse jaoks kujundasin Autodesk Fusion 360 -s väikese kasti (mis on vabalt allalaaditav, vt märkused), mis sobib kogu riistvaraga. Manusest leiate faili, mille olen saatnud oma kohalikule laserlõikusettevõttele. Seega põhineb disain 6 mm plaadi paksusel. Kui soovite aga asju kohandada, pääsete selle lingi abil juurde igasugustele failivormingutele. Nagu piltidel näidatud, võite kasutada ka pappkasti, kui teil pole laserlõikurit. Kasutasin prototüüpimiseks pildil olevat pappkasti ja see toimib nagu võlu.

Kokkupanek on üsna lihtne:

  1. Paigaldage Arcade'i lülitid.
  2. Veenduge, et uksekella juhtmed oleksid vabad.
  3. Ühendage lintkaabel RPi külge.
  4. Kruvige RPi alumisele paneelile.
  5. Ühendage uksekella juhtmed juhtmepistikuga ja kinnitage see ka alumisele paneelile.
  6. Ühendage Picamera RPi -ga.
  7. Puurige auk ühele külgpaneelile uksekella lülitusjuhtme ja RPi toitejuhtme jaoks.

Juhtmeühendust kasutatakse uksekella lüliti juhtmete kinnituspunktina, nii et seda saab hiljem olemasoleva uksekella külge kinnitada. Kõik on nüüd paigas ja saab kokku liimida. Siiski võiksite kõigepealt lõpetada järgmised sammud, veendumaks, et kõik toimib nii, nagu peaks.

Märkused:

Autodesk Fusion 360 on harrastajatele vabalt saadaval! Kui soovite oma koopia saada, külastage seda linki: autodesk.com - Fusion 360 For Hobbyists. Mõningaid termineid on, seega lugege neid kindlasti ja rakendage. See oli minu esimene projekt Fusion 360 -ga ja mul pole CAD -tarkvara kasutamisel palju kogemusi, kuid pean ütlema, et mulle väga meeldib tarkvara ja kõik Fusion 360 -ga kaasas olevad lisatööriistad

4. samm: kaamera konfigureerimine

Kaamera seadistamine
Kaamera seadistamine
Kaamera seadistamine
Kaamera seadistamine
Kaamera seadistamine
Kaamera seadistamine

Eeldatakse, et teil on Raspbian installitud ja see töötab GUI -režiimis. Kui teil pole veel Raspbiani installitud, saate seda artiklit järgida: raspberrypi.org - Operatsioonisüsteemi piltide installimine. Kui käivitate Raspbiani, peaksite nägema töölauda, nagu piltidel näidatud.

Seadistame kaamera RPi peal ja vaatame, kas see töötab! Siin kirjeldatud meetod pärineb otse aadressilt raspberrypi.org - Documentation. Esiteks värskendame uusimatele pakettidele (sh kaamera püsivara), täites terminaliaknas järgmised käsud (vt pilte):

sudo apt värskendus

sudo apt täielik uuendamine

Järgmisena tuleb kaamera lubada järgmise käsu abil:

sudo raspi-config

Avage menüüst 5. Liidesevalikud -> P1 kaamera. Valige kaamera lubamine ja taaskäivitage RPi, tehes järgmist.

taaskäivitage

Nüüd peaks kaamera olema õigesti konfigureeritud. Seda saab testida, avades terminaliakna ja käivitades:

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

Pilt salvestatakse kausta: /home /pi.

Samm: Dockeri seadistamine

Dockeri seadistamine
Dockeri seadistamine
Dockeri seadistamine
Dockeri seadistamine
Dockeri seadistamine
Dockeri seadistamine
Dockeri seadistamine
Dockeri seadistamine

Sõltuvuse ja installivigade vältimiseks otsustasin selle projekti jaoks koostada kohandatud Dockeri pildi (vt wikipedia.org - Docker). Kui te pole kunagi Dockerit kasutanud ega kuulnud, siis ärge muretsege, selgitan samm -sammult, kuidas seda selles projektis kasutada. Tegelikult on see ülilihtne! Kui soovite seda projekti käivitada kohalikus installis (mitte Dockeri konteineris), annan teile mõned näpunäited. Kuid on väga soovitatav kasutada Dockeri pilti. Lõppude lõpuks loon ma selle selleks, et teil oleks selle projekti juhtimine lihtne!

Mis on Docker?

Märkus: see osa sisaldab Dockeri kohta taustateavet, mille saate vahele jätta, kui soovite lihtsalt koodi käivitada.

See projekt on esimene kord, kui ma Dockerit kasutasin ja see on lihtsalt fantastiline! Võib -olla olete kuulnud virtualenvist või Anacondast Pythoni jaoks? Noh, Docker on selles mõttes üsna sarnane, et saate hõlpsalt hallata pakettide versioone ja käivitada ühes hostisüsteemis erinevaid Pythoni versioone, kasutades erinevat keskkonda (või konteinerit, nagu seda Dockeris nimetatakse). Kuid võrreldes virtualenvi ja Anacondaga on Docker palju võimsam, kuna see ei piirdu ainult Pythoni pakettidega. Tõepoolest, Dockeri konteineris saate installida ja hallata ka soovitud operatsioonisüsteemi pakette. Mõelge näiteks veebisaidile, mida soovite üle viia ja millel on Pythoni veebiraamistik (nt Django) koos andmebaasiga (nt MySQL). Ilma Dockeri konteinerita peaksite installima kõik paketid uude serverisse, mis on vigadele ja vigadele väga vastuvõtlik. Teisest küljest, kui teie veebisait on Dockeris üles ehitatud, on migreerimine põhimõtteliselt sama lihtne kui pildifaili/failide teisaldamine uude serverisse ja nende käivitamine. Nagu võite ette kujutada, on Docker väga kasulik ka Instructabeli projektide jaoks;)! Kui soovite Dockeri kohta rohkem teada saada, vaadake nende veebisaiti: docker.org - Docker: Enterprise Container Platform. Nüüd hakkame koos Dockeriga tööle!

Dockeri installimine

Installige Docker, käivitades:

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

Järgmisena lisatakse kasutaja kasutajarühma 'dokkija', mis annab Dockeri käitamise õigused. Seda teeb:

sudo usermod -aG dokkija $ USER

Nüüd peaksite saama Dockeri käivitada. Seda saab kinnitada, tervitades maailmapilti:

dokk jookseb tere-maailma

Lõpuks tõmbame Dockeri pildi, mis sisaldab kõiki sõltuvusi, mis on vajalikud uksekella Pythoni skriptide käivitamiseks. See protsess võib võtta aega, kuna pilt on üsna suur (~ 1,5 GB). Käivita:

dokkija tõmbab eriente/uksekella

Märkus: Dockerfile'i leiate Githubi uksekellahoidlast. Nüüd on kõik valmis uksekella skriptide käivitamiseks, mida arutatakse järgmises etapis.

Kohalik paigaldus

Jällegi soovitaksin tungivalt kasutada kohaliku installimise asemel Dockeri pilti. Kuid selle õpetuse täielikuks muutmiseks kirjeldan nüüd mõningaid samme, mida tegin kohaliku installimise jaoks.

Koodi käivitamiseks peaks pythoni versioon olema> = 3.5 (ma kasutasin python 3.5.3) ja installida tuleb järgmised paketid:

  • näotuvastus
  • picamera
  • numpy
  • Padi
  • python-telegramm-bot
  • RPi. GPIO

See link on üsna kasulik: Github - installige Raspberry Pi -le dlib ja face_recognition. Siiski on siin mõned hoiatused: 1) Padi vajab vähemalt Python 3.5, mida selle meetodi järgi ei installita. 2) Samuti ei installita seda meetodit järgides kõiki pakette, mida uksekella projektis vaja läheb. Siiski peaksite saama selle installida lihtsalt pip3 abil.

6. samm: uksekella skriptide käivitamine

Uksekella skriptide käivitamine
Uksekella skriptide käivitamine
Uksekella skriptide käivitamine
Uksekella skriptide käivitamine
Uksekella skriptide käivitamine
Uksekella skriptide käivitamine

Hankige skriptid

Skripte saab käsitsi alla laadida saidilt: github.com - Erientes/uksekell. Või kui teil on Git installitud, käivitage:

git kloon

Loo varjunimed

Nüüd, et muuta meie elu natuke lihtsamaks, loome skriptide käitamiseks mõned varjunimed. Käivita:

lehepilt ~/.bashrc

Lisage järgmised read ja salvestage fail:

alias doorbell_run = 'Docker run -privilegeeritud -v/home/pi/uksekell:/uksekell -w/uksekell -it erientes/uksekell python $ 1'

alias doorbell_login = 'Docker run -privilegeeritud -v/home/pi/uksekell:/uksekell -w/uksekell -it erientes/uksekell bash'

Testi skripte

Et kontrollida, kas kõik on õigesti installitud, avage uus terminal ja käivitage:

uksekellade näited/0_test_installation.py

Tulemuseks peaks lihtsalt olema terminaliaknas olev teade „Uksekella installimine lõppes edukalt!”. Et testida, kas kaamerale pääseb juurde Dockeri konteineri kaudu, tehke järgmist.

uksekellade näited/1_test_camera.py

Käivitades 1_test_camera.py, tehakse foto ja salvestatakse see nimega „test.jpg”, mille leiate aadressilt/home/pi/doorbell. Lõpuks saab LED -draivereid testida järgmiselt:

uksekellade näited/2_test_voicehat_drivers.py

Kui see skript töötab, peaks arkaadilüliti LED nupule vajutamisel reageerima.

Uksekella skriptide käitamine

Uksekella skriptide käivitamiseks tuleb kõigepealt hankida Telegrami bot -mandaat. Installige Telegram oma telefoni ja minge saidile telegram.me - Botfather. Alustage vestlust ja sisestage:

/newbot

Sisestage botile nimi ja kasutajanimi. Pärast seda antakse teile juurdepääsuluba. Kopeerige see väärtus kataloogi/home/pi/doorbell faili "credentials_telegram_template.py" ja salvestage see uude faili nimega "credentials_telegram.py". Lõpuks alustage vestlust äsja loodud botiga, klõpsates lingil, mille Botfather teile pakub.

Lõpuks käivitame näotuvastusega uksekella:

uksekell_run main.py

Märkused:

Kui soovite koodi toimimise kohta rohkem teada saada, vaadake skriptide enda kommentaare. Kui teil on koodi kohta küsimusi, võtke minuga Githubi kaudu ühendust

7. samm: uksekella kasutamine

Image
Image
Uksekella kasutamine
Uksekella kasutamine
Uksekella kasutamine
Uksekella kasutamine

Käivitame uksekella skripti, käivitades:

uksekell_run main.py Pärast pakettide laadimist jäävad skriptid jõude. Põhimõtteliselt võib juhtuda 2 asja:

  1. Keegi helistab uksekella.
  2. Keegi lisatakse lubatud loendisse.

Keegi helistab uksekella

Sel juhul hakkab skript pildistama, kuni pildistab näo tuvastamise foto. Pärast tuvastamist kutsutakse näo 128 kodeeringu arvutamiseks välja mõned meetodid pythoni paketist 'face_recognition'. Järgmisena võrreldakse saadud kodeeringut valgete nimekirja.csv ja musta nimekirja.csv kodeeringutega. Võimalikud tulemused annavad järgmise vastuse:

Valges nimekirjas? Musta nimekirja? Vastus
Jah Ei Roheline tuli süttib.
Jah Jah Kollane tuli süttib. Uksekella kaamera saadab fotod Telegrami botile oranži ikooniga. See olek võib juhtuda, kui keegi lisati mõlemasse loendisse. Näiteks kui keegi oli alguses teretulnud, kuid hiljem musta nimekirja.
Ei Ei Kollane tuli süttib. Uksekella kaamera saadab fotod Telegrami botile oranži ikooniga.
Ei Jah Punane tuli süttib. Uksekella kaamera saadab fotod Telegrami robotile punase ikooniga.

Keegi lisatakse lubatud loendisse

Kellegi lisamiseks valgete loendisse vajutage valgusfoori kollast nuppu, kui uksekell on jõudeolekus. Esiteks süttib kollane tuli. Kui roheline tuli vilgub 3 korda, lisatakse inimese nägu edukalt lubatud loendisse. Kui roheline tuli ei vilgu 3 korda, ei õnnestunud katse. Sellisel juhul vajutage kollast nuppu uuesti. Saate hõlpsalt kontrollida, kas see õnnestus, helistades uksekella ja kontrollides, kas roheline tuli on möödas.

Kuidas kedagi musta nimekirja lisada?

Ilmselgelt ei lähe halva kavatsusega inimesed mööda, et meile oma näost fotot teha. Seega saate selle asemel lisada kaadrisse img/blacklist pilte kurikuulsatest inimestest, mille (näiteks) politsei on avaldanud. Iga tund kontrollitakse selles kaustas uusi pilte. Kui on uus pilt, arvutatakse näokodeering ja lisatakse see musta nimekirja.csv. Seejärel nimetatakse pilt ümber ja teisaldatakse kausta/img/blacklist/kodeeritud.

Märkused:

  • Skriptide käitamine RPi sisse logides annab palju rohkem kontrolli ja teavet, kuid põhijuhtimise ja teabe saab kätte ainult valgusfoori ekraani kasutades.
  • Näotuvastust rakendatakse pythoni paketi 'face_recognition' abil. See pakett põhineb Dlibil, mis sisaldab tipptasemel näotuvastuse algoritmi, mis täidab 99,38% täpsust märgistatud nägude looduses võrdlusalusel (allikas: dlib.net-kvaliteetne näotuvastus koos sügava meetrilise õppimisega).
Abistava tehnika võistlus
Abistava tehnika võistlus
Abistava tehnika võistlus
Abistava tehnika võistlus

Abistavate tehnikavõistluste esimene auhind

Soovitan: