Inhaltsverzeichnis:

Real Working Harry Potter Zauberstab mit Computer Vision - Gunook
Real Working Harry Potter Zauberstab mit Computer Vision - Gunook

Video: Real Working Harry Potter Zauberstab mit Computer Vision - Gunook

Video: Real Working Harry Potter Zauberstab mit Computer Vision - Gunook
Video: The Last Pieces🥰Harry Potter Jigsaw Puzzle Oddly Satisfying 2024, Juli
Anonim
Image
Image
Echter Harry Potter Zauberstab mit Computer Vision
Echter Harry Potter Zauberstab mit Computer Vision
Echter Harry Potter Zauberstab mit Computer Vision
Echter Harry Potter Zauberstab mit Computer Vision
Echter Harry Potter Zauberstab mit Computer Vision
Echter Harry Potter Zauberstab mit Computer Vision

„Jede ausreichend fortschrittliche Technologie ist von Magie nicht zu unterscheiden“– Arthur C. Clarke

Vor ein paar Monaten besuchte mein Bruder Japan und hatte echte Zauberererfahrung in der Zauberwelt von Harry Potter in den Universal Studios, die durch die Technologie der Computer Vision ermöglicht wurde.

In der Wizarding World of Harry Potter in den Universal Studios können die Touristen an bestimmten Orten (wo das Motion-Capture-System installiert ist) mit speziell angefertigten Zauberstäben mit retroreflektierenden Perlen an der Spitze "echte Magie" ausführen. Die Zauberstäbe können in einem echten Ollivander's Shop gekauft werden, die genau den in den Harry-Potter-Filmen gezeigten entsprechen, aber denken Sie daran: "Es ist der Zauberstab, der den Zauberer auswählt":P

Wenn die Person an diesen bestimmten Orten eine bestimmte Geste mit dem Zauberstab ausführt, erkennt das Motion-Capture-System die Geste und alle Gesten entsprechen einem bestimmten Zauber, der bestimmte Aktivitäten in der Umgebung auslöst, wie das Einschalten des Brunnens usw.

Also, in diesem Instructable werde ich zeigen, wie Sie zu Hause ein billiges und effektives Motion-Capture-System erstellen können, um "echte Magie" auszuführen, indem Sie eine Schachtel mit dem Schlag Ihres Zauberstabs öffnen: D mit nur einer normalen Nachtsichtkamera, etwas Elektronik, und etwas Python-Code mit der OpenCV-Computer Vision-Bibliothek und Machine Learning !!!

Schritt 1: Die Grundidee und die benötigten Teile

Die Grundidee und die benötigten Teile
Die Grundidee und die benötigten Teile
Die Grundidee und die benötigten Teile
Die Grundidee und die benötigten Teile
Die Grundidee und die benötigten Teile
Die Grundidee und die benötigten Teile
Die Grundidee und die benötigten Teile
Die Grundidee und die benötigten Teile

Die Zauberstäbe, die in der Zauberwelt von Harry Potter in den Universal Studios gekauft werden, haben eine retroreflektierende Perle an der Spitze. Diese retroreflektierenden Perlen reflektieren eine große Menge an Infrarotlicht, das von der Kamera im Motion-Capture-System abgegeben wird als heller Klecks, der leicht im Videostream isoliert und verfolgt werden kann, um das von der Person gezeichnete Muster zu erkennen und die erforderliche Aktion auszuführen. All diese Verarbeitung findet in Echtzeit statt und nutzt Computer Vision und Machine Learning.

Eine einfache Nachtsichtkamera kann als unsere Kamera für die Bewegungserfassung verwendet werden, da sie auch Infrarotlicht aussendet, das für den Menschen nicht sichtbar ist, aber mit einer Kamera ohne Infrarotfilter deutlich zu sehen ist. Der Videostream von der Kamera wird also in einen Himbeer-Pi eingespeist, der über ein Python-Programm verfügt, auf dem OpenCV ausgeführt wird, das zum Erkennen, Isolieren und Verfolgen der Zauberstabspitze verwendet wird. Dann verwenden wir den SVM-Algorithmus (Simple Vector Machine) des maschinellen Lernens, um das gezeichnete Muster zu erkennen und entsprechend die GPIOs des Himbeer-Pi zu steuern, um einige Aktivitäten auszuführen.

Die benötigten Materialien:

1) Ein Raspberry Pi 3 Modell B und das erforderliche Zubehör wie Tastatur und Maus

2) Raspberry Pi NoIR (kein Infrarot) Kameramodul

3) Harry Potter Zauberstab mit Retroreflektor an der Spitze: Machen Sie sich keine Sorgen, wenn Sie keinen haben. Alles mit Retroreflektor kann verwendet werden. Sie können also jeden zauberstabähnlichen Stab verwenden und Retroreflektorband, Farbe oder Perlen an der Spitze auftragen und es sollte wie im Video von William Osman gezeigt funktionieren: Video ansehen

4) 10 Infrarot-LEDs

5) Ein 3D-Drucker und PLA-Filament Ihrer Wahl

6) 12V - 1A Wandadapter und DC-Buchse

7) Ein Servomotor

8) Eine alte Kiste und eine Speiche aus dem Rad eines Zyklus

9) Eine Heißklebepistole

10) Ausdrucke einiger Harry Potter-bezogener Logos und Bilder auf einem glänzenden Blatt Papier

11) Grüne und gelbe Samtblätter.

HINWEIS: Ich habe auch versucht, eine alte normale Webcam für Nachtsicht zu verwenden, indem ich den Infrarotfilter entfernt habe, aber am Ende habe ich das Objektiv beschädigt / verschoben, was die Videoqualität stark beeinträchtigte und ich nicht verwenden konnte. Aber wenn Sie es ausprobieren möchten, können Sie diese großartige Anleitung durchgehen Klicken Sie hier

Schritt 2: Installieren Sie das OpenCV-Modul

Jetzt ist es Zeit für den ersten und wahrscheinlich längsten Schritt dieses ganzen Projekts: Das Installieren und Bauen des OpenCV-Moduls in Ihrem Raspberry Pi.

Die Installation der Abhängigkeiten für das OpenCV-Modul nimmt nicht viel Zeit in Anspruch, aber der Build-Prozess kann bis zu 2 bis 3 Stunden dauern!! Also, anschnallen!!:P

Es gibt viele Online-Tutorials, denen Sie folgen können, um das OpenCV 4.1.0-Modul zu installieren. Hier ist der Link von dem, dem ich gefolgt bin: Klicken Sie hier

HINWEIS: Ich empfehle dringend, das OpenCV-Modul in einer virtuellen Umgebung zu installieren, wie im Tutorial gezeigt, da es verschiedene Arten von Konflikten verhindert, die aufgrund der Installation von Abhängigkeiten verschiedener Module oder beim Arbeiten mit verschiedenen Python-Versionen auftreten können.

Schritt 3: Drucken der Kamerahalterung

Drucken der Kamerahalterung
Drucken der Kamerahalterung
Drucken der Kamerahalterung
Drucken der Kamerahalterung
Drucken der Kamerahalterung
Drucken der Kamerahalterung

Die NoIR-Picamera hat keinen Infrarotfilter und kann daher als Nachtsichtkamera verwendet werden, es fehlt jedoch noch eine Infrarotlichtquelle. Alle Nachtsichtkameras verfügen über eine eigene Infrarotlichtquelle, die im Dunkeln IR-Strahlen aussendet, die für das bloße Auge unsichtbar sind, aber die Strahlen können von der Kamera ohne Infrarotfilter gesehen werden, nachdem sie von einem Objekt reflektiert wurden.

Wir brauchen also grundsätzlich eine Infrarotlichtquelle und etwas, an dem die Kamera befestigt werden kann. Dazu entwarf ich ein einfaches 3D-Modell eines Objekts, auf dem wir die Kamera montieren konnten, die von 10 IR-LEDs in einem Kreis umgeben wird. Das Modell wurde mit SketchUp erstellt und mit Black PLA in ca. 40 Minuten gedruckt.

Schritt 4: Fertigstellen der Kamerahalterung

Fertigstellen der Kamerahalterung
Fertigstellen der Kamerahalterung
Fertigstellen der Kamerahalterung
Fertigstellen der Kamerahalterung
Fertigstellen der Kamerahalterung
Fertigstellen der Kamerahalterung

Nach dem Drucken des Modells habe ich es zuerst mit einem 80er Schleifpapier geschliffen und dann begonnen, die IR-LEDs gemäß dem obigen Diagramm in ihre Löcher zu setzen.

Ich befestigte die LEDs mit etwas Heißkleber an ihrer Stelle und verband dann die positiven und negativen Leitungen von zwei aufeinanderfolgenden LEDs zusammen und verlötete sie dann, um eine Reihenschaltung der LEDs zu schaffen.

Die Plusleitung einer LED und die Minusleitung der daneben liegenden LED wurden nicht angelötet, um die positiven und negativen Enden des 12-Volt-Wandadapters zu verbinden.

Schritt 5: Das trainierte Machine-Learning-Modell

Um den von einer Person gezeichneten Buchstaben zu erkennen, habe ich ein maschinelles Lernmodell basierend auf dem Algorithmus der Support Vector Machine (SVM) unter Verwendung eines Datensatzes handgeschriebener englischer Alphabete trainiert, den ich hier gefunden habe. SVMs sind sehr effiziente maschinelle Lernalgorithmen, die eine hohe Genauigkeit liefern können, in diesem Fall etwa 99,2%!! Lesen Sie mehr über SVMs

Der Datensatz liegt in Form einer.csv-Datei vor, die 785 Spalten und mehr als 300.000 Zeilen enthält, wobei jede Zeile ein 28 x 28-Bild darstellt und jede Spalte in dieser Zeile den Wert dieses Pixels für dieses Bild mit einer zusätzlichen Spalte enthält der Anfang, der das Etikett enthält, eine Zahl von 0 bis 25, die jeweils einem englischen Buchstaben entsprechen. Durch einen einfachen Python-Code habe ich die Daten geschnitten, um alle Bilder für nur die 2 Buchstaben (A und C) zu erhalten, die ich wollte, und ein Modell dafür trainiert.

Ich habe das trainierte Modell (alphabet_classifier.pkl) und auch den Trainingscode angehängt. Sie können es gerne durchgehen oder Änderungen vornehmen, um das Modell mit verschiedenen Buchstaben zu trainieren oder verschiedene Algorithmen auszuprobieren. Nach dem Ausführen des Programms wird das trainierte Modell automatisch im selben Verzeichnis gespeichert, in dem Ihr Code gespeichert ist.

Schritt 6: Der Code, der alles möglich macht

Der Code, der alles möglich macht !!
Der Code, der alles möglich macht !!

Nach dem Erstellen des trainierten Modells besteht der letzte Schritt darin, ein Python-Programm für unseren Raspberry Pi zu schreiben, mit dem wir Folgendes tun können:

  • Greifen Sie in Echtzeit auf das Video von der Picamera zu
  • Erkennen und verfolgen Sie weiße Kleckse (in diesem Fall die Spitze des Zauberstabs, die bei Nachtsicht aufleuchtet) im Video
  • Beginnen Sie mit der Verfolgung des Pfads des sich bewegenden Blobs im Video nach einem Triggerereignis (siehe unten)
  • Stoppen Sie die Verfolgung nach einem anderen Triggerereignis (siehe unten)
  • Gibt den letzten Frame mit dem vom Benutzer gezeichneten Muster zurück
  • Führen Sie eine Vorverarbeitung des Frames durch, z. B. Schwellenwerte, Rauschunterdrückung, Größenänderung usw.
  • Verwenden Sie den verarbeiteten letzten Frame für die Vorhersage.
  • Führen Sie eine Art Magie durch, indem Sie die GPIOs des Raspberry Pi gemäß der Vorhersage steuern

Für dieses Projekt habe ich eine Harry Potter-Themenbox erstellt, die ich mit einem Servomotor öffnen und schließen kann, der vom GPIO des Raspberry Pi gesteuert wird. Da der Buchstabe 'A' für 'Alohamora' steht (einer der berühmtesten Zaubersprüche aus den Harry-Potter-Filmen, der es einem Zauberer ermöglicht, jedes Schloss zu öffnen!!), wenn eine Person den Buchstaben A mit dem Zauberstab zeichnet, befiehlt der Pi dem Servo zu öffne die Box. Wenn die Person den Buchstaben 'C' zeichnet, der für Schließen steht (da mir kein geeigneter Zauber zum Schließen oder Sperren eingefallen ist:P), befiehlt der Pi dem Servo, die Box zu schließen.

Alle Arbeiten im Zusammenhang mit der Bild-/Videoverarbeitung, wie Blob-Erkennung, Verfolgung des Pfads des Blobs, Vorverarbeitung des letzten Frames usw., werden über das OpenCV-Modul erledigt.

Für die oben genannten Triggerereignisse werden auf dem Echtzeitvideo zwei Kreise erstellt, ein grüner und ein roter Kreis. Wenn der Klecks den Bereich innerhalb des grünen Kreises betritt, beginnt das Programm, den Weg zu verfolgen, den der Klecks nach diesem Moment eingeschlagen hat, sodass die Person mit der Erstellung des Buchstabens beginnen kann. Wenn der Blob den roten Kreis erreicht, stoppt das Video und der letzte Frame wird an eine Funktion übergeben, die die Vorverarbeitung des Frames durchführt, um ihn für die Vorhersage vorzubereiten.

Ich habe die Codedateien in diesem Schritt angehängt. Fühlen Sie sich frei, es durchzugehen und alle gewünschten Änderungen vorzunehmen.

HINWEIS: Ich musste zwei separate Python-Dateien erstellen, die mit verschiedenen Python-Versionen arbeiteten, eine, die das OpenCV-Modul (Python 2.7) importiert, und eine andere, die das Sklearn-Modul (Python 3.5) zur Vorhersage importiert, nachdem das trainierte Modell geladen wurde, da mein OpenCV dafür installiert wurde die Python 2.7-Version, während sklearn für Python 3.5 installiert wurde. Also habe ich das Subprocess-Modul verwendet, um die Datei HarryPotterWandsklearn.py (für die Vorhersage) von HarryPotterWandcv.py (für die gesamte Opencv-Arbeit und Echtzeit-Videoaufzeichnung) auszuführen und ihre Ausgabe zu erhalten. Auf diese Weise muss ich nur die Datei HarryPotterWandcv.py ausführen.

Schritt 7: Der Öffnungsmechanismus der Box

Der Box-Öffnungsmechanismus
Der Box-Öffnungsmechanismus
Der Box-Öffnungsmechanismus
Der Box-Öffnungsmechanismus
Der Box-Öffnungsmechanismus
Der Box-Öffnungsmechanismus

Ich hatte eine alte rote Schachtel herumliegen, die ich für dieses Projekt verwendet habe.

Für den Box-Opening-Mechanismus:

  1. Ich habe ein Servo in der Nähe des hinteren Endes der Schachtel auf ein Stück Pappe in der Nähe des Randes der Schachtel heiß geklebt.
  2. Dann nahm ich eine Speiche vom Rad eines Zyklus und klebte sie heiß auf den Arm des Servos.
  3. Das andere Ende der Speiche wurde mit einem Stück Draht am Deckel der Box befestigt.
  4. Positiv des Servos wurde mit +5V Pin 2 auf Raspberry Pi verbunden.
  5. Der Minuspol des Servos wurde mit GND Pin 39 verbunden.
  6. Signal des Servos wurde an Pin 12. angeschlossen

Schritt 8: Herstellung der Box Harry Potter-Thema

Die Box zum Thema Harry Potter herstellen
Die Box zum Thema Harry Potter herstellen
Die Box zum Thema Harry Potter machen
Die Box zum Thema Harry Potter machen
Die Box zum Thema Harry Potter machen
Die Box zum Thema Harry Potter machen

Um die Box zum Thema Harry Potter zu machen, habe ich einige farbige Bilder von verschiedenen Dingen wie Harry Potter Logo, The Hogwarts Crest, The Crest von jedem der vier Häuser usw. auf einem glänzenden A4-Blatt ausgedruckt und an verschiedenen Stellen auf die Box geklebt setzt.

Ich habe auch ein gelbes Samtblatt verwendet, um Streifen zu schneiden und sie auf den Deckel zu kleben, um der Schachtel die gleiche Farbe wie die des Gryffindor-Hauses zu geben. Ich habe die Innenseite des Deckels und den Karton für Servo mit grünem Samtblatt bedeckt. Auf der Innenseite des Deckels habe ich weitere Symbole und ein Emblem geklebt, das die Tiere zeigt, die jedes Haus der Hogwarts-Schule darstellen.

Dann habe ich endlich alle meine Harry Potter-bezogenen Dinge in die Schachtel gepackt, darunter ein Gryffindor-Schalldämpfer, ein Tagebuch mit der Hogwarts-Uniform und der Elderstab, der in diesem Projekt verwendet wurde:D

Empfohlen: