Obsah:

Domovní zvonek s rozpoznáváním tváře: 7 kroků (s obrázky)
Domovní zvonek s rozpoznáváním tváře: 7 kroků (s obrázky)

Video: Domovní zvonek s rozpoznáváním tváře: 7 kroků (s obrázky)

Video: Domovní zvonek s rozpoznáváním tváře: 7 kroků (s obrázky)
Video: Adel ukazala prso 2024, Červenec
Anonim
Zvonek u dveří s rozpoznáváním tváře
Zvonek u dveří s rozpoznáváním tváře

Motivace

V poslední době v mé zemi došlo k vlně loupeží, které jsou zaměřeny na starší lidi v jejich vlastních domovech. Obvykle je přístup umožněn samotnými obyvateli, protože je návštěvníci přesvědčují, že jsou pečovateli/zdravotními sestrami. Je jen za slovy, jak naštvaný a smutný ve mně tyto příběhy působí. Domov by měl být vaším prvním bezpečným útočištěm a ještě více, pokud jste již ve zranitelné situaci, když jste venku. S tímto vědomím jsem zahájil tento projekt.

Obecná informace

Systém dveřních zvonků je navržen hlavně pro starší osoby nebo osoby se zrakovým postižením a funguje velmi jednoduše. Stručně řečeno, spínač zvonku spustí kameru, aby získala záběry. Dále jsou tváře na záběrech detekovány a přiřazeny k whitelist a blacklist. Cestující získá jasnou vizuální zpětnou vazbu díky přehlednému semaforovému displeji. Zelené, žluté nebo červené světlo tímto označuje, že osoby jsou na seznamu povolených, neznámých v systému nebo na černé listině. Pokud se spustí žluté nebo červené světlo, fotografii odešle telegramový robot, aby informoval/varoval příbuzného nebo správce.

Úroveň odbornosti

Projekt byl vytvořen pro nadšence, kteří jsou obzvláště zvědaví na používání počítačového vidění a umělé inteligence. Tento návod je určen pro publikum začátečníků, takže se nemusíte bát, pokud nemáte žádné zkušenosti! Kromě toho může být projekt zajímavý i pro zkušenější tvůrce, protože potrubí je organizováno tak, že jej můžete bez větších potíží rozšířit o vlastní nápady pro počítačové vidění a rozpoznávání tváří.

Krok 1: Materiály

Materiály
Materiály

Seznam produktů s minimálními požadavky:

Produkt Odkaz Komentář
Raspberry Pi 3b RPi Link ukazuje RPi 4, protože má mnohem lepší výkon a téměř stejnou cenu jako RPi 3b.
Micro SD Amazonka Práci zvládne karta micro SD o velikosti 16 GB nebo větší. Ale 16 GB karty na Amazonu jsou nyní do značné míry za stejnou cenu jako 32 GB karty.
Fotoaparát Raspberry Pi Amazonka Camera v1 je levnější, ale v2 je lepší a bude delší dobu podporována.
15kolíkový flex kabel FPC Amazonka Délka ve skutečnosti závisí na okolnostech provádění tohoto projektu. Pokud chcete jen postavit prototyp, původní flex kabel to udělá.
Napájecí zdroj 5v micro usb Adafruit Tenhle se nikdy nezklamal! Skvělá kvalita. (Není na fotce)
Arkádová tlačítka s vestavěnou LED Amazonka Vyberte požadovanou velikost, ale návrh CAD je založen na 60mm tlačítkách
Rezistory Amazonka Potřebujete jen pár odporů 1k a 100 ohmů. Pravidelné 1/4W jsou v pořádku.
Kondenzátory 0,1 uF Amazonka Jsou potřeba tři kondenzátory. (Není na fotce)
Propojovací vodiče / plochý kabel Amazon Amazon Pokud chcete ušetřit nějaké peníze, můžete také použít starý plochý kabel disketové mechaniky (viz foto).
Smršťovací bužírka / Elektrická páska Amazon Amazon

Potřebné nástroje:

Nářadí Nezbytný? Komentář
Páječka Ano
Multimetr Ano
Odstraňovač drátů Ano Nebo můžete použít nůž/nůžky.
Laserová řezačka Ne
3D tiskárna Ne
Svorky Ne Užitečné pro udržení krabice pohromadě ve fázi testování.

Poznámky:

Aby se zvýšila přístupnost projektu, rozhodl jsem se jej vyvinout pomocí Raspberry Pi 3b. Zatímco zvyšuje přístupnost, snižuje možnosti aplikace, protože RPi nejsou tak rychlé. Pokud hledáte rychlejší jednodeskový počítač, můžete se podívat na NVIDIA Jetson Nano

Krok 2: Zapojení

Elektrické vedení
Elektrické vedení
Elektrické vedení
Elektrické vedení
Elektrické vedení
Elektrické vedení

Schematický diagram je pro tento krok nejinformativnější a je zcela samozřejmý. Pokud jste v elektronice nováčkem, můžete použít obrázek legendy. Hodnota součásti (pokud existuje) je uvedena ve schematickém diagramu. Fotografie mohou pomoci zjistit, jak stavím obvod. V zásadě jsem připojil všechny komponenty co nejblíže k arkádovému tlačítku, což má za následek jasný přehled o tom, co se děje.

Poznámky:

  • Opravdu rád používám konektory plochých kabelů, protože jsou mnohem odolnější než použití jednoduchých propojovacích vodičů.
  • Jak jsem navrhl, použil jsem uklizený plochý kabel ze starého počítače. To je ale trochu ošidné, protože konfiguraci kabelu budete muset potvrdit ručně. V tomto projektu jsem například zjistil, že některé otvory byly navzájem spojeny (pravděpodobně použity jako zem pro původní aplikaci). Proto jsem později musel získat jiný kabel, jak vidíte na obrázcích.

Krok 3: Stavba pouzdra

Stavba opláštění
Stavba opláštění
Stavba opláštění
Stavba opláštění
Stavba opláštění
Stavba opláštění
Stavba opláštění
Stavba opláštění

Pouzdro kamery

Mnoho obalů pro pikameru lze volně stáhnout z internetu. Rozhodl jsem se tedy, že neobjevím znovu kolo a vyberu si základní, ale pěkné pouzdro z internetu: thingiverse.com - pouzdro/pouzdro na fotoaparát Raspberry pi. (Výkřik designérovi VGerovi.)

Plášť semaforu

Pro pouzdro semaforu jsem navrhl malou krabičku v Autodesk Fusion 360 (která je volně ke stažení, viz Poznámky), která se hodí pro veškerý hardware. V příloze najdete soubor, který jsem zaslal své místní laserové řezací společnosti. Přitom je design založen na tloušťce plechu 6 mm. Pokud však chcete věci upravit, můžete pomocí tohoto odkazu přistupovat ke všem druhům formátů souborů. Jak je znázorněno na obrázcích, můžete také použít kartonovou krabici, pokud nemáte přístup k laserové řezačce. Kartonovou krabici na obrázku jsem použil pro prototypování a funguje to jako kouzlo.

Sestava je docela přímočará:

  1. Namontujte přepínače Arcade.
  2. Dbejte na to, aby vodiče zvonku zůstaly volné.
  3. Připojte plochý kabel k RPi.
  4. Zašroubujte RPi na spodní panel.
  5. Připojte vodiče zvonku k drátovému konektoru a připevněte jej také ke spodnímu panelu.
  6. Připojte Picameru k RPi.
  7. Do jednoho z bočních panelů vyvrtejte otvor pro spínací drát zvonku a napájecí vodič RPi.

Drátový konektor se používá jako montážní bod pro kabely spínače zvonku, takže jej lze později připevnit ke stávajícímu zvonku. Vše je nyní na svém místě a lze je slepit. Nejprve však možná budete chtít dokončit další kroky, abyste se ujistili, že vše funguje tak, jak má.

Poznámky:

Autodesk Fusion 360 je volně dostupný pro fandy! Pokud chcete získat svou kopii, navštivte tento odkaz: autodesk.com - Fusion 360 For Hobbyists. Existují určité podmínky, proto si je přečtěte a použijte je. Byl to můj první projekt s Fusion 360 a nemám s používáním CAD softwaru mnoho zkušeností, ale musím říci, že se mi software a všechny další nástroje, které s Fusion 360 přicházejí, opravdu líbí

Krok 4: Konfigurace kamery

Konfigurace kamery
Konfigurace kamery
Konfigurace kamery
Konfigurace kamery
Konfigurace kamery
Konfigurace kamery

Předpokládá se, že máte nainstalovaný Raspbian a že běží v režimu GUI. Pokud ještě nemáte nainstalovaný Raspbian, můžete se řídit tímto článkem: raspberrypi.org - Instalace obrazů operačního systému. Pokud spustíte Raspbian, měla by se vám zobrazit pracovní plocha, jak je znázorněno na obrázcích.

Pojďme nakonfigurovat kameru na RPi a uvidíme, jestli to funguje! Zde popsaná metoda je přímo z raspberrypi.org - dokumentace. Nejprve aktualizujme nejnovější balíčky (včetně firmwaru fotoaparátu) spuštěním následujících příkazů v okně terminálu (viz obrázky):

sudo apt aktualizace

sudo apt plná aktualizace

Dále je třeba kameru povolit pomocí následujícího příkazu:

sudo raspi-config

V nabídce přejděte na 5. Možnosti rozhraní -> Kamera P1. Zvolte kameru a restartujte RPi spuštěním:

restartovat

Kamera by nyní měla být správně nakonfigurována. Lze jej otestovat otevřením okna terminálu a spuštěním:

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

Obrázek se uloží do: /home /pi.

Krok 5: Nastavení Dockeru

Nastavení Dockeru
Nastavení Dockeru
Nastavení Dockeru
Nastavení Dockeru
Nastavení Dockeru
Nastavení Dockeru
Nastavení Dockeru
Nastavení Dockeru

Abych se vyhnul závislostem a chybám při instalaci, rozhodl jsem se pro tento projekt vytvořit vlastní obrázek Dockeru (viz wikipedia.org - Docker). Pokud jste o Dockeru nikdy nepoužili ani neslyšeli, nemusíte mít obavy, krok za krokem vysvětlím, jak jej v tomto projektu použít. Ve skutečnosti je to super snadné! V případě, že chcete tento projekt spustit na místní instalaci (místo v kontejneru Dockeru), dám vám pár tipů. Důrazně se však doporučuje použít obrázek Dockeru. Koneckonců jsem to postavil, abych vám usnadnil spuštění tohoto projektu!

Co je Docker?

Poznámka: tato část poskytuje několik základních informací o Dockeru, které lze přeskočit, pokud chcete spustit kód.

Tento projekt jsem poprvé použil Docker a je prostě úžasný! Možná jste slyšeli o virtualenv nebo Anaconda pro Python? Docker je velmi podobný v tom smyslu, že můžete snadno spravovat verze balíčků a spouštět různé verze Pythonu na jednom hostitelském systému pomocí jiného prostředí (nebo kontejneru, jak se tomu říká v Dockeru). Ale ve srovnání s virtualenv a Anaconda je Docker mnohem výkonnější, protože není omezen pouze na balíčky Pythonu. V kontejneru Docker můžete skutečně instalovat a spravovat také balíčky požadovaného operačního systému. Zvažte například web, který chcete migrovat a který provozuje webový framework Python (např. Django) s databází (např. MySQL). Bez kontejneru Dockeru byste museli nainstalovat všechny balíčky na nový server, což je proces, který je velmi náchylný k chybám a chybám. Na druhou stranu, když byl váš web vytvořen v Dockeru, je migrace v podstatě stejně snadná jako přesunutí souboru/souborů obrázku na nový server a jejich spuštění. Dokážete si asi představit, Docker je velmi užitečný i pro projekty na Instructables;)! Pokud se chcete o Dockeru dozvědět více, podívejte se na jejich web: docker.org - Docker: Enterprise Container Platform. Pojďme tedy začít pracovat s Dockerem!

Instalace Dockeru

Nainstalujte Docker spuštěním:

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

Dále je uživatel přidán do skupiny uživatelů „docker“, která poskytuje práva ke spuštění Dockeru. To provádí:

sudo usermod -aG docker $ USER

Nyní byste měli mít možnost spustit Docker. To lze ověřit spuštěním obrazu hello-world:

docker run hello-world

Nakonec si stáhneme obrázek Dockeru, který obsahuje všechny závislosti potřebné ke spuštění skriptů domovského zvonku Pythonu. Tento proces může chvíli trvat, protože obrázek je poměrně velký (~ 1,5 GB). Vykonat:

docker pull erientes/domovní zvonek

Poznámka: soubor Dockerfile najdete v úložišti zvonků na Githubu. Nyní je vše připraveno ke spuštění skriptů zvonku, o nichž bude řeč v dalším kroku.

Místní instalace

Opět bych velmi doporučil použít obrázek Dockeru místo lokální instalace. Ale aby byl tento návod kompletní, nyní popíšu některé kroky, které jsem provedl pro místní instalaci.

Aby bylo možné spustit kód, verze pythonu by měla být> = 3,5 (použil jsem python 3.5.3) a je třeba nainstalovat následující balíčky:

  • rozpoznávání obličejů
  • pikamera
  • otupělý
  • Polštář
  • python-telegram-bot
  • RPi. GPIO

Tento odkaz je docela užitečný: Github - Nainstalujte dlib a face_recognition na Raspberry Pi. Zde však existuje několik upozornění: 1) Pillow potřebuje alespoň Python 3.5, který nebude nainstalován podle této metody. 2) Také ne všechny balíčky, které jsou potřebné v projektu zvonku, nebudou nainstalovány podle této metody. Měli byste jej však nainstalovat jednoduše pomocí pip3.

Krok 6: Spuštění skriptů zvonku

Spouštění skriptů zvonku
Spouštění skriptů zvonku
Spouštění skriptů zvonku
Spouštění skriptů zvonku
Spouštění skriptů zvonku
Spouštění skriptů zvonku

Získejte skripty

Skripty lze ručně stáhnout z: github.com - Erientes/domovní zvonek. Nebo pokud máte nainstalovaný Git, spusťte:

klon git

Vytvářejte aliasy

Abychom si teď trochu usnadnili život, vytvořme si nějaké aliasy pro spouštění skriptů. Vykonat:

listová podložka ~/.bashrc

Přidejte následující řádky a soubor 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'

Testovací skripty

Chcete -li vyzkoušet, zda je vše správně nainstalováno, otevřete nový terminál a spusťte:

doorbell_run examples/0_test_installation.py

Výsledkem by měla být jednoduše zpráva v okně terminálu, která říká „Instalace zvonku úspěšně skončila!“. Chcete -li otestovat, zda je ke kameře přístupný pomocí kontejneru Docker, spusťte:

doorbell_run examples/1_test_camera.py

Spuštěním 1_test_camera.py bude fotografie pořízena a uložena jako 'test.jpg', který najdete v/home/pi/doorbell. A konečně, ovladače LED lze testovat spuštěním:

doorbell_run examples/2_test_voicehat_drivers.py

Když je tento skript spuštěn, LED dioda v arkádovém přepínači by měla reagovat na stisknutí tlačítka.

Spuštění skriptů zvonku

Abyste mohli spouštět skripty Doorbell, je třeba nejprve získat pověření robota Telegramu. Nainstalujte si do telefonu Telegram a přejděte na telegram.me - Botfather. Zahajte konverzaci a zadejte:

/newbot

Vyplňte jméno a uživatelské jméno pro robota. Poté vám bude poskytnut přístupový token. Zkopírujte tuto hodnotu do souboru 'credentials_telegram_template.py' v/home/pi/doorbell a uložte ji do nového souboru s názvem 'credentials_telegram.py'. Nakonec začněte konverzaci s robotem, kterého jste právě vytvořili, kliknutím na odkaz, který vám Botfather poskytne.

Nakonec spustíme zvonek s rozpoznáváním tváře:

doorbell_run main.py

Poznámky:

Pokud se chcete dozvědět více o tom, jak kód funguje, podívejte se na komentáře v samotných skriptech. Pokud máte dotaz ohledně kódu, kontaktujte mě prostřednictvím Github

Krok 7: Použití zvonku

Image
Image
Pomocí zvonku
Pomocí zvonku
Pomocí zvonku
Pomocí zvonku

Spustíme skript zvonku spuštěním:

doorbell_run main.py Po načtení balíků skripty zůstanou nečinné. V zásadě se mohou stát 2 věci:

  1. Někdo zazvoní u dveří.
  2. Někdo je přidán na seznam povolených.

Někdo zazvoní u dveří

V takovém případě začne skript pořizovat fotografie, dokud nevytvoří fotografii, na které je detekován obličej. Po detekci jsou volány některé metody z balíčku pythonu 'face_recognition' pro výpočet 128 kódování obličeje. Dále je získané kódování porovnáno s kódováním v whitelist.csv a blacklist.csv. Možné výsledky vedou k následující reakci:

Na seznamu povolených? Na černé listině? Odezva
Ano Ne Rozsvítí se zelené světlo.
Ano Ano Rozsvítí se žluté světlo. Kamera u zvonku odesílá fotografie robotovi Telegramu s oranžovou ikonou. K tomuto stavu může dojít, pokud byl někdo přidán do obou seznamů. Například když byl někdo nejprve vítán, ale později byl na černé listině.
Ne Ne Rozsvítí se žluté světlo. Kamera u zvonku odesílá fotografie robotovi Telegramu s oranžovou ikonou.
Ne Ano Rozsvítí se červené světlo. Kamera u zvonku odesílá fotografie robotovi Telegramu s červenou ikonou.

Někdo je přidán na seznam povolených

Pokud chcete někoho přidat na seznam povolených, stiskněte žluté tlačítko semaforu, když je zvonek v klidovém stavu. Nejprve se rozsvítí žluté světlo. Pokud zelené světlo třikrát zabliká, obličej osoby se úspěšně přidá na seznam povolených. Pokud zelené světlo 3x nebliká, pokus nebyl úspěšný. V takovém případě stiskněte znovu žluté tlačítko. Můžete snadno ověřit, zda byl úspěšný, zazvonit na zvonek a zkontrolovat, zda prošlo zelené světlo.

Jak přidat někoho na černou listinu?

Lidé se špatnými úmysly zjevně neprojdou kolem, aby nám poskytli fotografii své tváře. Místo toho tedy můžete do složky img/blacklist přidat obrázky známých lidí, které (například) policie zveřejnila. Každou hodinu se v této složce kontrolují nové obrázky. Pokud existuje nový obrázek, vypočítá se kódování tváře a přidá se na blacklist.csv. Obrázek je poté přejmenován a přesunut do složky/img/blacklist/encoded.

Poznámky:

  • Ovládání skriptů po přihlášení do RPi poskytuje mnohem větší kontrolu a informace, ale základní ovládání a informace lze získat pouze pomocí semaforového displeje.
  • Rozpoznávání obličejů je implementováno pomocí balíčku pythonu 'face_recognition'. Tento balíček je založen na Dlib, který obsahuje nejmodernější algoritmus rozpoznávání obličejů, který dosahuje přesnosti 99,38% na benchmarku Labeled Faces in the Wild (zdroj: dlib.net-High Quality Face Recognition with Deep Metric Learning).
Pomocná technická soutěž
Pomocná technická soutěž
Pomocná technická soutěž
Pomocná technická soutěž

První cena v asistenční technické soutěži

Doporučuje: