Ajtócsengő arcfelismeréssel: 7 lépés (képekkel)
Ajtócsengő arcfelismeréssel: 7 lépés (képekkel)
Anonim
Ajtócsengő arcfelismeréssel
Ajtócsengő arcfelismeréssel

Motiváció

Az utóbbi időben rablások hulláma volt hazámban, amelyek az otthonukban élő idős embereket célozzák meg. Általában maguk a lakók biztosítják a hozzáférést, mivel a látogatók meggyőzik őket arról, hogy gondozók/ápolók. Szavakon kívül, mennyire dühösek és szomorúak ezek a történetek. Az otthon legyen az első biztos menedék, és még inkább, ha már kiszolgáltatott helyzetben van, amikor kint tartózkodik. Ennek tudatában kezdtem el ezt a projektet.

Általános információ

A csengőrendszert elsősorban idős vagy látássérült személyek számára tervezték, és működése meglehetősen egyszerű. Röviden, az ajtócsengő kapcsolója aktiválja a kamerát, hogy felvételt kapjon. Ezután a felvételeken lévő arcokat észlelik, és egyeztetik egy fehér listával és feketelistával. Az utas világos vizuális visszajelzést kap a közlekedési lámpák világos kijelzőjén. Ezáltal a zöld, sárga vagy piros jelzőfény azt jelzi, hogy a személy (ek) szerepelnek az engedélyezőlistán, a rendszer számára ismeretlen, illetve a feketelistán. Ha a sárga vagy a piros lámpa kigyullad, a fényképet egy távirat bot küldi, hogy tájékoztassa/figyelmeztesse a hozzátartozót vagy a gondnokot.

Szaktudás szintje

A projektet olyan rajongók számára hozták létre, akik különösen kíváncsiak a számítógépes látás és a mesterséges intelligencia használatára. Ez az útmutató a kezdők közönségének készült, ezért ne aggódjon, ha nincs tapasztalata! Ezenkívül a projekt a tapasztaltabb gyártók számára is érdekes lehet, mivel a folyamat úgy van megszervezve, hogy a saját számítógépes látásmódjával és arcfelismerési ötleteivel nagy gond nélkül kibővítheti.

1. lépés: Anyagok

Anyagok
Anyagok

Terméklista minimális követelményekkel:

Termék Link Megjegyzés
Raspberry Pi 3b RPi A link az RPi 4 -et mutatja, mivel sokkal jobb a teljesítménye és majdnem azonos az ára, mint az RPi 3b -nek.
Micro SD amazon Egy 16 GB -os vagy nagyobb méretű micro SD kártya elvégzi a feladatot. De az Amazon 16 GB -os kártyái most nagyjából ugyanolyan árúak, mint a 32 GB -os kártyák.
Raspberry Pi kamera amazon A v1 kamera olcsóbb, de a v2 jobb és hosszabb ideig támogatott.
15 tűs FPC flex kábel amazon A hossza valójában a projekt körülményeitől függ. Ha csak prototípust szeretne építeni, akkor az eredeti flex kábel teszi a dolgát.
Tápegység 5V micro usb Adafruit Ez soha nem hagyott cserben! Kiváló minőség. (Nem a fotón)
Arcade gombok beépített LED-del amazon Válassza ki a kívánt méretet, de a CAD kialakítás 60 mm -es gombokon alapul
Ellenállások amazon Csak néhány 1k és 100 ohmos ellenállás kell. A normál 1/4W jó.
Kondenzátorok 0,1 uF amazon Három kondenzátorra van szükség. (Nem a fotón)
Jumper vezetékek / szalagkábel AmazonAmazon Ha pénzt szeretne spórolni magának, használhat régi floppy meghajtó szalagkábelt is (lásd a fotót).
Zsugorcső / elektromos szalag AmazonAmazon

Szükséges eszközök:

Eszköz Alapvető? Megjegyzés
Forrasztópáka Igen
Multiméter Igen
Huzalcsupaszító Igen Vagy használhat kést/ollót.
Lézervágó Nem
3d nyomtató Nem
Bilincsek Nem Hasznos a doboz együtt tartásához a tesztelési fázisban.

Megjegyzések:

A projekt hozzáférhetőségének növelése érdekében úgy döntöttem, hogy Raspberry Pi 3b segítségével fejlesztem. Bár növeli a hozzáférhetőséget, csökkenti az alkalmazás képességeit, mivel az RPi -k nem olyan gyorsak. Ha egy gyorsabb fedélzeti számítógépet keres, érdemes megnézni az NVIDIA Jetson Nano -t

2. lépés: Kábelezés

Vezeték
Vezeték
Vezeték
Vezeték
Vezeték
Vezeték

A sematikus diagram a leginkább informatív ehhez a lépéshez, és teljesen magától értetődő. Ha még nem ismeri az elektronikát, használhatja a jelmagyarázatot. A komponens értékét (ha van) a vázlatos diagram tartalmazza. A fényképek segíthetnek abban, hogyan építsem fel az áramkört. Alapvetően minden összetevőt a lehető legközelebb az árkádgombhoz kötöttem, ami egyértelmű áttekintést eredményez a történésekről.

Megjegyzések:

  • Nagyon szeretek szalagkábel -csatlakozókat használni, mivel ezek sokkal szilárdabbak, mint az egy jumper vezetékek.
  • Ahogy javasolták, egy régi számítógép számítógépről lehúzott szalagkábelt használtam. Ez azonban kissé trükkös, mivel manuálisan kell megerősítenie a kábel konfigurációját. Ebben a projektben például megtudtam, hogy néhány lyuk össze van kötve egymással (valószínűleg az eredeti alkalmazás talajaként használták). Ezért később más kábelt kellett beszereznem, mint a képeken látható.

3. lépés: A burkolat építése

A burkolat építése
A burkolat építése
A burkolat építése
A burkolat építése
A burkolat építése
A burkolat építése
A burkolat építése
A burkolat építése

Kamera ház

A picamera számos burkolata szabadon letölthető az internetről. Tehát úgy döntök, hogy nem találom fel újra a kereket, és egy alapvető, de szép burkolatot választok az internetről: thingiverse.com - Raspberry pi kameratok/ház. (Kiáltás a tervező VGerhez.)

Közlekedési lámpa burkolata

A közlekedési lámpa burkolatához egy kis dobozt terveztem az Autodesk Fusion 360 -ban (amely szabadon letölthető, lásd Megjegyzések), amely minden hardverhez illeszkedik. A mellékletben megtalálja a helyi lézervágó cégnek küldött fájlt. Ezáltal a kialakítás 6 mm -es lemezvastagságon alapul. Ha azonban módosítani szeretné a dolgokat, akkor mindenféle fájlformátumhoz hozzáférhet ezen a linken keresztül. A képeken látható módon használhat kartondobozt is, ha nincs hozzáférése lézervágóhoz. A képen lévő kartondobozt használtam a prototípus készítéséhez, és varázslatosan működik.

Az összeszerelés meglehetősen egyszerű:

  1. Szerelje fel az Arcade kapcsolókat.
  2. Ügyeljen arra, hogy az ajtócsengő vezetékei ne legyenek szabadon.
  3. Csatlakoztassa a szalagkábelt az RPi -hez.
  4. Csavarja fel az RPi -t az alsó panelre.
  5. Csatlakoztassa a csengő vezetékét egy vezetékcsatlakozóhoz, és szerelje fel az alsó panelre is.
  6. Csatlakoztassa a Picamerát az RPi -hez.
  7. Fúrjon lyukat az egyik oldalsó panelbe a csengőváltó vezeték és az RPi tápkábel számára.

A huzalcsatlakozót a csengőkapcsoló vezetékeinek rögzítési pontjaként használják, így a későbbiekben egy meglévő csengőhöz rögzíthető. Most minden a helyén van és összeragasztható. Előbb azonban érdemes befejezni a következő lépéseket, hogy megbizonyosodjon arról, hogy minden megfelelően működik.

Megjegyzések:

Az Autodesk Fusion 360 szabadon elérhető a hobbisták számára! Ha meg szeretné kapni a példányát, látogasson el erre a linkre: autodesk.com - Fusion 360 For Hobbyists. Vannak bizonyos kifejezések, ezért feltétlenül olvassa el és alkalmazza azokat. Ez volt az első projektem a Fusion 360 -mal, és nincs sok tapasztalatom a CAD szoftver használatában, de meg kell mondanom, hogy nagyon szeretem a szoftvert és a Fusion 360 -hoz tartozó összes kiegészítő eszközt

4. lépés: A kamera konfigurálása

A kamera konfigurálása
A kamera konfigurálása
A kamera konfigurálása
A kamera konfigurálása
A kamera konfigurálása
A kamera konfigurálása

Feltételezzük, hogy a Raspbian telepítve van, és GUI módban fut. Ha még nincs telepítve a Raspbian, kövesse ezt a cikket: raspberrypi.org - Az operációs rendszer -lemezképek telepítése. Ha elindítja a Raspbian programot, látnia kell egy asztalt, ahogy a képeken látható.

Konfiguráljuk a kamerát az RPi -n, és nézzük meg, működik -e! Az itt leírt módszer közvetlenül a raspberrypi.org webhelyről származik - Dokumentáció. Először frissítsünk a legújabb csomagokra (beleértve a kamera firmware -jét is) a következő parancsok végrehajtásával egy terminál ablakban (lásd a képeket):

sudo apt frissítés

sudo apt teljes frissítés

Ezután engedélyezni kell a kamerát a következő paranccsal:

sudo raspi-config

A menüben lépjen az 5. Interfész opciók -> P1 kamera pontra. Válassza ki, hogy engedélyezi -e a fényképezőgépet, és indítsa újra az RPi -t a következők végrehajtásával:

újraindítás

A fényképezőgépet most megfelelően kell konfigurálni. A terminál ablakának megnyitásával tesztelhető, és végrehajtható:

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

A képet a /home /pi mappába menti.

5. lépés: A Docker beállítása

A Docker beállítása
A Docker beállítása
A Docker beállítása
A Docker beállítása
A Docker beállítása
A Docker beállítása
A Docker beállítása
A Docker beállítása

A függőség és a telepítési hibák elkerülése érdekében úgy döntöttem, hogy létrehozok egy egyedi Docker -képet ehhez a projekthez (lásd: wikipedia.org - Docker). Ha soha nem használt vagy hallott a Dockerről, ne aggódjon, lépésről lépésre elmagyarázom, hogyan kell használni ebben a projektben. Valójában szuper könnyű! Ha ezt a projektet helyi telepítésen szeretné futtatni (nem Docker -tárolóban), adok néhány tippet. De erősen ajánlott a Docker kép használata. Végül is azért építem, hogy megkönnyítsem a projekt futtatását!

Mi az a Docker?

Megjegyzés: ez a rész néhány háttérinformációt tartalmaz a Dockerről, amelyeket kihagyhat, ha csak a kódot szeretné futtatni.

Ez a projekt az első alkalom, amikor a Docker -t használtam, és egyszerűen fantasztikus! Talán hallott már a virtualenv -ről vagy az Anaconda for Python -ról? Nos, a Docker abban az értelemben nagyon hasonló, hogy könnyen kezelheti a csomagverziókat, és különböző Python verziókat futtathat egy gazdarendszeren egy másik környezet (vagy a Dockerben nevezett tároló) használatával. De a virtualenvhez és az Anacondához képest a Docker sokkal erősebb, mivel nem korlátozódik csak a Python csomagokra. Valóban, egy Docker tárolóban telepítheti és kezelheti a kívánt operációs rendszer csomagjait is. Vegyünk például egy áttelepíteni kívánt webhelyet, amely Python webkeretet (pl. Django) futtat, és rendelkezik adatbázissal (pl. MySQL). Docker -tároló nélkül minden csomagot telepítenie kell az új szerverre, ami nagyon hajlamos a hibákra és hibákra. Másrészt, amikor webhelyét Dockerben építették, az áttelepítés alapvetően olyan egyszerű, mint a képfájl/fájlok áthelyezése az új szerverre, és azok futtatása. Ahogy el tudod képzelni, a Docker nagyon hasznos az Instructables projektjeiben is;)! Ha többet szeretne tudni a Dockerről, keresse fel a weboldalukat: docker.org - Docker: Enterprise Container Platform. Most induljunk fel a Dockerrel!

A Docker telepítése

A Docker telepítéséhez hajtsa végre a következőket:

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

Ezután a felhasználó hozzáadódik a „docker” felhasználói csoporthoz, amely biztosítja a Docker futtatásának jogait. Ezt a következők végzik:

sudo usermod -aG dokkoló $ USER

Most már képesnek kell lennie a Docker futtatására. Ezt a hello-world kép futtatásával lehet érvényesíteni:

docker fuss hello-world

Végül húzzuk meg a Docker -képet, amely tartalmazza az ajtócsengő Python -szkriptek futtatásához szükséges összes függőséget. Ez a folyamat eltarthat egy ideig, mivel a kép meglehetősen nagy (~ 1,5 GB). Végrehajtás:

dokkoló erientes/csengő

Megjegyzés: A Dockerfile megtalálható a Github ajtócsengő -tárházában. Most minden készen áll az ajtócsengő -parancsfájlok futtatására, amelyeket a következő lépésben tárgyalunk.

Helyi telepítés

Ismételten javaslom a Docker kép használatát a helyi telepítés helyett. De hogy ez az oktatóanyag teljes legyen, most leírom a helyi telepítés során tett néhány lépést.

A kód futtatásához a python verziójának> = 3.5 -nek kell lennie (én a python 3.5.3 -at használtam), és a következő csomagokat kell telepíteni:

  • arcfelismerés
  • picamera
  • szar
  • Párna
  • python-távirat-bot
  • RPi. GPIO

Ez a link nagyon hasznos: Github - Telepítse a dlib -t és a face_recognition -t egy Raspberry Pi -re. Van azonban néhány figyelmeztetés: 1) A párnának legalább a Python 3.5 -re van szüksége, amelyet nem a módszer szerint telepítenek. 2) Ezenkívül nem minden csomagot kell telepíteni a csengőprojektben, ha ezt a módszert követik. Azonban telepítenie kell a pip3 használatával.

6. lépés: Az ajtócsengő -parancsfájlok futtatása

A Doorbell Scripts futtatása
A Doorbell Scripts futtatása
A Doorbell Scripts futtatása
A Doorbell Scripts futtatása
A Doorbell Scripts futtatása
A Doorbell Scripts futtatása

Szerezd meg a szkripteket

A szkriptek manuálisan letölthetők innen: github.com - Erientes/doorbell. Vagy ha telepítette a Git programot, hajtsa végre a következőket:

git klón

Hozzon létre álneveket

Most, hogy kicsit megkönnyítsük az életünket, hozzunk létre néhány álnevet a szkriptek futtatásához. Végrehajtás:

levélpad ~/.bashrc

Adja hozzá a következő sorokat, és mentse a fájlt:

alias doorbell_run = 'docker run -privilegizált -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'

Teszt szkriptek

Annak ellenőrzéséhez, hogy minden megfelelően van -e telepítve, nyisson meg egy új terminált, és hajtsa végre:

doorbell_run példa/0_test_installation.py

Az eredménynek egyszerűen egy üzenetnek kell lennie a terminál ablakában, amely azt mondja: „Ajtócsengő telepítése sikeresen befejeződött!”. Annak teszteléséhez, hogy a kamera elérhető -e a Docker -tároló segítségével, futtassa:

ajtócsengő_példák/1_test_camera.py

Az 1_test_camera.py futtatásával egy fénykép készül és mentésre kerül „test.jpg” néven, amely a/home/pi/doorbell mappában található. Végül a LED -illesztőprogramok tesztelhetők a következők végrehajtásával:

doorbell_run példa/2_test_voicehat_drivers.py

Amikor ez a szkript fut, az arcade kapcsoló LED -jének reagálnia kell a gomb megnyomásakor.

Ajtócsengő -szkriptek futtatása

A Doorbell szkriptek futtatásához először meg kell szerezni a Telegram bot hitelesítő adatait. Telepítse a Telegramot a telefonjára, és menjen a telegram.me - Botfather oldalra. Kezdjen beszélgetést, és írja be:

/newbot

Adja meg a bot nevét és felhasználónevét. Ezt követően megkapja a hozzáférési tokent. Másolja ezt az értéket a "credentials_telegram_template.py" fájlba a/home/pi/doorbell mappában, és mentse el egy új, "credentials_telegram.py" nevű fájlba. Végül kezdjen beszélgetést az imént létrehozott botjával a Botfather által biztosított linkre kattintva.

Végül futtassuk az Arcfelismeréses ajtócsengőt:

doorbell_run main.py

Megjegyzések:

Ha többet szeretne megtudni a kód működéséről, nézze meg a szkriptek megjegyzéseit. Ha kérdése van a kóddal kapcsolatban, kérjük, vegye fel velem a kapcsolatot a Githubon keresztül

7. lépés: Az ajtócsengő használata

Image
Image
Az ajtócsengő használata
Az ajtócsengő használata
Az ajtócsengő használata
Az ajtócsengő használata

Futtassuk le a csengő parancsfájlt a következő végrehajtással:

doorbell_run main.py A csomagok betöltése után a szkriptek tétlenné válnak. Alapvetően 2 dolog történhet:

  1. Valaki csenget az ajtón.
  2. Valaki felkerül az engedélyezőlistára.

Valaki csenget az ajtón

Ebben az esetben a forgatókönyv addig kezd fotózni, amíg egy olyan fotót nem készít, amelyben arcot észlel. Az észlelést követően a python „face_recognition” csomagjának néhány módszere meghívásra kerül az arc 128 -as kódolásának kiszámításához. Ezt követően a kapott kódolást összehasonlítjuk a whitelist.csv és a blacklist.csv kódolásokkal. A lehetséges eredmények a következő választ eredményezik:

Fehér listán? Feketelistán? Válasz
Igen Nem A zöld fény bekapcsol.
Igen Igen A sárga fény bekapcsol. Az ajtócsengő kamera fotókat küld a narancssárga ikonnal ellátott Telegram botnak. Ez az állapot akkor fordulhat elő, ha valakit mindkét listához hozzáadtak. Például amikor valakit eleinte szívesen láttak, később azonban feketelistára került.
Nem Nem A sárga fény bekapcsol. Az ajtócsengő kamera fotókat küld a narancssárga ikonnal ellátott Telegram botnak.
Nem Igen A piros lámpa kigyullad. Az ajtócsengő kamera fényképeket küld a Telegram botnak, piros ikonnal.

Valaki felkerül az engedélyezőlistára

Ha valakit fel kíván venni az engedélyezőlistára, nyomja meg a közlekedési lámpa sárga gombját, amikor a csengő készenléti állapotban van. Először is, a sárga lámpa kigyullad. Ha a zöld fény háromszor felvillan, a személy arca sikeresen felkerült az engedélyezőlistára. Ha a zöld jelzőfény nem villog háromszor, a kísérlet nem volt sikeres. Ebben az esetben nyomja meg újra a sárga gombot. Könnyedén ellenőrizheti, hogy sikeres volt -e, ha csenget, és ellenőrzi, hogy a zöld lámpa átment -e.

Hogyan lehet valakit felvenni a feketelistára?

Nyilvánvaló, hogy a rossz szándékú emberek nem fognak elmenni, hogy fényképet adjanak nekünk az arcukról. Így ehelyett felveheti az img/feketelista mappába a hírhedt emberek képeit, amelyeket (például) a rendőrség tett közzé. Óránként ellenőrzik, hogy vannak -e új mappák a mappában. Ha új kép van, az arckódolás kiszámításra kerül, és hozzáadódik a feketelistához.csv. A képet ezután átnevezik, és áthelyezik az/img/blacklist/kódolt mappába.

Megjegyzések:

  • A szkripteknek az RPi -be való bejelentkezéssel történő kezelése sokkal több ellenőrzést és információt biztosít, de az alapvető vezérlés és információk csak a közlekedési lámpák kijelzőjével érhetők el.
  • Az arcfelismerés a „face_recognition” python csomag használatával valósul meg. Ez a csomag a Dlib-en alapul, amely a legkorszerűbb arcfelismerő algoritmust tartalmazza, amely 99,38% -os pontosságot végez a Címkézett arcok a vadon benchmarkban (forrás: dlib.net-Kiváló minőségű arcfelismerés mély metrikus tanulással).
Segítő technikai verseny
Segítő technikai verseny
Segítő technikai verseny
Segítő technikai verseny

Első díj a segítő technikai versenyen

Ajánlott: