Tartalomjegyzék:

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

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

Videó: Ajtócsengő arcfelismeréssel: 7 lépés (képekkel)
Videó: Dahua megoldások II Analóg kaputelefon, zárnyitás arcfelismeréssel 2024, Június
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: