Inhaltsverzeichnis:

Zombie-Erkennung von Smart Security Owl (Deep Learning) - Gunook
Zombie-Erkennung von Smart Security Owl (Deep Learning) - Gunook

Video: Zombie-Erkennung von Smart Security Owl (Deep Learning) - Gunook

Video: Zombie-Erkennung von Smart Security Owl (Deep Learning) - Gunook
Video: Самая ДЕШЕВАЯ камера видеонаблюдения с ФИКСАЦИЕЙ ЛИЦА человека 2024, November
Anonim

Hallo zusammen, willkommen bei T3chFlicks! In diesem Halloween-Tutorial zeigen wir Ihnen, wie wir einem alltäglichen Haushaltsklassiker eine super gruselige Note verleihen: der Überwachungskamera.

Wie?! Wir haben eine Nachtsicht-Eule entwickelt, die mithilfe von Bildverarbeitung Personen verfolgt. Oh, und es johlt, genau wie in der Realität!

Wir haben uns sehr auf dieses Projekt gefreut und haben darauf gewartet, seit der neue Raspberry Pi 4 veröffentlicht wurde. Es verfügt über 4 GB RAM, was die Tür zu vielen wirklich aufregenden Möglichkeiten öffnet, einschließlich der Bildverarbeitung mit Deep-Learning-Modellen in Echtzeit.

Wenn Sie an Halloween nach sich nähernden Zombies Ausschau halten oder einfach das ganze Jahr über Ihren Garten überprüfen möchten, ist dies das Richtige für Sie. Sicherheit muss nicht langweilig sein, um effektiv zu sein!

Lieferungen

Für diesen Build benötigen Sie:

  • Raspberry Pi 4 (4GB Ram) Amazon
  • Nachtsichtkamera Amazon
  • Micro Servo Amazon
  • Gefälschte Eule Amazon
  • Kleber Amazon
  • Amazone malen
  • Schrauben Amazon
  • USB-Lautsprecher Amazon
  • Großes (5v+) tragbares Netzteil Amazon
  • 3D-Drucker Amazon

Schritt 1: Schritt 1: Enthaupten

Schritt 1: Enthaupten
Schritt 1: Enthaupten
Schritt 1: Enthaupten
Schritt 1: Enthaupten
Schritt 1: Enthaupten
Schritt 1: Enthaupten

A. Ziehen Sie den Kopf von der Eule (manchmal muss man einfach brutal sein), indem Sie fest an ihrem Kopf ziehen, wo sie an der Feder befestigt ist.

B. Der Kopf der Eule ist durch einen Zylinder, der auf einer großen Feder sitzt, mit dem Körper verbunden. Entfernen Sie diesen Zylinder, indem Sie die Schraube herausnehmen.

C. Der gerade ausgebaute Zylinder besteht aus zwei Teilen, einem Plastikbecher und einem darin sitzenden Lager. Entfernen Sie das Lager mit einem Schraubendreher (oder einem ähnlichen Werkzeug) vom Zylinder.

D. Befestigen Sie das Servo mit der Schraube, die den Zylinder mit der Feder verband, am Zylinder.

e. Entfernen Sie die Feder, indem Sie die drei Schrauben lösen, mit denen sie am Gehäuse befestigt ist.

F. Machen Sie ein Loch in die Oberseite des Körpers der Eule, das groß genug ist, um einige Drähte und das Kamerakabel zu passen. Wir haben dazu eine unelegante Kombination aus Bohrer und Schraubendreher verwendet.

Schritt 2: Schritt 2: Smart hinzufügen

Schritt 2: Smart hinzufügen
Schritt 2: Smart hinzufügen
Schritt 2: Smart hinzufügen
Schritt 2: Smart hinzufügen
Schritt 2: Smart hinzufügen
Schritt 2: Smart hinzufügen

A. 3D-Drucken Sie das Kameragehäuse und bemalen Sie es passend zur Eule - wir haben einige billige Acrylfarben verwendet. Das Malen ist kein wichtiger Schritt, aber es verbessert das Gesamtbild dramatisch!

B. Schrauben Sie die Oberseite des Kameragehäuses mit dem Kopf der Eule nach unten in die Innenseite des Kopfes, wo der Schnabel herausragt.

C. Legen Sie die Kamera in das Gehäuse und schließen Sie das Kamerakabel an.

D. Kleben Sie das Servo auf die Oberseite der Feder.

e. Verbinden Sie lange Drähte mit den Servopins (5V, Gnd, Signal)

F. Führen Sie das Kamerakabel und die Drähte für das Servo durch die Feder und durch das Loch, das Sie in der Oberseite des Körpers gemacht haben, so dass sie sich im hohlen Körper der Eule befinden.

Schritt 3: Schritt 3: Füllen Sie sie auf

Schritt 3: Füllen Sie sie auf
Schritt 3: Füllen Sie sie auf
Schritt 3: Füllen Sie sie auf
Schritt 3: Füllen Sie sie auf
Schritt 3: Füllen Sie sie auf
Schritt 3: Füllen Sie sie auf
Schritt 3: Füllen Sie sie auf
Schritt 3: Füllen Sie sie auf

A. Entfernen Sie den Stopfen von der Unterseite der Eule und vergrößern Sie dieses Loch, indem Sie den Kunststoff schneiden. Erhöhen Sie die Größe weiter, bis der Raspberry Pi und der Lautsprecher in den Körper der Eule passen.

B. Sobald das Loch groß genug ist, damit alle Komponenten hineinpassen, ziehen Sie das Kamerakabel, das Sie durch die Oberseite der Eule geführt haben, aus der Basis und stecken Sie es in den Raspberry Pi.

C. Ziehen Sie auf ähnliche Weise die Servokabel durch und stecken Sie sie in den Raspberry Pi:

  • +5V auf Servo => +5V auf Pi
  • Masse Servo => Masse Mehr
  • Signalservo => Pin 12 Pi

D. Stecken Sie den USB-Lautsprecher in den Pi.

e. Legen Sie die SD-Karte in den Pi ein.

F. Versorgen Sie den Pi mit einem tragbaren Netzteil.

g. Stecken Sie den Pi, das Netzteil und den Lautsprecher durch das Loch in der Basis in die Eule.

Schritt 4: Schritt 4: Einrichten des Pi

Schritt 4: Einrichten des Pi
Schritt 4: Einrichten des Pi

ALLE CODE FINDEN SIE UNTER https://github.com/sk-t3ch/cctv-owl !

A. Laden Sie Raspian herunter und laden Sie es mit Balena Etcher auf Ihre SD-Karte hoch.

B. Um aus der Ferne auf Ihren Pi zuzugreifen

  • Fügen Sie Ihrer Boot-SD-Karte eine Datei namens ssh hinzu
  • Fügen Sie eine Datei namens wpa_supplicant.conf hinzu und geben Sie Ihre WLAN-Zugangsdaten ein

    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1

    network={ ssid="MySSID" psk="MyPassword" }

C. Legen Sie die SD-Karte in den Pi ein und versuchen Sie einen Zugriff über ssh.

Schritt 5: Schritt 5: Bewegen des Kopfes

Schritt 5: Bewegen des Kopfes
Schritt 5: Bewegen des Kopfes

Code-Tutorial zum Bewegen des Kopfes (Steuerung eines Servos mit einem Himbeer-Pi)

Um ein Servo zu steuern, das auf dem Pi läuft, erstellen wir ein Skript, das die GPIO-Pins steuert, mit denen das Servo verbunden ist.

A. Verbinden Sie das Servo mit dem Pi:

  • +5V auf Servo => +5V auf Pi
  • Masse Servo => Masse auf Pi
  • Signalservo => Pin 12 auf Pi

B. Sie müssen zuerst die gpio-Pins einrichten, um PWM am Signalpin des Servos zu verwenden.

C. Dann ist es so einfach, das Tastverhältnis (hier erklärt) des Signalpins auszuwählen, um das Servo von 90 Grad mit einem Tastverhältnis von 7,5 auf 0 Grad zu bewegen, wenn das Tastverhältnis 2,5 beträgt, und auf 180 Grad mit einem Tastverhältnis von 12,5

RPi. GPIO als GPIO importieren

Importzeit GPIO.setmode(GPIO. BOARD) GPIO.setwarnings(False) GPIO.setup(12, GPIO. OUT) p = GPIO. PWM(12, 50) p.start(7.5) try: while True: p. ChangeDutyCycle (7.5) # 90 Grad time.sleep(1) p. ChangeDutyCycle(2.5) # 0 Grad time.sleep(1) p. ChangeDutyCycle(12.5) # 180 Grad time.sleep(1) außer KeyboardInterrupt: p.stop() GPIO.cleanup()

Schritt 6: Schritt 6: Machen es Hoot

Schritt 6: Machen es Hoot
Schritt 6: Machen es Hoot
Schritt 6: Machen es Hoot
Schritt 6: Machen es Hoot

Code-Tutorial zum Erstellen des Eulenschreis (Abspielen von Audio mit einem Himbeer-Pi)

A. Schließen Sie den USB-Lautsprecher an.

B. Laden Sie einen Sound herunter - wir haben uns für einen gruseligen Schrei entschieden.

C. Spielen Sie den Sound ab, indem Sie diesen Befehl ausführen: omxplayer -o alsa:hw:1, 0 owl_sound.mp3

[D. Wenn dies nicht funktioniert, überprüfen Sie mit dem Befehl alsamixer, welche Ausgabe Ihr Pi verwendet und in welcher Lautstärke - Sie werden mit dem Mixer-Bildschirm begrüßt, auf dem Sie die Lautstärke ändern und Ihr Mediengerät auswählen können. Um die Lautstärke Ihres Sounds zu erhöhen, führen Sie den Befehl wie diesen aus omxplayer -o alsa:hw:1, 0 owl_sound.mp3 --vol 500 Um diesen Sound mit Python abzuspielen, sehen Sie sich unser Testskript an.]

Unterprozess importieren

command = "omxplayer -o alsa:hw:1, 0 owl_sound.mp3 --vol 500" player = subprocess. Popen(command.split(' '), stdin=subprocess. PIPE, stdout=subprocess. PIPE, stderr=subprocess. ROHR)

Schritt 7: Schritt 7: Streamen Sie das Video vom Pi

Schritt 7: Streamen Sie das Video vom Pi
Schritt 7: Streamen Sie das Video vom Pi
Schritt 7: Streamen Sie das Video vom Pi
Schritt 7: Streamen Sie das Video vom Pi

Code-Tutorial zum Erstellen eines Himbeer-Pi-Kamerastreams

A. Führen Sie Python app.py aus und zeigen Sie es in Ihrem lokalen Netzwerk unter https://raspberrypi.local:5000 an

B. Dieser Code wurde von Miguel Grinberg übernommen und leicht angepasst https://blog.miguelgrinberg.com/post/flask-video-… Das Grundkonzept besteht darin, dass wir Threading und Generatoren verwenden, um die Streaming-Geschwindigkeit zu verbessern.

Schritt 8: Schritt 8: Körpererkennung

Schritt 8: Körpererkennung
Schritt 8: Körpererkennung

Code zur Körpererkennung (ImageNetSSD in einem Videostream mit Himbeer-Pi)

A. Da wir den Raspberry Pi 4 verwenden, hielten wir es für das Beste, einige Deep-Learning-Modelle darauf auszuprobieren, anstatt die grundlegende HaarCascade-Methode, auf die wir uns bisher beschränkt hatten.

B. Wir haben uns einige der vortrainierten Modelle da draußen angeschaut, wie YOLOv3, das super cool aussieht. YOLOv3 winzige Gewichte, die perfekt für den Pi gewesen wären, aber wir konnten ihn nicht zum Laufen bringen:(C. Stattdessen haben wir uns für das MobileSSD-Modell entschieden, das wir mit dem OpenCVs-DNN-Modul (Deep Neural Net) ausführen können, wie wir aus diesem Code gelernt haben: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 und vom Helden der Bildverarbeitungs-Tutorials, Adrian Rosebrock: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- offener Lebenslauf/

D. Da wir jedoch versuchen, diesen Inhalt zu streamen und Modelle für jeden Frame auszuführen, führt dies zu einem verzögerten, fragmentierten Video. Wir haben wieder von Adrian Rosebrock gelernt https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ und haben das Python-Multiprocessing-Modul verwendet, um unsere Bilder in Warteschlangen zu stellen wo sie verarbeitet werden können, ohne den Kamerastream so stark zu blockieren.

e. Versuchen Sie, den Code selbst auszuführen:)

Schritt 9: Schritt 9: Zombie-Benachrichtigungen senden

Schritt 9: Zombie-Benachrichtigungen senden
Schritt 9: Zombie-Benachrichtigungen senden
Schritt 9: Zombie-Benachrichtigungen senden
Schritt 9: Zombie-Benachrichtigungen senden

Code zum Senden einer Benachrichtigung (Python an Telefon)

A. Wir haben uns entschieden, den Benachrichtigungsdienst https://pushed.co zu verwenden.

B. Sie können ein kostenloses Konto erstellen und die App herunterladen und sich sehr schnell einrichten, um mobile Benachrichtigungen zu erstellen. Wir haben die Benachrichtigungen mit einem Python-Skript wie diesem erstellt.

Importanfragen

payload = { "app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Eule hat einen Zombie entdeckt." } r = request.post("https://api.pushed.co/1/push", data=payload)

Es ist super einfach und Sie können Ihren Benachrichtigungsnamen anpassen!

Schritt 10: Was für ein Schrei

Was für ein Hoot!
Was für ein Hoot!

Wir hoffen, Ihnen hat unser Smart Security Owl-Projekt gefallen! Das hat super viel Spaß gemacht und ich fühle mich viel sicherer, wenn ich weiß, dass mein Haus von unserer treuen Eule bewacht wird.

Wenn Sie denken, dass dies eine fabelhafte Halloween-Ergänzung für Ihr intelligentes Zuhause wäre, stimmen Sie bitte für uns im Instructables-Halloween-Wettbewerb ab und denken Sie wie üblich daran, zu mögen, zu kommentieren und zu abonnieren!

Tragen Sie sich in unsere Mailingliste ein!

Empfohlen: