Inhaltsverzeichnis:
- Schritt 1: Materialien
- Schritt 2: Verkabelung
- Schritt 3: Aufbau des Gehäuses
- Schritt 4: Konfigurieren der Kamera
- Schritt 5: Docker einrichten
- Schritt 6: Ausführen der Türklingel-Skripte
- Schritt 7: Verwenden der Türklingel
Video: Türklingel mit Gesichtserkennung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Motivation
In letzter Zeit hat es in meinem Land eine Welle von Raubüberfällen gegeben, die auf ältere Menschen in ihren eigenen vier Wänden abzielen. In der Regel wird der Zutritt von den Bewohnern selbst gewährt, da die Besucher sie davon überzeugen, dass sie Pflegekräfte sind. Es ist einfach unbeschreiblich, wie wütend und traurig mich diese Geschichten machen. Das Zuhause sollte Ihr erster sicherer Hafen sein und noch mehr, wenn Sie sich im Freien bereits in einer verwundbaren Position befinden. In diesem Sinne habe ich dieses Projekt gestartet.
Allgemeine Information
Das Türklingelsystem ist hauptsächlich für ältere oder sehbehinderte Personen konzipiert und in seiner Funktionsweise recht unkompliziert. Kurz gesagt, der Türklingelschalter löst die Kamera aus, um Filmmaterial zu erhalten. Als nächstes werden Gesichter im Filmmaterial erkannt und mit einer Whitelist und Blacklist abgeglichen. Durch eine übersichtliche Ampelanzeige erhält der Insasse eine klare optische Rückmeldung. Dabei zeigt das grüne, gelbe oder rote Licht an, dass die Person(en) auf der Whitelist, dem System unbekannt bzw. auf der Blacklist stehen. Wenn das gelbe oder rote Licht ausgelöst wird, wird das Foto von einem Telegram-Bot gesendet, um einen Angehörigen oder Hausmeister zu informieren / zu warnen.
Kompetenzniveau
Das Projekt richtete sich an Enthusiasten, die besonders neugierig auf den Einsatz von Computer Vision und künstlicher Intelligenz sind. Dieses instructable ist für ein Publikum von Anfängern geschrieben, also machen Sie sich keine Sorgen, wenn Sie keine Erfahrung haben! Darüber hinaus kann das Projekt auch für erfahrenere Hersteller interessant sein, da die Pipeline so organisiert ist, dass Sie sie ohne großen Aufwand mit Ihren eigenen Ideen für Computer Vision und Gesichtserkennung erweitern können.
Schritt 1: Materialien
Produktliste mit Mindestanforderungen:
Produkt | Verknüpfung | Kommentar |
---|---|---|
Raspberry Pi 3b | RPi | Link zeigt RPi 4, da es eine viel bessere Leistung und fast den gleichen Preis wie das RPi 3b hat. |
Micro-SD | Amazonas | Eine Micro-SD-Karte von 16 GB oder größer wird die Arbeit erledigen. Aber die 16-GB-Karten bei Amazon sind jetzt fast genauso teuer wie die 32-GB-Karten. |
Raspberry Pi-Kamera | Amazonas | Kamera v1 ist billiger, aber v2 ist besser und wird länger unterstützt. |
15-poliges FPC-Flexkabel | Amazonas | Die Länge hängt tatsächlich von den Umständen der Durchführung dieses Projekts ab. Wenn Sie nur einen Prototyp bauen möchten, wird das Original-Flexkabel die Arbeit erledigen. |
Netzteil 5V Micro-USB | Adafrucht | Dieser hat sich nie im Stich gelassen! Großartige Qualität. (Nicht auf dem Foto) |
Arcade-Tasten mit integrierter LED | Amazonas | Wählen Sie die gewünschte Größe, aber das CAD-Design basiert auf 60-mm-Knöpfen |
Widerstände | Amazonas | Sie benötigen nur ein paar 1k- und 100-Ohm-Widerstände. Normale 1/4W sind in Ordnung. |
Kondensatoren 0,1 uF | Amazonas | Es werden drei Kondensatoren benötigt. (Nicht auf dem Foto) |
Überbrückungsdrähte / Flachbandkabel | AmazonAmazon | Wenn Sie sich etwas Geld sparen möchten, können Sie auch ein altes Flachbandkabel für das Diskettenlaufwerk verwenden (siehe Foto). |
Schrumpfschlauch / Isolierband | AmazonAmazon |
Benötigte Werkzeuge:
Werkzeug | Notwendig? | Kommentar |
---|---|---|
Lötkolben | Jawohl | |
Multimeter | Jawohl | |
Abisolierzange | Jawohl | Oder Sie verwenden ein Messer/eine Schere. |
Laserschneider | Nein | |
3D Drucker | Nein | |
Klemmen | Nein | Nützlich, um die Box in der Testphase zusammenzuhalten. |
Bemerkungen:
Um die Zugänglichkeit des Projekts zu erhöhen, habe ich mich entschieden, es mit einem Raspberry Pi 3b zu entwickeln. Während es die Zugänglichkeit erhöht, verringert es die Fähigkeiten der Anwendung, da RPis nicht so schnell sind. Wenn Sie auf der Suche nach einem schnelleren Einplatinencomputer sind, sollten Sie sich den NVIDIA Jetson Nano ansehen
Schritt 2: Verkabelung
Das schematische Diagramm ist für diesen Schritt am informativsten und ziemlich selbsterklärend. Falls Sie neu in der Elektronik sind, können Sie das Legendenbild verwenden. Der Wert des Bauteils (sofern zutreffend) ist im Schaltplan angegeben. Die Fotos können helfen, zu sehen, wie ich die Schaltung baue. Grundsätzlich habe ich alle Komponenten so nah wie möglich am Arcade-Button angeschlossen, was zu einem klaren Überblick über das Geschehen führt.
Bemerkungen:
- Ich verwende sehr gerne Flachbandkabelstecker, da sie viel stabiler sind als einzelne Überbrückungsdrähte.
- Wie vorgeschlagen, habe ich ein gereinigtes Flachbandkabel von einem alten Computer verwendet. Dies ist jedoch etwas schwierig, da Sie die Konfiguration des Kabels manuell bestätigen müssen. In diesem Projekt habe ich zum Beispiel herausgefunden, dass einige Löcher miteinander verbunden waren (wahrscheinlich als Boden für die ursprüngliche Anwendung verwendet). Daher musste ich mir später ein anderes Kabel besorgen, wie auf den Bildern zu sehen ist.
Schritt 3: Aufbau des Gehäuses
Kameragehäuse
Viele Hüllen für die Picamera können kostenlos aus dem Internet heruntergeladen werden. Also erfinde ich das Rad nicht neu und wähle ein einfaches, aber schönes Gehäuse aus dem Internet: thingiverse.com - Raspberry Pi Kameragehäuse / Gehäuse. (Shout-out an den Designer VGer.)
Ampelgehäuse
Für das Ampelgehäuse habe ich in Autodesk Fusion 360 eine kleine Box entworfen (die kostenlos heruntergeladen werden kann, siehe Anmerkungen), die auf die gesamte Hardware passt. Im Anhang finden Sie die Datei, die ich an meine lokale Laserschneidfirma gesendet habe. Dabei basiert das Design auf einer Plattenstärke von 6mm. Wenn Sie jedoch etwas anpassen möchten, können Sie über diesen Link auf alle Arten von Dateiformaten zugreifen. Wie auf den Bildern gezeigt, können Sie auch einen Karton verwenden, wenn Sie keinen Zugang zu einem Laserschneider haben. Ich habe den Karton auf dem Bild für das Prototyping verwendet und es funktioniert wie ein Zauber.
Die Montage ist ziemlich einfach:
- Montieren Sie die Arcade-Schalter.
- Achten Sie darauf, dass die Drähte für die Türklingel frei bleiben.
- Verbinden Sie das Flachbandkabel mit dem RPi.
- Schrauben Sie das RPi auf die Bodenplatte.
- Schließen Sie die Türklingelkabel an einen Kabelstecker an und montieren Sie ihn auch an der Unterseite.
- Verbinden Sie die Picamera mit dem RPi.
- Bohren Sie ein Loch in eine der Seitenwände für das Schaltkabel der Türklingel und das RPi-Stromkabel.
Der Kabelverbinder dient als Befestigungspunkt für die Kabel des Türklingelschalters, um ihn später an einer bestehenden Türklingel befestigen zu können. Jetzt ist alles an seinem Platz und kann zusammengeklebt werden. Möglicherweise möchten Sie jedoch zuerst die nächsten Schritte abschließen, um sicherzustellen, dass alles so funktioniert, wie es sein soll.
Bemerkungen:
Autodesk Fusion 360 ist für Bastler kostenlos verfügbar! Wenn Sie Ihre Kopie erhalten möchten, besuchen Sie diesen Link: autodesk.com - Fusion 360 für Hobbyisten. Es gibt einige Begriffe, also stellen Sie sicher, dass Sie sie lesen und anwenden. Es war mein erstes Projekt mit Fusion 360 und ich habe nicht viel Erfahrung mit der Verwendung von CAD-Software, aber ich muss sagen, dass ich die Software und all die zusätzlichen Tools, die mit Fusion 360 kommen, wirklich mag
Schritt 4: Konfigurieren der Kamera
Es wird vorausgesetzt, dass Sie Raspbian installiert haben und es im GUI-Modus läuft. Wenn Sie Raspbian noch nicht installiert haben, können Sie diesem Artikel folgen: raspberrypi.org - Betriebssystem-Images installieren. Wenn Sie Raspbian booten, sollten Sie einen Desktop sehen, wie in den Bildern gezeigt.
Lassen Sie uns die Kamera auf dem RPi konfigurieren und sehen, ob es funktioniert! Die hier beschriebene Methode stammt direkt aus der raspberrypi.org - Dokumentation. Lassen Sie uns zunächst auf die neuesten Pakete (einschließlich Kamera-Firmware) aktualisieren, indem wir die folgenden Befehle in einem Terminalfenster ausführen (siehe Bilder):
sudo apt-Update
sudo apt Voll-Upgrade
Als nächstes muss die Kamera mit dem folgenden Befehl aktiviert werden:
sudo raspi-config
Gehen Sie im Menü zu 5. Schnittstellenoptionen -> P1-Kamera. Aktivieren Sie die Kamera und starten Sie das RPi neu, indem Sie Folgendes ausführen:
neustarten
Die Kamera sollte nun richtig konfiguriert sein. Es kann getestet werden, indem ein Terminalfenster geöffnet und ausgeführt wird:
raspistill -v -o /home/pi/test.jpg
Das Bild wird gespeichert unter: /home/pi.
Schritt 5: Docker einrichten
Um die Abhängigkeits- und Installationsfehler zu vermeiden, habe ich beschlossen, ein benutzerdefiniertes Docker-Image für dieses Projekt zu erstellen (siehe wikipedia.org - Docker). Wenn Sie Docker noch nie verwendet oder davon gehört haben, keine Sorge, ich werde Ihnen Schritt für Schritt erklären, wie Sie es in diesem Projekt verwenden. Tatsächlich ist es super einfach! Falls Sie dieses Projekt auf einer lokalen Installation (statt in einem Docker-Container) ausführen möchten, gebe ich Ihnen einige Tipps. Es wird jedoch dringend empfohlen, das Docker-Image zu verwenden. Schließlich baue ich es, um Ihnen die Durchführung dieses Projekts zu erleichtern!
Was ist Docker?
Hinweis: Dieser Teil enthält einige Hintergrundinformationen zu Docker, die übersprungen werden können, wenn Sie nur den Code ausführen möchten.
Dieses Projekt ist das erste Mal, dass ich Docker verwendet habe und es ist einfach großartig! Vielleicht haben Sie schon von virtualenv oder Anaconda für Python gehört? Docker ist insofern ziemlich ähnlich, als Sie Paketversionen einfach verwalten und verschiedene Python-Versionen auf einem Hostsystem ausführen können, indem Sie eine andere Umgebung (oder einen Container, wie er in Docker genannt wird) verwenden. Aber im Vergleich zu virtualenv und Anaconda ist Docker viel leistungsfähiger, da es nicht nur auf Python-Pakete beschränkt ist. Tatsächlich können Sie in einem Docker-Container auch die Pakete eines gewünschten Betriebssystems installieren und verwalten. Betrachten Sie beispielsweise eine Website, die Sie migrieren möchten, auf der ein Python-Web-Framework (z. B. Django) mit einer Datenbank (z. B. MySQL) ausgeführt wird. Ohne Docker-Container müsste man alle Pakete auf dem neuen Server installieren, was sehr anfällig für Fehler und Bugs ist. Auf der anderen Seite, wenn Ihre Website in Docker erstellt wurde, ist die Migration im Grunde so einfach wie das Verschieben der Image-Datei/Dateien auf den neuen Server und deren Ausführung. Wie Sie sich vorstellen können, ist Docker auch für Projekte auf Instructables sehr nützlich;)! Wenn Sie mehr über Docker erfahren möchten, besuchen Sie deren Website: docker.org - Docker: Enterprise Container Platform. Lassen Sie uns jetzt mit Docker loslegen!
Docker installieren
Installieren Sie Docker, indem Sie Folgendes ausführen:
curl -sSL https://get.docker.com | NS
Als nächstes wird der Benutzer der Benutzergruppe 'docker' hinzugefügt, die die Rechte zum Ausführen von Docker bereitstellt. Dies geschieht durch:
sudo usermod -aG docker $USER
Jetzt sollten Sie Docker ausführen können. Dies kann durch Ausführen des hello-world-Image überprüft werden:
docker run hallo-world
Schließlich ziehen wir das Docker-Image, das alle Abhängigkeiten enthält, die zum Ausführen der Python-Skripte für die Türklingel erforderlich sind. Dieser Vorgang kann eine Weile dauern, da das Image ziemlich groß ist (~1,5 GB). Ausführen:
docker pull erientes/türklingel
Hinweis: Das Dockerfile finden Sie im Türklingel-Repository auf Github. Jetzt ist alles bereit, um die Türklingel-Skripte auszuführen, die im nächsten Schritt besprochen werden.
Lokale Installation
Auch hier würde ich dringend empfehlen, das Docker-Image anstelle einer lokalen Installation zu verwenden. Aber um dieses Tutorial zu vervollständigen, werde ich jetzt einige der Schritte beschreiben, die ich für die lokale Installation unternommen habe.
Um den Code ausführen zu können, sollte die Python-Version >= 3.5 sein (ich habe Python 3.5.3) und die folgenden Pakete müssen installiert sein:
- Gesichtserkennung
- Pikamera
- numpy
- Kopfkissen
- Python-Telegramm-Bot
- RPi. GPIO
Dieser Link ist sehr hilfreich: Github - Installiere dlib und face_recognition auf einem Raspberry Pi. Allerdings gibt es hier einige Vorbehalte: 1) Pillow benötigt mindestens Python 3.5, das nach dieser Methode nicht installiert wird. 2) Außerdem werden nicht alle Pakete, die im Türklingelprojekt benötigt werden, mit dieser Methode installiert. Sie sollten es jedoch einfach mit pip3 installieren können.
Schritt 6: Ausführen der Türklingel-Skripte
Holen Sie sich die Skripte
Die Skripte können manuell heruntergeladen werden von: github.com - Erientes/doorbell. Oder wenn Sie Git installiert haben, führen Sie Folgendes aus:
git-Klon
Aliasse erstellen
Um unser Leben etwas einfacher zu machen, erstellen wir nun einige Aliase zum Ausführen der Skripte. Ausführen:
Blattunterlage ~/.bashrc
Fügen Sie die folgenden Zeilen hinzu und speichern Sie die Datei:
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'
Testskripte
Um zu testen, ob alles richtig installiert ist, öffnen Sie ein neues Terminal und führen Sie Folgendes aus:
Türklingel_Run Beispiele/0_test_installation.py
Das Ergebnis sollte einfach eine Meldung im Terminalfenster sein, die sagt 'Türklingelinstallation erfolgreich beendet!'. Um zu testen, ob der Docker-Container auf die Kamera zugreifen kann, führen Sie Folgendes aus:
Türklingel_Run Beispiele/1_test_camera.py
Durch Ausführen von 1_test_camera.py wird ein Foto aufgenommen und als 'test.jpg' gespeichert, das in /home/pi/doorbell zu finden ist. Schließlich können die LED-Treiber getestet werden, indem Folgendes ausgeführt wird:
Beispiele für Doorbell_Run/2_test_voicehat_drivers.py
Wenn dieses Skript ausgeführt wird, sollte die LED im Arcade-Schalter reagieren, wenn die Taste gedrückt wird.
Ausführen von Türklingel-Skripten
Um die Doorbell-Skripte auszuführen, müssen zunächst die Anmeldeinformationen des Telegram-Bots abgerufen werden. Installiere Telegram auf deinem Handy und gehe zu telegram.me - Botfather. Starten Sie ein Gespräch und geben Sie ein:
/neubot
Geben Sie einen Namen und einen Benutzernamen für den Bot ein. Danach erhalten Sie das Zugriffstoken. Kopieren Sie diesen Wert in die Datei „credentials_telegram_template.py“in /home/pi/doorbell und speichern Sie ihn in einer neuen Datei namens „credentials_telegram.py“. Starten Sie schließlich eine Konversation mit dem Bot, den Sie gerade erstellt haben, indem Sie auf den Link klicken, den Botfather Ihnen zur Verfügung stellt.
Lassen Sie uns zum Schluss die Türklingel mit Gesichtserkennung ausführen:
doorbell_run main.py
Bemerkungen:
Wenn Sie mehr über die Funktionsweise des Codes erfahren möchten, lesen Sie die Kommentare in den Skripten selbst. Bei Fragen zum Code kontaktieren Sie mich bitte über Github
Schritt 7: Verwenden der Türklingel
Lassen Sie uns das Türklingel-Skript ausführen, indem Sie Folgendes ausführen:
doorbell_run main.py Nach dem Laden der Pakete gehen die Skripte in den Leerlauf. Grundsätzlich können 2 Dinge passieren:
- Jemand klingelt an der Tür.
- Jemand wird der Whitelist hinzugefügt.
Jemand klingelt an der Tür
In diesem Fall beginnt das Skript mit der Aufnahme von Fotos, bis es ein Foto aufnimmt, auf dem ein Gesicht erkannt wird. Nach der Erkennung werden einige Methoden aus dem Python-Paket 'face_recognition' aufgerufen, um eine 128-Kodierung des Gesichts zu berechnen. Als nächstes wird die erhaltene Codierung mit den Codierungen in whitelist.csv und blacklist.csv verglichen. Die möglichen Ergebnisse führen zu folgender Reaktion:
Auf Whitelist? | Auf der schwarzen Liste? | Antwort |
---|---|---|
Jawohl | Nein | Grünes Licht geht an. |
Jawohl | Jawohl | Gelbes Licht geht an. Die Türklingelkamera sendet Fotos mit dem orangefarbenen Symbol an den Telegram-Bot. Dieser Zustand kann auftreten, wenn jemand zu beiden Listen hinzugefügt wurde. Zum Beispiel, wenn jemand zuerst willkommen war, aber später auf die schwarze Liste gesetzt wurde. |
Nein | Nein | Gelbes Licht geht an. Die Türklingelkamera sendet Fotos mit dem orangefarbenen Symbol an den Telegram-Bot. |
Nein | Jawohl | Rotes Licht geht an. Die Türklingelkamera sendet Fotos mit rotem Symbol an den Telegram-Bot. |
Jemand wurde zur Whitelist hinzugefügt
Um jemanden zur Whitelist hinzuzufügen, drücken Sie im Ruhezustand der Türklingel die gelbe Taste der Ampel. Zuerst leuchtet das gelbe Licht. Wenn das grüne Licht dreimal blinkt, wurde das Gesicht der Person erfolgreich zur Whitelist hinzugefügt. Wenn das grüne Licht nicht dreimal blinkt, war der Versuch nicht erfolgreich. Drücken Sie in diesem Fall erneut die gelbe Taste. Sie können leicht überprüfen, ob es erfolgreich war, indem Sie an der Tür klingeln und prüfen, ob das grüne Licht bestanden wurde.
Wie füge ich jemanden zur Blacklist hinzu?
Natürlich kommen Leute mit schlechten Absichten nicht vorbei, um uns ein Foto von ihrem Gesicht zu geben. Stattdessen können Sie Bilder von berüchtigten Personen, die (zum Beispiel) die Polizei veröffentlicht hat, in den Ordner img/blacklist hinzufügen. Stündlich wird dieser Ordner auf neue Bilder überprüft. Wenn ein neues Bild vorhanden ist, wird die Gesichtskodierung berechnet und zur blacklist.csv hinzugefügt. Das Bild wird dann umbenannt und in den Ordner /img/blacklist/encoded verschoben.
Bemerkungen:
- Die Bedienung der Skripte durch Einloggen in das RPi bietet viel mehr Kontrolle und Informationen, aber die grundlegende Kontrolle und Informationen können nur über die Ampelanzeige erhalten werden.
- Die Gesichtserkennung wird mithilfe des Python-Pakets 'face_recognition' implementiert. Dieses Paket basiert auf Dlib, das einen hochmodernen Gesichtserkennungsalgorithmus enthält, der beim Labeled Faces in the Wild-Benchmark eine Genauigkeit von 99,38 % erreicht (Quelle: dlib.net - High Quality Face Recognition with Deep Metric Learning).
Erster Preis beim Assistive Tech Contest
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Gesichtserkennung auf Raspberry Pi 4B in 3 Schritten
Gesichtserkennung auf Raspberry Pi 4B in 3 Schritten: In diesem Instructable werden wir die Gesichtserkennung auf Raspberry Pi 4 mit Shunya O / S mit der Shunyaface-Bibliothek durchführen. Shunyaface ist eine Bibliothek zur Gesichtserkennung/-erkennung. Das Projekt zielt darauf ab, die schnellste Erkennungs- und Erkennungsgeschwindigkeit mit
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
Gesichtserkennung in Echtzeit: ein End-to-End-Projekt – wikiHow
Echtzeit-Gesichtserkennung: ein End-to-End-Projekt: In meinem letzten Tutorial zur Erkundung von OpenCV haben wir AUTOMATIC VISION OBJECT TRACKING gelernt. Jetzt werden wir unsere PiCam verwenden, um Gesichter in Echtzeit zu erkennen, wie Sie unten sehen können: Dieses Projekt wurde mit dieser fantastischen "Open Source Computer Vision Library&qu