Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

Gesichtserkennung mit Raspberry Pi an der Haustür

prisrak

Moderator
Teammitglied
Registriert
4. Mai 2010
Beiträge
5.003
Lösungen
18
Reaktionspunkte
15.704
Punkte
413
Du musst dich Anmelden oder Registrieren um diesen link zusehen!

Original: h**ps://vc.ru/dev/70278-sozdat-sistemu-raspoznavaniya-lic-u-vhodnoy-dveri-za-150-s-pomoshchyu-odnoplatnogo-kompyutera-i-koda-na-python

Die Übersetzung von Adam Gitgis Material wurde vom englischen Team der Skyeng-Online-Schule vorbereitet.
Mit dem Nvidia Jetson Nano-Computer können Sie mit geringem Budget eigenständige Hardwaresysteme erstellen, die auf Deep-Learning-Modellen mit GPU-Beschleunigung ausgeführt werden. Es ist wie bei einem Raspberry Pi Mini-Computer, aber viel schneller.

Erstellen Sie ein Gesichtserkennungssystem an der Haustür für 150 US-Dollar mit einem Einplatinencomputer und Python-Code.

Ich erkläre Ihnen, wie Sie mit Jetson Nano ein echtes Hardwareprojekt erstellen können: eine einfache Version einer Türklingelkamera, mit der jeder verfolgt wird, der sich der Haustür nähert. Dank der Gesichtserkennung erkennt das System eine Person sofort, auch wenn sie in einer anderen Kleidung erscheint. Die Kamera zeigt Ihnen, wann und wie oft dieser Gast zu Ihnen kam.

Was ist der Nvidia Jetson Nano und wie unterscheidet er sich vom Raspberry Pi?

Für einen Software-Entwickler war der Raspberry Pi lange Zeit die einfachste Möglichkeit, ein Hardware-Gerät selbst zu erstellen. Der Raspberry Pi ist ein Einplatinencomputer für 35 US-Dollar, der unter Linux ausgeführt wird und Python vollständig unterstützt.
Und wenn Sie ein proprietäres Kameramodul für 20 US-Dollar anschließen, können Sie damit autonome Computer-Vision-Systeme erstellen. Von 2012 bis 2017 verkaufte Raspberry Pi über 12 Millionen Geräte und führte eine neue Generation von Programmierern in die Hardwareentwicklung ein.

Obwohl der Raspberry Pi ein großartiges Produkt ist, eignet er sich kaum für tiefes Lernen. Der Computer verfügt nicht über eine Grafikkarte und die CPU führt langsam Operationen mit Matrizen durch, sodass Deep-Learning-Modelle auch dazu neigen, langsam zu arbeiten.
Der Raspberry Pi ist nur für andere Aufgaben gemacht. Viele Entwickler von Computer Vision haben immer noch versucht, es zu verwenden, aber in der Regel wurden Anwendungen mit weniger als einem Frame pro Sekunde ausgeführt.
Nvidia entdeckte eine Marktlücke und entwarf den Jetson Nano. Jetson Nano ähnelt dem Raspberry Pi, ist jedoch mit einem Grafikprozessor ausgestattet und wurde speziell für den Start von Deep-Learning-Modellen entwickelt.

Ein weiterer Vorteil von Jetson Nano: Es unterstützt dieselben CUDA-Bibliotheken für die Beschleunigung, die bereits von fast allen Python-basierten Deep-Learning-Frameworks verwendet werden. Dies bedeutet, dass Sie eine vorhandene Python-basierte Deep-Learning-Anwendung mit nur minimalen Änderungen und häufig mit angemessener Leistung auf Jetson Nano ausführen können.
Dies ist eine enorme Verbesserung gegenüber Deep Learning auf dem Raspberry Pi.
Was ist zu kaufen
Bei jedem Hardwareprojekt besteht der erste Schritt darin, die zum Aufbau des Systems erforderlichen Komponenten zu erwerben. Hier ist das minimale Set, das du brauchst.
1. Nvidia Jetson Nano Board (99 US-Dollar)
Jetzt sind sie oft nicht verfügbar. Seien Sie vorsichtig und kaufen Sie einen Computer bei
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
, um Betrug zu vermeiden. Es kann auch oft
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
gekauft
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
.

Um ehrlich zu sein, habe ich meinen Jetson Nano kostenlos von einer Person bei Nvidia bekommen (damals wurden sie überall verkauft), aber Nvidia hat diesen Artikel nicht gesponsert.

2. Micro-USB-Stromanschluss (ca. 10 US-Dollar)
Wenn möglich, suchen Sie ein Netzteil, das Jetson Nano unterstützt, da einige USB-Stecker nicht genügend Spannung liefern. Das alte Ladegerät für ein Mobiltelefon kann aber auch geeignet sein.
3. Himbeer-Pi-Kameramodul v2.x (ca. 30 US-Dollar)
Sie können das Raspberry Pi v1.x-Kameramodul nicht verwenden, da Jetson Nano diesen Chipsatz nicht unterstützt. Für die Arbeit benötigen Sie ein Kameramodul v2.x.
3. Schnelle microSD-Karte mit einer Kapazität von mindestens 32 GB (ca. 10-25 USD)
Ich habe ein bisschen mehr ausgegeben und eine 128-GB-Karte bei Amazon gekauft. Ich empfehle, mehr Speicher zu verwenden, damit Sie auf jeden Fall genügend Speicherplatz haben. Wenn Sie eine zusätzliche microSD haben, können Sie diese verwenden.
4. Ein paar andere Dinge, die Sie brauchen werden. Aber vielleicht hast du sie schon
  • MicroSD-Kartenleser für Computer zum Herunterladen und Installieren der Jetson-Software.
  • Eine kabelgebundene USB-Tastatur und eine kabelgebundene USB-Maus zur Steuerung des Jetson Nano.
  • Jeder Monitor oder Fernseher mit einem HDMI-Eingang (nicht über einen HDMI-DVI-Konverter) zur Überwachung Ihrer Arbeit. Für die Ersteinrichtung von Jetson Nano benötigen Sie einen Monitor, auch wenn Sie später darauf verzichten.
  • Ethernet-Kabel und ein Ort zum Anschließen. Seltsam, aber der Jetson Nano hat kein eingebautes Wi-Fi. Falls gewünscht, können Sie einen WLAN-USB-Adapter hinzufügen. Jetson Nano unterstützt jedoch nicht alle Modelle. Überprüfen Sie dies vor dem Kauf.
Alles zusammen und los geht's. Ich hoffe, Sie geben insgesamt nicht mehr als 150 USD aus. Das Jetson Nano Board selbst und das Kameramodul kosten am meisten.
Natürlich können Sie Ihre Jetson Nano-Ausrüstung und -Kamera kaufen oder ein Etui dafür anfertigen. Es hängt jedoch davon ab, wo Sie das System installieren möchten.
Laden Sie die Jetson Nano-Software herunter
Bevor Sie Geräte an Jetson Nano anschließen, müssen Sie ein Software-Image herunterladen.
Das Standard-Nvidia-Software-Image ist einfach großartig. Es enthält Ubuntu Linux 18.04 mit vorinstalliertem Python 3.6 und OpenCV, was viel Zeit spart.
Installieren der Jetson Nano-Software auf einer SD-Karte:
  1. Laden Sie das SD-Karten-
    Du musst dich Anmelden oder Registrieren um diesen link zusehen!
    des Nvidia Jetson Nano Developer Kit herunter.
  2. Laden Sie
    Du musst dich Anmelden oder Registrieren um diesen link zusehen!
    herunter, das Programm, mit dem das Jetson-Software-Image auf die SD-Karte geschrieben wird.
  3. Starten Sie Etcher und erfassen Sie damit das SD-Karten-Image des Jetson Nano Developer Kit. Es dauert ungefähr 20 Minuten.
Nachdem Sie nun die Standard-SD-Karte mit der Jetson Nano-Software haben, ist es an der Zeit, den Rest der Hardware zu entpacken.
Verbindung
Nehmen Sie den Jetson Nano aus der Schachtel.
Im Inneren befindet sich der Jetson Nano und eine kleine Palette, die als Ständer verwendet werden kann. Nichts mehr - keine Drähte, keine Anweisungen.
Legen Sie zuerst die microSD-Karte ein. Der Schlitz dafür ist sehr gut versteckt, er befindet sich auf der Rückseite unter dem Kühler.

Dann müssen Sie das Kameramodul Raspberry Pi v2.x anschließen. Es verbindet sich mit der Schleife. Suchen Sie den Schlitz für das Flachbandkabel, öffnen Sie den Stecker, stecken Sie das Kabel ein und schließen Sie es wieder. Stellen Sie sicher, dass die Metallkontakte am Flachbandkabel nach innen zum Kühlkörper zeigen.

Stecken Sie nun den Rest ein:
  • Maus und Tastatur an USB-Ports;
  • Monitor mit einem HDMI-Kabel;
  • Ethernet-Kabel zum Netzwerkanschluss (und stellen Sie sicher, dass das andere Ende mit dem Router verbunden ist);
  • Micro-USB-Netzkabel.
Es wird sich so etwas ergeben.
Der Jetson Nano startet automatisch, wenn Sie das Netzkabel anschließen. Der Installationsbildschirm sollte auf dem Monitor angezeigt werden.

Laden Sie zuerst das Benutzerkonto auf und richten Sie es ein


Wenn Sie Jetson Nano zum ersten Mal starten, müssen Sie den Standardprozess zum Registrieren eines neuen Ubuntu Linux-Benutzers durchlaufen. Sie wählen den Tastaturtyp aus, erstellen ein Benutzerkonto und wählen ein Kennwort aus. Wenn Sie fertig sind, sehen Sie einen leeren Ubuntu Linux-Desktop.
Python 3.6 und OpenCV sind bereits installiert. Sie können jetzt wie auf jedem anderen Computer ein Terminalfenster öffnen und Python-Programme ausführen. Es sollten jedoch noch einige Bibliotheken installiert werden, bevor die Türklingelkamera-Anwendung gestartet wird.

Installieren Sie die erforderlichen Python-Bibliotheken
Obwohl Jetson Nano viele nützliche Dinge bereits vorinstalliert hat, gibt es einige seltsame Auslassungen. OpenCV wird beispielsweise mit Python-Bindungen installiert, aber pip und numpy sind nicht installiert und für die Arbeit mit OpenCV erforderlich. Lass es uns reparieren.
Öffnen Sie auf dem Jetson Nano-Desktop ein Terminalfenster und führen Sie die folgenden Befehle aus. Verwenden Sie bei jeder Abfrage nach Ihrem Kennwort dasselbe Kennwort, das Sie beim Erstellen des Benutzerkontos eingegeben haben.
sudo apt-get update sudo apt-get installiere python3-pip cmake libopenblas-dev liblapack-dev lib

Zuerst aktualisieren wir apt , das Standard-Linux-Softwareinstallationstool, mit dem wir alles andere installieren. Als nächstes installieren Sie einige grundlegende Bibliotheken mit apt , die wir später benötigen, um numpy und dlib zu kompilieren.
Bevor Sie fortfahren, müssen Sie eine Auslagerungsdatei erstellen. Jetson Nano hat nur 4 GB RAM, dies reicht nicht aus, um die Dlib zu kompilieren. Konfigurieren Sie die Auslagerungsdatei, mit der Sie Speicherplatz als zusätzlichen Arbeitsspeicher verwenden können, um das Problem zu beheben. Glücklicherweise gibt es in Jetson Nano eine einfache Möglichkeit, eine solche Datei zu erstellen. Führen Sie einfach diese beiden Befehle aus.
Git-Klon
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
./installSwapfile/installSwapfile.sh
Diese Methode habe ich auf der
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Website
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
.

Zu diesem Zeitpunkt müssen Sie das System neu starten , um sicherzustellen, dass die Auslagerungsdatei ausgeführt wird. Überspringen Sie diesen Schritt nicht, sonst schlägt der nächste fehl. Sie können den Computer über das Menü in der oberen rechten Ecke des Desktops neu starten.
Öffnen Sie nach dem Betreten des Systems ein neues Terminalfenster - und Sie können fortfahren. Installieren wir zunächst numpy , die Python-Bibliothek, die für mathematische Berechnungen verwendet wird.
pip3 install numpy
Die Ausführung des Befehls dauert 15 Minuten, da er von Grund auf neu kompiliert wird . Warten Sie einfach und machen Sie sich keine Sorgen, auch wenn anscheinend alles hängt.
Jetzt können wir dlib installieren, eine von
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
erstellte Deep Learning-Bibliothek, die die harte Arbeit für die face_recognition- Bibliothek leistet .
In den CUDA-Bibliotheken von Nvidia für Jetson Nano ist jedoch ein
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
aufgetreten, der den ordnungsgemäßen Betrieb verhindert. Um diesen Fehler zu umgehen , müssen wir dlib herunterladen, die Codezeile bearbeiten und neu kompilieren. Mach dir keine Sorgen, es ist nicht so schwer.
Führen Sie im Terminal diese Befehle aus.
wget
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
tar jxvf dlib-19.17.tar.bz2 cd dlib-19.17
Dadurch wird der Quellcode für dlib heruntergeladen und entpackt . Bevor wir es kompilieren, müssen wir eine Zeile in einen Kommentar verwandeln. Führen Sie diesen Befehl aus.
gedit dlib / cuda / cudnn_dlibapi.cpp
Dies öffnet die Datei, die wir in einem Texteditor bearbeiten müssen. Suchen Sie die
folgende Codezeile in der Datei (es sollte 854 sein).
forward_algo = forward_best_algo;
Und kommentieren Sie es, indem Sie zwei Schrägstriche davor einfügen.
// forward_algo = forward_best_algo;
Speichern Sie nun die Datei, schließen Sie den Editor und kehren Sie zum Terminalfenster zurück. Führen Sie dann diese Befehle aus, um dlib zu kompilieren und zu installieren.
cd dlib sudo python3 setup.py installieren
Dies dauert ca. 30-60 Minuten. Jetson Nano wird vielleicht warm, aber mach dir keine Sorgen, lass es funktionieren.
Installieren Sie abschließend die Python-Bibliothek face_recognition mit dem folgenden Befehl.
sudo pip3 installiere face_recognition
Ihr Jetson Nano ist jetzt bereit, Gesichter mit voller Beschleunigung der CUDA-GPU zu erkennen. Wir gehen zu den interessantesten über.
Starten einer Gesichtserkennungskamera-Demoanwendung für eine Türklingel
Die Bibliothek face_recognition ist die von mir erstellte Python-Bibliothek. Dies vereinfacht den Erkennungsprozess: Sie können Gesichter erkennen und kodieren und dann die Kodierungen von Gesichtern vergleichen, um festzustellen, ob sie zur selben Person gehören. All dies mit nur ein paar Zeilen Code.
Mit dieser Bibliothek habe ich eine Türklingelkameraanwendung erstellt. Es erkennt Personen an der Haustür und merkt sich, wenn dieselbe Person zurückkommt. So sieht es beim Start aus.
Laden Sie zunächst den Code herunter. Ich habe
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
vollständigen Code mit Kommentaren hier gepostet, aber hier ist eine einfachere Möglichkeit, ihn von der Befehlszeile auf meinen Jetson Nano herunterzuladen.
wget -O doorcam.py tiny.cc/doorcam
Dann können Sie den Code ausführen und testen.
python3 doorcam.py
Auf dem Desktop wird ein Video-Popup angezeigt. Immer wenn eine neue Person vor der Kamera erscheint, registriert das System sein Gesicht und beginnt zu verfolgen, wie lange er an der Tür ist. Wenn dieselbe Person nach mehr als 5 Minuten das Büro verlässt und zurückkehrt, registriert die Kamera einen neuen Besuch und verfolgt ihn erneut. Sie können das Video jederzeit schließen, indem Sie q drücken.
Die Anwendung speichert automatisch Informationen zu allen Besuchern in einer Datei mit known_faces.dat . Wenn Sie das Programm erneut ausführen, werden diese Daten verwendet, um frühere Besucher zu erkennen. Wenn Sie die Liste berühmter Personen löschen möchten, beenden Sie einfach das Programm und löschen Sie diese Datei.
Python Code Walkthrough-Türklingelkamera
Möchten Sie wissen, wie dieser Code funktioniert? Mal sehen
Der Code beginnt mit dem Importieren der Bibliotheken. Das Wichtigste:
  • OpenCV (in Python cv2 genannt) - wir werden es verwenden, um Bilder von der Kamera zu lesen.
  • face_recognition wird benötigt, um Gesichter zu erkennen und zu vergleichen.
import face_recognition import cv2 von datetime import datetime, timedelta import numpy als np import plattform import pickle
Als Nächstes erstellen wir verschiedene Variablen, um Daten über Personen vor der Kamera zu speichern. Variablen fungieren als einfache Datenbank berühmter Besucher.
known_face_encodings = [] known_face_metadata = []
Diese Anwendung ist nur eine Demo, daher speichern wir berühmte Gesichter in einer regulären Python-Liste. In dieser Anwendung (mit einer großen Datenbank von Personen) können Sie stattdessen eine echte Datenbank verwenden.
Wir haben die Funktion, bekannte Gesichtsdaten zu speichern und zu laden.
def save_known_faces (): mit open ("known_faces.dat", "wb") als face_data_file: face_data = [known_face_encodings, known_face_metadata] pickle.dump (face_data, face_data_file) print ("Known faces backed up to disk")
Mit der in Python integrierten Pickle-Operation werden berühmte Gesichter auf die Festplatte geschrieben. Die Daten werden auf die gleiche Weise zurückgeladen, aber ich habe sie hier nicht angezeigt.
Ich wollte, dass dieses Programm auf einem Desktop-Computer oder auf Jetson Nano ohne Änderungen funktioniert. Daher fügte er eine einfache Operation hinzu, um festzustellen, auf welcher Plattform gerade gearbeitet wird.
def running_on_jetson_nano (): return platform.machine () == "aarch64"
Dieser Vorgang ist erforderlich, da verschiedene Plattformen unterschiedlichen Zugriff auf die Kamera haben. Auf einem Laptop können wir einfach die Kameranummer an OpenCV übertragen, und das Bild wird extrahiert. Aber auf Jetson Nano müssen wir gstreamer verwenden, um Bilder zu streamen, was benutzerdefinierten Code erfordert.
Nachdem wir die Plattform festgelegt haben, wählen wir die entsprechende Zugriffsmethode für die Kamera aus. Dies ist die einzige Einstellung, die erforderlich ist, um das Programm auf Jetson Nano anstelle eines normalen Computers auszuführen.
Wenn das Programm ein neues Gesicht erkennt, rufen wir die Operation auf und fügen sie der Datenbank berühmter Gesichter hinzu.
def register_new_face (face_encoding, face_image): known_face_encodings.append (face_encoding) known_face_metadata.append ({"first_seen": datetime.now (), "first_seen_this_interaction": datetime.now (), "last_seen": datetime.now () seen_count ": 1," seen_frames ": 1," face_image ": face_image,})
Speichern Sie zunächst die Gesichtscodierung, die die Person in der Liste darstellt. Dann speichern wir das entsprechende Wörterbuch der Gesichtsdaten in der zweiten Liste. Diese Daten sind nützlich, um das erste Auftreten einer Person, die Zeit in der Nähe der Kamera, die Anzahl der Besuche und auch die Erstellung eines kleinen Gesichtsbildes zu verfolgen.
Wir benötigen außerdem eine Hilfsoperation, um zu überprüfen, ob sich eine unbekannte Person in unserer Datenbank befindet.
def lookup_known_face (face_encoding): metadata = None if len (known_face_encodings) == 0: Rückgabe von Metadaten face_distances = face_recognition. best_match_index] metadata ["last_seen"] = datetime.now () metadata ["seen_frames"] + = 1 if datetime.now () - metadata ["first_seen_this_interaction"]> timedelta (minutes = 5): metadata ["first_seen_this_interaction"] = datetime.now () - Metadaten ["seen_count"] + = 1 geben Metadaten zurück
Hier müssen Sie einige wichtige Dinge tun:
  1. Mit der Bibliothek face_recogntion prüfen wir, wie ein unbekanntes Gesicht allen früheren Besuchern ähnelt. Die Operation face_distance () repräsentiert die Ähnlichkeit zwischen einer unbekannten Person und allen bekannten Gesichtern als Zahl - je kleiner die Zahl, desto größer die Ähnlichkeit.
  2. Wenn eine Person einem der berühmten Besucher sehr ähnlich ist, nehmen wir an, dass diese Person bereits gekommen ist. In diesem Fall aktualisieren wir die Zeit, zu der wir es zuletzt gesehen haben, und erhöhen die Anzahl der Male, zu denen wir es in der Informationsleiste des Videos gesehen haben.
  3. Wenn diese Person in den letzten fünf Minuten vor der Kamera gesehen wurde, gehen wir davon aus, dass sie im Rahmen desselben Besuchs immer noch hier ist. Andernfalls wird davon ausgegangen, dass dies ein neuer Besuch ist. Daher setzen wir den Zeitstempel zurück, der den letzten Besuch verfolgt.
Wir benötigen außerdem eine Hilfsoperation, um zu überprüfen, ob sich eine unbekannte Person in unserer Datenbank befindet.
def lookup_known_face (face_encoding): metadata = None if len (known_face_encodings) == 0: Rückgabe von Metadaten face_distances = face_recognition. best_match_index] metadata ["last_seen"] = datetime.now () metadata ["seen_frames"] + = 1 if datetime.now () - metadata ["first_seen_this_interaction"]> timedelta (minutes = 5): metadata ["first_seen_this_interaction"] = datetime.now () - Metadaten ["seen_count"] + = 1 geben Metadaten zurück
Hier müssen Sie einige wichtige Dinge tun:
  1. Mit der Bibliothek face_recogntion prüfen wir, wie ein unbekanntes Gesicht allen früheren Besuchern ähnelt. Die Operation face_distance () repräsentiert die Ähnlichkeit zwischen einer unbekannten Person und allen bekannten Gesichtern als Zahl - je kleiner die Zahl, desto größer die Ähnlichkeit.
  2. Wenn eine Person einem der berühmten Besucher sehr ähnlich ist, nehmen wir an, dass diese Person bereits gekommen ist. In diesem Fall aktualisieren wir die Zeit, zu der wir es zuletzt gesehen haben, und erhöhen die Anzahl der Male, zu denen wir es in der Informationsleiste des Videos gesehen haben.
  3. Wenn diese Person in den letzten fünf Minuten vor der Kamera gesehen wurde, gehen wir davon aus, dass sie im Rahmen desselben Besuchs immer noch hier ist. Andernfalls wird davon ausgegangen, dass dies ein neuer Besuch ist. Daher setzen wir den Zeitstempel zurück, der den letzten Besuch verfolgt.
Dann werden wir durch jedes erkannte Gesicht gehen und entscheiden, wer wir zuvor gesehen haben und welcher von ihnen ein neuer Besucher ist.
für face_location, face_encoding in zip (face_locations, face_encodings): metadata = lookup_known_face (face_encoding) falls metadata nicht None: time_at_door = datetime.now () - metadata ['first_seen_this_interaction'] face_label = f_total_total_t ())} s "else: face_label =" Neuer Besucher! " # Nehmen Sie das Bild des Gesichts oben, rechts, unten, links = Gesichtsposition face_image = small_frame [oben: unten, links: rechts] face_image = cv2.resize (face_image, (150, 150)) # Fügen Sie das neue Gesicht zu unserem hinzu bekannte Gesichtsdaten register_new_face (face_encoding, face_image)
Wenn die Person bereits gesehen wurde, extrahieren wir die Metadaten seiner vorherigen Besuche. Wenn nicht, fügen Sie sie der Gesichtsdatenbank hinzu und extrahieren das Gesichtsbild aus dem Rahmen, um es der Datenbank hinzuzufügen.
Wenn wir alle Personen gefunden und ihre Identität festgestellt haben, können wir durch die erkannten Gesichter gehen, Quadrate um sie herum zeichnen und jedem eine Verknüpfung hinzufügen.
für (oben, rechts, unten, links), face_label in zip (face_locations, face_labels): left * = 4 # Zeichnen Sie ein Kästchen um die Fläche cv2.rectangle (Rahmen, (links, oben), (rechts, unten), (0, 0, 255), 2) # Zeichnen Sie eine Beschriftung mit einer Beschreibung unter der Fläche cv2 .rectangle (Rahmen, (links, unten - 35), (rechts, unten), (0, 0, 255), cv2.FILLED) cv2.putText (Rahmen, face_label, (links + 6, unten - 6), cv2 .FONT_HERSHEY_DUPLEX, 0,8, (255, 255, 255), 1)
Ich wollte auch eine Liste der letzten Besucher und die Anzahl ihrer Besuche oben auf dem Bildschirm sehen.

Dazu müssen Sie alle berühmten Gesichter aussortieren und feststellen, welche in letzter Zeit vor der Kamera standen. Wir werden das Gesicht jedes letzten Besuchers auf dem Bildschirm anzeigen und die Anzahl der Besuche berechnen.
number_of_recent_visitors = 0 für Metadaten in known_face_metadata: # Wenn wir diese Person in letzter Minute gesehen haben, wenn datetime.now () - metadata ["last_seen"] <timedelta (seconds = 10): # Zeichne das bekannte Gesichtsbild x_position = number_of_recent_visitors * 150 Frames [30: 180, x_position: x_position + 150] = Metadaten ["face_image"] Anzahl_von_Besuchern + = 1 # Beschriften Sie das Bild mit der Anzahl der Besuche = Metadaten ['seen_count'] visit_label = f "{visitors} Visits "if Visits == 1: visit_label =" Erster Besuch "cv2.putText (Frame, visit_label, (x_position + 10, 170), cv2.FONT_HERSHEY_DUPLEX, 0.6, (255, 255, 255), 1)
Schließlich können wir den aktuellen Frame des Videos auf dem Bildschirm mit allen Kommentaren darüber anzeigen.
cv2.imshow ('Video', Frame)
Und um im Falle eines Programmfehlers keine Daten zu verlieren, speichern wir alle 100 Frames eine Liste berühmter Persönlichkeiten auf der Festplatte.
if len (face_locations)> 0 und number_of_frames_since_save> 100: save_known_faces () number_of_face
Es bleibt fast alles, nur ein paar Zeilen Reinigungscode zu schreiben, um die Kamera beim Beenden des Programms auszuschalten.
Der Programmstartcode befindet sich ganz unten im Programm.
if __name__ == "__main__": load_known_faces () main_loop ()
Laden Sie einfach die berühmten Gesichter (falls vorhanden) und starten Sie dann die Hauptschleife, die die Daten von der Kamera liest und die Ergebnisse auf dem Bildschirm anzeigt.
Das gesamte Programm besteht aus ungefähr 200 Zeilen, macht aber interessante Dinge: Es erkennt Besucher, identifiziert sie und verfolgt sie jedes Mal, wenn sie zur Tür zurückkehren. Dies ist eine lustige App, obwohl sie bei Missbrauch gruselig sein kann.
Interessante Tatsache: In vielen Anzeigen auf Straßen und Bushaltestellen wird ein ähnlicher Code zum Verfolgen von Gesichtern verwendet, um Informationen darüber zu sammeln, wer die Anzeigen wie lange ansieht. Es mag Ihnen vorher unglaublich vorgekommen sein, aber jetzt können Sie es selbst für nur 150 USD tun.

Programmerweiterung

Dieses Programm ist ein Beispiel für die Verwendung einer kleinen Menge Python 3-Code, die auf einem Jetson Nano-Board für 100 US-Dollar ausgeführt wird, um ein leistungsstarkes System zu erstellen.
Wenn Sie daraus ein echtes Überwachungssystem machen möchten, können Sie die Möglichkeit hinzufügen, mit Twilio jedes Mal eine SMS zu senden, wenn eine neue Person an der Tür erscheint, anstatt sie nur auf dem Monitor anzuzeigen. Oder versuchen Sie, eine einfache speicherinterne Datenbank durch eine vollständige zu ersetzen.
Sie können experimentieren und das Programm in etwas völlig anderes verwandeln. Das Schema zum Lesen eines Videorahmens, Suchen nach Objekten in einem Bild und andere Operationen bilden die Grundlage aller Arten von Computersichtsystemen. Versuchen Sie, den Code zu ändern, und lassen Sie sich etwas völlig anderes einfallen. Schalten Sie beispielsweise Ihre Lieblingsmusik ein, wenn Sie an Ihrer Tür ankommen. Schauen Sie sich andere
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Beispiele an, um zu sehen, wie Sie so etwas tun können.
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
 

Anhänge

  • 36f0e3f0-13cb-11e7-8258-4d0c9ce1e419.gif
    36f0e3f0-13cb-11e7-8258-4d0c9ce1e419.gif
    1,8 MB · Aufrufe: 37
Zuletzt bearbeitet:
geiles spielzeug , wird bei mir aber nie eingebaut , wenn ich schon sehe das Barack am Smartphone erkent wird , kann jeder der mein foto hat einfach rein kommen , also ist das system genau so sicher wie komplet offene tür
 
kann man aber auch nur auf die eigene Haustiere einschränken:smile: der zweite Knopf von links ist dazu im Sysem da.:)

Im Prinzip kann man doch so was an jeder Kamera anwenden, die man zuhause betreibt. Die Erkennungsfunktion ist schon interessant.
 
Zuletzt bearbeitet:
Zurück
Oben