Obsah:

Domový zvonček s rozpoznaním tváre: 7 krokov (s obrázkami)
Domový zvonček s rozpoznaním tváre: 7 krokov (s obrázkami)

Video: Domový zvonček s rozpoznaním tváre: 7 krokov (s obrázkami)

Video: Domový zvonček s rozpoznaním tváre: 7 krokov (s obrázkami)
Video: Kompletní sada nástrojů Redux + kurz dotazů RTK pro začátečníky | Redux za 2 hodiny! 2024, Júl
Anonim
Domový zvonček s rozpoznaním tváre
Domový zvonček s rozpoznaním tváre

Motivácia

V poslednej dobe v mojej krajine došlo k vlne lúpeží, ktoré sú zamerané na starších ľudí v ich vlastných domovoch. Obvykle im prístup umožňujú samotní obyvatelia, pretože ich návštevníci presvedčia, že sú opatrovateľmi/zdravotnými sestrami. Nie je možné slovami, ako nahnevane a smutne vo mne vyvolávajú tieto príbehy. Domov by mal byť vašim prvým bezpečným útočiskom a ešte viac, ak ste už vonku v zraniteľnom postavení. S týmto vedomím som začal tento projekt.

Všeobecné informácie

Systém zvončeka je určený hlavne pre starších ľudí alebo osoby so zrakovým postihnutím a funguje veľmi jednoducho. Stručne povedané, spínač zvončeka spustí fotoaparát, aby získal zábery. Ďalej sú tváre na záberoch rozpoznané a priradené k bielej listine a čiernej listine. Obyvateľ dostane jasnú vizuálnu spätnú väzbu pomocou jasného semaforového displeja. Zelené, žlté alebo červené svetlo týmto označuje, že osoby sú na bielej listine, neznámej systému alebo na čiernej listine. Ak sa spustí žlté alebo červené svetlo, fotografiu odošle telegramový robot, aby informoval/varoval príbuzného alebo správcu.

Úroveň odbornosti

Projekt bol vytvorený pre nadšencov, ktorí sú obzvlášť zvedaví na používanie počítačového videnia a umelej inteligencie. Tento návod je určený pre publikum začiatočníkov, takže sa nemusíte obávať, ak nemáte žiadne skúsenosti! Navyše, projekt môže byť zaujímavý aj pre skúsenejších tvorcov, pretože kanál je zorganizovaný tak, že ho môžete bez väčších problémov rozšíriť o svoje vlastné nápady na počítačové videnie a rozpoznávanie tváre.

Krok 1: Materiály

Materiály
Materiály

Zoznam produktov s minimálnymi požiadavkami:

Výrobok Odkaz Komentovať
Raspberry Pi 3b RPi Link ukazuje RPi 4, pretože má oveľa lepší výkon a takmer rovnakú cenu ako RPi 3b.
Micro SD Amazon Úlohu zvládne karta micro SD s veľkosťou 16 GB alebo väčšou. Ale 16 GB karty na Amazone sú teraz v zásade za rovnakú cenu ako 32 GB karty.
Kamera Raspberry Pi Amazon Camera v1 je lacnejšia, ale v2 je lepšia a bude dlhšie podporovaná.
15 -pinový flexibilný kábel FPC Amazon Dĺžka skutočne závisí od okolností uskutočnenia tohto projektu. Ak chcete len postaviť prototyp, originálny flex kábel to zvládne.
Napájanie 5v micro usb Adafruit Tento sa nikdy nesklamal! Skvelá kvalita. (Nie je na fotografii)
Arkádové tlačidlá so vstavanou diódou LED Amazon Vyberte požadovanú veľkosť, ale návrh CAD je založený na 60 mm tlačidlách
Rezistory Amazon Potrebujete iba jeden odpor 1k a 100 ohmov. Bežné 1/4W sú v poriadku.
Kondenzátory 0,1 uF Amazon Potrebné sú tri kondenzátory. (Nie je na fotografii)
Prepojovacie vodiče / plochý kábel AmazonAmazon Ak chcete ušetriť nejaké peniaze, môžete tiež použiť starý plochý kábel disketovej mechaniky (pozri fotografiu).
Zmršťovacia trubica / elektrická páska AmazonAmazon

Potrebné nástroje:

Nástroj Nevyhnutné? Komentovať
Spájkovačka Áno
Multimeter Áno
Odstraňovač drôtov Áno Alebo môžete použiť nôž/nožnice.
Laserová rezačka Nie
3D tlačiareň Nie
Svorky Nie Užitočné na udržanie škatule spolu vo fáze testovania.

Poznámky:

Aby som zvýšil prístupnosť projektu, rozhodol som sa ho vyvinúť pomocou Raspberry Pi 3b. Aj keď zvyšuje prístupnosť, znižuje možnosti aplikácie, pretože RPi nie sú také rýchle. Ak hľadáte jeden palubný počítač, ktorý je rýchlejší, možno by ste sa mali pozrieť na NVIDIA Jetson Nano

Krok 2: Zapojenie

Elektrické vedenie
Elektrické vedenie
Elektrické vedenie
Elektrické vedenie
Elektrické vedenie
Elektrické vedenie

Schematický diagram je pre tento krok najinformatívnejší a je dosť vysvetľujúci. V prípade, že ste v elektronike nováčik, môžete použiť obrázok legendy. Hodnota komponentu (ak existuje) je uvedená v schematickom diagrame. Fotografie môžu pomôcť vidieť, ako staviam obvod. V zásade som všetky komponenty pripojil čo najbližšie k arkádovému tlačidlu, čo má za následok jasný prehľad o tom, čo sa deje.

Poznámky:

  • Veľmi rád používam konektory plochých káblov, pretože sú oveľa odolnejšie ako používanie prepojovacích káblov s jednoduchým prepojením.
  • Ako bolo navrhnuté, použil som zachytený plochý kábel zo starého počítača. Je to však trochu zložité, pretože konfiguráciu kábla budete musieť potvrdiť ručne. V tomto projekte som napríklad zistil, že niektoré otvory sú navzájom spojené (pravdepodobne použité ako zem pre pôvodnú aplikáciu). Preto som neskôr musel dostať iný kábel, ako vidíte na obrázkoch.

Krok 3: Stavba puzdra

Stavba plášťa
Stavba plášťa
Stavba plášťa
Stavba plášťa
Stavba plášťa
Stavba plášťa
Stavba plášťa
Stavba plášťa

Plášť fotoaparátu

Mnoho puzdier pre pikameru je možné voľne stiahnuť z internetu. Rozhodol som sa teda neobnovovať koleso a vybral som si základný, ale pekný kryt z internetu: thingiverse.com - puzdro/kryt na fotoaparát Raspberry pi. (Výkrik dizajnéra VGera.)

Plášť semaforu

Pre kryt semaforu som navrhol malú škatuľu v programe Autodesk Fusion 360 (ktorú je možné voľne stiahnuť, pozrite si časť Poznámky), ktorá je vhodná pre všetok hardvér. V prílohe nájdete súbor, ktorý som odoslal svojej miestnej spoločnosti na rezanie laserom. Týmto je dizajn založený na hrúbke plechu 6 mm. Ak však chcete veci upraviť, pomocou tohto odkazu máte prístup k všetkým druhom formátov súborov. Ako je znázornené na obrázkoch, môžete použiť aj kartónovú škatuľu, ak nemáte prístup k laserovej rezačke. Kartónovú škatuľu na obrázku som použil na prototypovanie a funguje to ako kúzlo.

Zostava je celkom priama:

  1. Namontujte spínače Arcade.
  2. Dbajte na to, aby káble pre zvonček boli voľné.
  3. Pripojte plochý kábel k RPi.
  4. Naskrutkujte RPi na spodný panel.
  5. Pripojte drôty zvončeka k drôtovému konektoru a pripevnite ho aj k spodnému panelu.
  6. Pripojte Picameru k RPi.
  7. Do jedného z bočných panelov vyvŕtajte otvor pre drôt na zapínanie zvončeka a napájací vodič RPi.

Káblový konektor sa používa ako upevňovací bod pre spínače zvončekového zvončeka, aby ho bolo možné neskôr pripevniť k existujúcemu zvončeku. Všetko je teraz na svojom mieste a je možné ich zlepiť. Možno však budete chcieť najskôr dokončiť ďalšie kroky, aby ste sa presvedčili, že všetko funguje tak, ako má.

Poznámky:

Autodesk Fusion 360 je voľne dostupný pre domácich majstrov! Ak chcete získať svoju kópiu, navštívte tento odkaz: autodesk.com - Fusion 360 For Hobbyists. Existujú určité výrazy, preto si ich prečítajte a uplatňujte. Bol to môj prvý projekt s Fusion 360 a nemám veľké skúsenosti s používaním softvéru CAD, ale musím povedať, že sa mi softvér a všetky dodatočné nástroje, ktoré sú súčasťou Fusion 360, veľmi páčia

Krok 4: Konfigurácia fotoaparátu

Konfigurácia fotoaparátu
Konfigurácia fotoaparátu
Konfigurácia fotoaparátu
Konfigurácia fotoaparátu
Konfigurácia fotoaparátu
Konfigurácia fotoaparátu

Predpokladá sa, že máte nainštalovaný Raspbian a že beží v režime GUI. Ak ešte nemáte nainštalovaný Raspbian, môžete postupovať podľa tohto článku: raspberrypi.org - Inštalácia obrazov operačného systému. Ak spustíte Raspbian, mala by sa vám zobraziť pracovná plocha, ako je znázornené na obrázkoch.

Nastavme kameru na RPi a uvidíme, či funguje! Tu opísaná metóda pochádza priamo z dokumentácie raspberrypi.org -. Najprv aktualizujme najnovšie balíčky (vrátane firmvéru fotoaparátu) vykonaním nasledujúcich príkazov v okne terminálu (pozri obrázky):

sudo apt aktualizácia

sudo apt úplná aktualizácia

Ďalej je potrebné kameru povoliť pomocou nasledujúceho príkazu:

sudo raspi-config

V ponuke prejdite na 5. Možnosti rozhrania -> Kamera P1. Vyberte, či chcete kameru povoliť a reštartovať RPi, vykonaním:

reštartovať

Fotoaparát by mal byť teraz správne nakonfigurovaný. Môžete to otestovať otvorením okna terminálu a spustením:

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

Obrázok sa uloží do: /home /pi.

Krok 5: Nastavenie Dockeru

Nastavenie Dockera
Nastavenie Dockera
Nastavenie Dockera
Nastavenie Dockera
Nastavenie Dockera
Nastavenie Dockera
Nastavenie Dockera
Nastavenie Dockera

Aby sa predišlo závislostiam a chybám pri inštalácii, rozhodol som sa pre tento projekt vytvoriť vlastný obrázok Dockera (pozri wikipedia.org - Docker). Ak ste o Dockere nikdy nepoužili ani o ňom nepočuli, žiadne obavy, krok za krokom vám vysvetlím, ako ho v tomto projekte použiť. V skutočnosti je to veľmi jednoduché! V prípade, že chcete spustiť tento projekt na lokálnej inštalácii (namiesto v Docker kontajneri), dám vám niekoľko tipov. Dôrazne sa však odporúča použiť obrázok Dockera. Koniec koncov, staviam ho, aby ste vám uľahčili spustenie tohto projektu!

Čo je Docker?

Poznámka: Táto časť poskytuje niekoľko základných informácií o Dockere, ktoré je možné preskočiť, ak chcete iba spustiť kód.

Tento projekt používam Docker prvýkrát a je to jednoducho úžasné! Možno ste už počuli o virtualenv alebo Anaconda pre Python? Docker je veľmi podobný v tom zmysle, že môžete jednoducho spravovať verzie balíkov a spúšťať rôzne verzie Pythonu na jednom hostiteľskom systéme pomocou iného prostredia (alebo kontajnera, ako sa tomu hovorí v Dockere). Ale v porovnaní s virtualenv a Anaconda je Docker oveľa výkonnejší, pretože nie je obmedzený iba na balíky Pythonu. V kontajneri Docker môžete skutočne nainštalovať a spravovať aj balíky požadovaného operačného systému. Zvážte napríklad web, ktorý chcete migrovať a na ktorom je spustený webový framework Python (napr. Django) s databázou (napr. MySQL). Bez kontajnera Docker by ste museli nainštalovať všetky balíky na nový server, čo je proces, ktorý je veľmi náchylný na chyby a chyby. Na druhej strane, keď je váš web vytvorený v programe Docker, migrácia je v zásade taká jednoduchá, ako presunutie súboru/súborov s obrázkom na nový server a ich spustenie. Dokážete si asi predstaviť, Docker je veľmi užitočný aj pre projekty na Instructables;)! Ak sa chcete dozvedieť viac o Dockere, navštívte ich webovú stránku: docker.org - Docker: Enterprise Container Platform. Teraz sa poďme pustiť do práce s Dockerom!

Inštalácia Dockera

Nainštalujte Docker spustením:

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

Ďalej je užívateľ pridaný do skupiny užívateľov „docker“, ktorá poskytuje práva na spustenie Dockeru. Vykonáva to:

sudo usermod -aG docker $ USER

Teraz by ste mali mať možnosť spustiť Docker. To je možné overiť spustením obrazu ahoj sveta:

docker run ahoj svet

Nakoniec stiahneme obrázok Dockera, ktorý obsahuje všetky závislosti potrebné na spustenie skriptov Python pri zvončeku. Tento proces môže chvíľu trvať, pretože obrázok je dosť veľký (~ 1,5 GB). Vykonať:

docker pull erientes/domový zvonček

Poznámka: súbor Dockerfile sa nachádza v úložisku zvončekov na Github. Teraz je všetko pripravené na spustenie skriptov zvončeka, o ktorých sa bude diskutovať v nasledujúcom kroku.

Miestna inštalácia

Opäť by som veľmi odporučil použiť obrázok Docker namiesto lokálnej inštalácie. Aby bol tento návod kompletný, teraz popíšem niektoré kroky, ktoré som vykonal pri lokálnej inštalácii.

Aby bolo možné spustiť kód, verzia pythonu by mala byť> = 3,5 (použil som python 3.5.3) a je potrebné nainštalovať nasledujúce balíky:

  • rozpoznávanie tváre
  • pikamera
  • otupený
  • Vankúš
  • python-telegram-bot
  • RPi. GPIO

Tento odkaz je veľmi užitočný: Github - Nainštalujte dlib a face_recognition na Raspberry Pi. Existuje však niekoľko upozornení: 1) Vankúš potrebuje najmenej Python 3.5, ktorý sa podľa tejto metódy nenainštaluje. 2) Tiež nie všetky balíčky, ktoré sú potrebné v projekte zvončeka, nebudú nainštalované podľa tejto metódy. Mali by ste byť však schopní ho nainštalovať jednoducho pomocou pip3.

Krok 6: Spustenie skriptov zvončeka

Spustenie skriptov zvončeka
Spustenie skriptov zvončeka
Spustenie skriptov zvončeka
Spustenie skriptov zvončeka
Spustenie skriptov zvončeka
Spustenie skriptov zvončeka

Získajte skripty

Skripty je možné ručne stiahnuť z: github.com - Erientes/zvonček. Alebo ak máte nainštalovaný Git, spustite:

klon git

Vytvárajte aliasy

Teraz, aby sme si uľahčili život, vytvorte si niekoľko aliasov na spustenie skriptov. Vykonať:

listová podložka ~/.bashrc

Pridajte nasledujúce riadky a súbor uložte:

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'

Testovacie skripty

Ak chcete otestovať, či je všetko správne nainštalované, otvorte nový terminál a spustite:

doorbell_run examples/0_test_installation.py

Výsledkom by mala byť jednoducho správa v okne terminálu, ktorá hovorí „Inštalácia zvončeka sa úspešne skončila!“. Ak chcete otestovať, či je ku kamere prístup z kontajnera Docker, spustite:

doorbell_run examples/1_test_camera.py

Spustením 1_test_camera.py bude nasnímaná fotografia a uložená ako „test.jpg“, ktorú nájdete v domove/home/pi/domový zvonček. Nakoniec ovládače LED je možné testovať vykonaním:

doorbell_run examples/2_test_voicehat_drivers.py

Keď je tento skript spustený, dióda LED v arkádovom prepínači by mala reagovať na stlačenie tlačidla.

Spustené skripty Doorbell

Na spustenie skriptov Doorbell je potrebné najskôr získať poverenia robota Telegramu. Nainštalujte si Telegram do telefónu a choďte na telegram.me - Botfather. Začnite konverzáciu a zadajte:

/newbot

Vyplňte meno a používateľské meno robota. Potom vám bude poskytnutý prístupový token. Skopírujte túto hodnotu do súboru 'credentials_telegram_template.py' v/home/pi/doorbell a uložte ju do nového súboru s názvom 'credentials_telegram.py'. Nakoniec začnite konverzáciu s robotom, ktorého ste práve vytvorili, kliknutím na odkaz, ktorý vám Botfather poskytne.

Nakoniec spustíme zvonček s rozpoznaním tváre:

doorbell_run main.py

Poznámky:

Ak sa chcete dozvedieť viac o tom, ako kód funguje, pozrite sa na komentáre v samotných skriptoch. Ak máte otázky týkajúce sa kódu, kontaktujte ma prostredníctvom Github

Krok 7: Použitie zvončeka

Image
Image
Použitie zvončeka
Použitie zvončeka
Použitie zvončeka
Použitie zvončeka

Spustime skript zvončeka spustením:

doorbell_run main.py Po načítaní balíkov skripty zostanú nečinné. V zásade sa môžu stať 2 veci:

  1. Niekto zazvoní pri dverách.
  2. Niekto je pridaný na bielu listinu.

Niekto zazvoní pri dverách

V takom prípade skript začne fotografovať, kým nenatočí fotografiu, na ktorej je rozpoznaná tvár. Po detekcii sú zavolané niektoré metódy z balíka python 'face_recognition' na výpočet 128 kódovania tváre. Ďalej sa získané kódovanie porovná s kódovaním v whitelist.csv a blacklist.csv. Možné výsledky vedú k nasledujúcej reakcii:

Na bielu listinu? Na čiernej listine? Odpoveď
Áno Nie Rozsvieti sa zelené svetlo.
Áno Áno Rozsvieti sa žlté svetlo. Kamera pri dverách odošle fotografie robotovi Telegramu s oranžovou ikonou. Tento stav môže nastať, ak bol niekto pridaný do oboch zoznamov. Napríklad keď bol niekto najskôr vítaný, ale neskôr bol na čiernej listine.
Nie Nie Rozsvieti sa žlté svetlo. Kamera pri dverách odošle fotografie robotovi Telegramu s oranžovou ikonou.
Nie Áno Rozsvieti sa červené svetlo. Kamera pri dverách odošle fotografie robotovi Telegramu s červenou ikonou.

Niekto je pridaný na bielu listinu

Ak chcete niekoho pridať do zoznamu povolených, stlačte žlté tlačidlo semaforu, keď je zvonček v kľude. Najprv sa rozsvieti žlté svetlo. Ak zelené svetlo trikrát zabliká, tvár osoby sa úspešne pridá na bielu listinu. Ak zelené svetlo trikrát neblikne, pokus nebol úspešný. V takom prípade znova stlačte žlté tlačidlo. To, či bol úspešný, si môžete ľahko overiť zazvonením pri dverách a skontrolovaním, či prejde zelené svetlo.

Ako pridať niekoho na čiernu listinu?

Očividne ľudia so zlým úmyslom neprejdú okolo, aby nám dali fotografiu svojej tváre. Namiesto toho teda môžete do priečinka img/blacklist pridať obrázky známych ľudí, ktoré (napríklad) polícia zverejnila. Každú hodinu sa v tomto priečinku kontrolujú nové obrázky. Ak existuje nový obrázok, kódovanie tváre sa vypočíta a pridá sa na blacklist.csv. Obrázok sa potom premenuje a presunie do priečinka/img/čiernej listiny/kódovaného.

Poznámky:

  • Ovládanie skriptov prihlásením sa do RPi poskytuje oveľa väčšiu kontrolu a informácie, ale základné ovládanie a informácie je možné získať výhradne pomocou semaforového displeja.
  • Rozpoznávanie tváre je implementované pomocou balíka python 'face_recognition'. Tento balík je založený na službe Dlib, ktorá obsahuje najmodernejší algoritmus rozpoznávania tvárí, ktorý v benchmarku Labeled Faces in the Wild dosahuje presnosť 99,38% (zdroj: dlib.net-High Quality Face Recognition with Deep Metric Learning)).
Pomocná technická súťaž
Pomocná technická súťaž
Pomocná technická súťaž
Pomocná technická súťaž

Prvá cena v asistenčnej technickej súťaži

Odporúča: