Inhoudsopgave:

Echt werkende Harry Potter Wand met behulp van computervisie - Ajarnpa
Echt werkende Harry Potter Wand met behulp van computervisie - Ajarnpa

Video: Echt werkende Harry Potter Wand met behulp van computervisie - Ajarnpa

Video: Echt werkende Harry Potter Wand met behulp van computervisie - Ajarnpa
Video: Harry Potter: Magic Caster Wand | Back to Hogwarts 2022 2024, November
Anonim
Image
Image
Echt werkende Harry Potter-staf met computervisie
Echt werkende Harry Potter-staf met computervisie
Echt werkende Harry Potter-staf met computervisie
Echt werkende Harry Potter-staf met computervisie
Echt werkende Harry Potter-staf met computervisie
Echt werkende Harry Potter-staf met computervisie

"Elke voldoende geavanceerde technologie is niet te onderscheiden van magie" - Arthur C. Clarke

Een paar maanden geleden bezocht mijn broer Japan en had hij echte tovenaarservaring in de toverwereld van Harry Potter in de Universal Studios, mogelijk gemaakt door de technologie van Computer Vision.

In de Wizarding World of Harry Potter in Universal Studios kunnen toeristen op bepaalde locaties (waar het motion capture-systeem is geïnstalleerd) "echte magie" uitvoeren met behulp van speciaal gemaakte toverstokken met retroreflecterende kralen aan de punt. De toverstokken kunnen worden gekocht bij een echte Olivander's Shop, die precies hetzelfde zijn als die in de Harry Potter-films, maar onthoud: "Het is de toverstok die de tovenaar kiest":P

Als de persoon op die bepaalde locaties een bepaald gebaar met een toverstaf uitvoert, herkent het motion capture-systeem het gebaar en alle gebaren komen overeen met een bepaalde spreuk die bepaalde activiteiten in de omgeving veroorzaakt, zoals het aanzetten van de fontein enz.

Dus in deze Instructable zal ik laten zien hoe je thuis een goedkoop en effectief motion capture-systeem kunt maken om "echte magie" uit te voeren door een doos te openen met een beweging van je toverstok: D met alleen een normale nachtzichtcamera, wat elektronica, en wat python-code met behulp van de OpenCV Computer Vision-bibliotheek en Machine Learning !!!

Stap 1: Het basisidee en de benodigde onderdelen

Het basisidee en de benodigde onderdelen
Het basisidee en de benodigde onderdelen
Het basisidee en de benodigde onderdelen
Het basisidee en de benodigde onderdelen
Het basisidee en de benodigde onderdelen
Het basisidee en de benodigde onderdelen
Het basisidee en de benodigde onderdelen
Het basisidee en de benodigde onderdelen

De toverstokken die zijn gekocht in de Wizarding World van Harry Potter in Universal Studios, hebben een retroreflecterende kraal aan hun punt. Die retroreflecterende kralen reflecteren een grote hoeveelheid infrarood licht dat door de camera in het motion capture-systeem wordt afgegeven. als een heldere klodder die gemakkelijk in de videostream kan worden geïsoleerd en gevolgd om het door de persoon getrokken patroon te herkennen en de vereiste actie uit te voeren. Al deze verwerkingen vinden realtime plaats en maken gebruik van Computer Vision en Machine Learning.

Een eenvoudige nachtzichtcamera kan worden gebruikt als onze camera voor bewegingsregistratie, omdat ze ook infrarood licht uitstralen dat niet zichtbaar is voor mensen, maar duidelijk kan worden gezien met een camera zonder infraroodfilter. De videostream van de camera wordt dus ingevoerd in een Raspberry Pi met een python-programma met OpenCV dat wordt gebruikt voor het detecteren, isoleren en volgen van de toverstoktip. Vervolgens gebruiken we het SVM-algoritme (Simple Vector Machine) van Machine Learning om het getekende patroon te herkennen en dienovereenkomstig de GPIO's van de Raspberry Pi te besturen om enkele activiteiten uit te voeren.

De benodigde materialen:

1) Een Raspberry Pi 3 model B en de benodigde accessoires zoals toetsenbord en muis

2) Raspberry Pi NoIR (geen infrarood) cameramodule

3) Harry Potter Wand met retroreflector aan de punt: maak je geen zorgen als je er geen hebt. Alles met een retroreflector kan worden gebruikt. Je kunt dus elke toverstokachtige stok gebruiken en retroreflectortape, verf of kralen aan de punt aanbrengen en het zou moeten werken zoals getoond in de video van William Osman: Watch The Video

4) 10 infrarood LED's

5) Een 3D-printer en PLA-filament naar keuze

6) 12V - 1A wandadapter en DC-aansluiting

7) Een servomotor:

8) Een oude doos en een spaak uit het wiel van een fiets

9) Een heet lijmpistool

10) Afdrukken van enkele Harry Potter-gerelateerde logo's en afbeeldingen op glanzend vel papier

11) Groene en gele fluwelen lakens.

OPMERKING: ik heb ook geprobeerd een oude normale webcam te gebruiken voor nachtzicht door het infraroodfilter te verwijderen, maar uiteindelijk heb ik de lens beschadigd/verplaatst, wat de videokwaliteit enorm beïnvloedde en ik kon het niet gebruiken. Maar als je het een kans wilt geven, kun je deze geweldige instructable doornemen Klik hier

Stap 2: Installeer de OpenCV-module

Nu is het tijd voor de eerste en waarschijnlijk de langste stap van dit hele project: het installeren en bouwen van de OpenCV-module in je Raspberry Pi.

De installatie van de afhankelijkheden voor de OpenCV-module kost niet veel tijd, maar het bouwproces kan tot 2 tot 3 uur duren!! Dus, zet je schrap!!:P

Er zijn veel tutorials online die u kunt volgen om de OpenCV 4.1.0-module te installeren. Hier is de link van degene die ik volgde: Klik hier

OPMERKING: ik raad ten zeerste aan om de OpenCV-module in een virtuele omgeving te installeren, zoals weergegeven in de zelfstudie, omdat dit verschillende soorten conflicten zal voorkomen die kunnen optreden als gevolg van het installeren van afhankelijkheden van verschillende modules of tijdens het werken met verschillende versies van python.

Stap 3: De camerabevestiging afdrukken

De camerabevestiging afdrukken
De camerabevestiging afdrukken
De camerabevestiging afdrukken
De camerabevestiging afdrukken
De camerabevestiging afdrukken
De camerabevestiging afdrukken

De NoIR picamera heeft geen infraroodfilter en kan dus worden gebruikt als nachtzichtcamera, maar mist nog steeds een infraroodlichtbron. Alle nachtzichtcamera's hebben hun eigen infraroodlichtbron die IR-stralen in het donker uitstraalt die onzichtbaar zijn voor het blote oog, maar de stralen kunnen worden gezien door de camera zonder infraroodfilter nadat ze door een object zijn weerkaatst.

We hebben dus eigenlijk een infraroodlichtbron nodig en iets om de camera op te monteren. Hiervoor ontwierp ik een eenvoudig 3D-model van een object waarop we de camera konden monteren die we omgeven door 10 IR-leds in een cirkel. Het model is in ongeveer 40 minuten gemaakt met SketchUp en bedrukt met Black PLA.

Stap 4: Afwerking van de cameramontage

De cameramontage voltooien
De cameramontage voltooien
De cameramontage voltooien
De cameramontage voltooien
De cameramontage voltooien
De cameramontage voltooien

Na het printen van het model heb ik het eerst geschuurd met een 80 grit schuurpapier en ben toen begonnen met het plaatsen van de IR-leds in hun gaten volgens het bovenstaande diagram.

Ik zette de leds op hun plaats met wat hete lijm en voegde vervolgens de positieve en negatieve draden van twee opeenvolgende leds aan elkaar en soldeerde ze vervolgens om een serieschakeling van de leds te creëren.

De positieve draad van een led en de negatieve draad van de led ernaast in de bodem werden ongesoldeerd gelaten om de positieve en negatieve uiteinden van de 12 volt muuradapter met elkaar te verbinden.

Stap 5: Het getrainde machine learning-model

Om de door een persoon getekende brief te herkennen, heb ik een machine learning-model getraind op basis van het Support Vector Machine (SVM)-algoritme met behulp van een dataset van handgeschreven Engelse alfabetten die ik hier heb gevonden. SVM's zijn zeer efficiënte machine learning-algoritmen die een hoge nauwkeurigheid kunnen geven, in dit geval ongeveer 99,2%!! Lees meer over SVM's

De gegevensset heeft de vorm van een.csv-bestand dat 785 kolommen en meer dan 300.000 rijen bevat, waarbij elke rij een afbeelding van 28 x 28 vertegenwoordigt en elke kolom in die rij de waarde van die pixel voor die afbeelding bevat met een extra kolom in het begin dat het label bevat, een nummer van 0 tot 25, elk corresponderend met een Engelse letter. Via een eenvoudige python-code heb ik de gegevens gesneden om alle afbeeldingen te krijgen voor alleen de 2 letters (A en C) die ik wilde en een model voor hen getraind.

Ik heb het getrainde model (alphabet_classifier.pkl) bijgevoegd en ook de trainingscode, voel je vrij om er doorheen te gaan of wijzigingen aan te brengen voor het trainen van het model met verschillende letters of probeer verschillende algoritmen. Nadat het programma is uitgevoerd, wordt het getrainde model automatisch opgeslagen in dezelfde map waarin uw code is opgeslagen.

Stap 6: De code die het allemaal mogelijk maakt

De code die het allemaal mogelijk maakt!!
De code die het allemaal mogelijk maakt!!

Na het maken van het getrainde model, is de laatste stap het schrijven van een python-programma voor onze Raspberry Pi waarmee we het volgende kunnen doen:

  • Toegang tot video van de picamera in realtime
  • Detecteer en volg witte klodders (in dit geval de punt van de toverstaf die oplicht in nachtzicht) in de video
  • Begin met het volgen van het pad van de bewegende blob in de video na een triggergebeurtenis (hieronder uitgelegd)
  • Stop met traceren na een andere triggergebeurtenis (hieronder uitgelegd)
  • Retourneer het laatste frame met het patroon dat door de gebruiker is getekend
  • Voer voorbewerkingen uit op het frame, zoals drempelwaarden, ruisverwijdering, formaat wijzigen enz.
  • Gebruik het verwerkte laatste frame voor voorspelling.
  • Voer een soort magie uit door de GPIO's van de Raspberry Pi te besturen volgens de voorspelling

Voor dit project heb ik een Harry Potter-themadoos gemaakt die ik kan openen en sluiten met behulp van een servomotor die wordt bestuurd door de GPIO van de Raspberry Pi. Aangezien letter 'A' staat voor 'Alohamora' (een van de beroemdste spreuken uit de Harry Potter-films waarmee een tovenaar elk slot kan openen!!), als een persoon letter A met de toverstok trekt, geeft de pi de servo opdracht om open de doos. Als de persoon de letter 'C' tekent die staat voor close (omdat ik geen geschikte spreuk kon bedenken die werd gebruikt voor het sluiten of vergrendelen: P), geeft de pi de servo opdracht om de doos te sluiten.

Al het werk met betrekking tot beeld-/videoverwerking, zoals blobdetectie, het volgen van het pad van de blob, voorbewerking van het laatste frame enz., wordt gedaan via de OpenCV-module.

Voor de hierboven genoemde triggergebeurtenissen worden op de realtime video twee cirkels gemaakt, een groene en een rode cirkel. Wanneer de blob het gebied binnen de groene cirkel binnenkomt, begint het programma het pad te volgen dat de blob na dat moment heeft genomen, zodat de persoon kan beginnen met het maken van de brief. Wanneer de blob de rode cirkel bereikt, stopt de video en wordt het laatste frame doorgegeven aan een functie die de voorbewerking op het frame uitvoert om het klaar te maken voor voorspelling.

Ik heb de codebestanden in deze stap bijgevoegd. Voel je vrij om het door te nemen en eventuele wijzigingen aan te brengen zoals je wilt.

OPMERKING: ik moest twee afzonderlijke python-bestanden maken die met verschillende python-versies werken, een die de OpenCV-module (Python 2.7) importeert en een andere die de sklearn-module (Python 3.5) importeert voor voorspelling na het laden van het getrainde model, omdat mijn OpenCV was geïnstalleerd voor de Python 2.7-versie terwijl de sklearn was geïnstalleerd voor python 3.5. Dus gebruikte ik de subprocesmodule om het bestand HarryPotterWandsklearn.py (voor voorspelling) van de HarryPotterWandcv.py (voor al het opencv-werk en realtime video-opname) uit te voeren en de uitvoer te krijgen. Op deze manier hoef ik alleen het bestand HarryPotterWandcv.py uit te voeren.

Stap 7: Het openingsmechanisme van de doos

Het mechanisme voor het openen van de doos
Het mechanisme voor het openen van de doos
Het mechanisme voor het openen van de doos
Het mechanisme voor het openen van de doos
Het mechanisme voor het openen van de doos
Het mechanisme voor het openen van de doos

Ik had een oude roodgekleurde doos liggen die ik voor dit project heb gebruikt.

Voor het Box-Openingsmechanisme:

  1. Ik heb een servo aan de achterkant van de doos warm gelijmd op een stuk karton bij de rand van de doos.
  2. Toen nam ik een spaak van het wiel van een fiets en plakte deze warm op de arm van de servo.
  3. Het andere uiteinde van de spaak was met een stuk draad aan het deksel van de doos bevestigd.
  4. Positief van servo was verbonden met +5V Pin 2 op Raspberry Pi.
  5. Negatief van servo was verbonden met GND Pin 39.
  6. Signaal van servo was verbonden met Pin 12

Stap 8: De doos Harry Potter-thema maken

De doos Harry Potter-thema maken
De doos Harry Potter-thema maken
De doos Harry Potter-thema maken
De doos Harry Potter-thema maken
De doos Harry Potter-thema maken
De doos Harry Potter-thema maken

Om de doos Harry Potter-thema te maken, heb ik een aantal gekleurde afbeeldingen van verschillende dingen zoals Harry Potter-logo, het embleem van Zweinstein, het embleem van elk van de vier huizen enz. op glanzend A4-formaat afgedrukt en deze op verschillende punten op de doos geplakt. plaatsen.

Ik heb ook een geel gekleurd velours vel gebruikt om stroken te knippen en deze op het deksel te plakken om de doos dezelfde kleur te geven als die van het Griffoendor-huis. Ik bedekte de binnenkant van het deksel en het karton voor servo met groen fluwelen vel. Aan de binnenkant van het deksel heb ik meer symbolen geplakt en een embleem met de dieren die elk huis van de Zweinsteinschool voorstellen.

Toen stopte ik eindelijk al mijn Harry Potter-gerelateerde dingen in de doos, waaronder een Griffoendor-uitlaat, een dagboek met het Hogwarts-uniform en de Oudere toverstaf die in dit project werd gebruikt: D

Aanbevolen: