Innholdsfortegnelse:

Real Working Harry Potter Wand ved hjelp av Computer Vision: 8 trinn (med bilder)
Real Working Harry Potter Wand ved hjelp av Computer Vision: 8 trinn (med bilder)

Video: Real Working Harry Potter Wand ved hjelp av Computer Vision: 8 trinn (med bilder)

Video: Real Working Harry Potter Wand ved hjelp av Computer Vision: 8 trinn (med bilder)
Video: The Real Story of Paris Hilton | This Is Paris Official Documentary 2024, November
Anonim
Image
Image
Virkelig fungerende Harry Potter Wand ved hjelp av Computer Vision
Virkelig fungerende Harry Potter Wand ved hjelp av Computer Vision
Virkelig fungerende Harry Potter Wand ved hjelp av Computer Vision
Virkelig fungerende Harry Potter Wand ved hjelp av Computer Vision
Virkelig fungerende Harry Potter Wand ved hjelp av Computer Vision
Virkelig fungerende Harry Potter Wand ved hjelp av Computer Vision

"Enhver tilstrekkelig avansert teknologi kan ikke skilles fra magi" - Arthur C. Clarke

For noen måneder siden besøkte broren min Japan og hadde virkelig trollmannsopplevelse i Harry Potter Wizarding World i Universal Studios muliggjort gjennom teknologien til Computer Vision.

I Wizarding World of Harry Potter i Universal Studios kan turistene utføre "ekte magi" på bestemte steder (der system for bevegelsesfangst er installert) ved hjelp av spesialfremstilte tryllestaver med retroreflekterende perler på spissen. Tryllestavene kan kjøpes fra en ekte Ollivander's Shop som er akkurat som den som vises i Harry Potter -filmene, men husker: "Det er tryllestaven som velger veiviseren": P

På de bestemte stedene hvis personen utfører en bestemt gest med tryllestav, gjenkjenner bevegelsesfangersystemet bevegelsen og alle bevegelser tilsvarer en viss stave som forårsaker visse aktiviteter i området rundt som å slå på fontenen etc.

Så i denne instruksjonsfilen vil jeg vise hvordan du kan lage et billig og effektivt bevegelsesopptakssystem hjemme for å utføre "ekte magi" ved å åpne en boks med staven din: D ved å bruke bare et normalt nattkamera, litt elektronikk, og litt python -kode ved bruk av OpenCV Computer Vision -biblioteket og maskinlæring !!!

Trinn 1: Grunnideen og nødvendige deler

Grunnideen og delene som kreves
Grunnideen og delene som kreves
Grunnideen og delene som kreves
Grunnideen og delene som kreves
Grunnideen og delene som kreves
Grunnideen og delene som kreves
Grunnideen og delene som kreves
Grunnideen og delene som kreves

Tryllestavene som er kjøpt fra Wizarding World of Harry Potter i Universal Studios, har en retroreflekterende perle på spissen. Disse reflekterende perlene reflekterer en stor mengde infrarødt lys som blir gitt ut av kameraet i bevegelsesfangstsystemet. Så det vi mennesker oppfatter som en ikke så særegen spiss av staven som beveger seg i luften, oppfatter bevegelsesfangersystemet som en lys klatt som enkelt kan isoleres i videostrømmen og spores for å gjenkjenne mønsteret tegnet av personen og utføre den nødvendige handlingen. All denne behandlingen skjer i sanntid og bruker datamaskinvisjon og maskinlæring.

Et enkelt Night Vision -kamera kan brukes som vårt kamera for bevegelsesfangst, ettersom de også sprenger ut infrarødt lys som ikke er synlig for mennesker, men kan sees tydelig med et kamera som ikke har noe infrarødt filter. Så, videostrømmen fra kameraet mates inn i en bringebær pi som har et python -program som kjører OpenCV som brukes til å oppdage, isolere og spore staven. Deretter bruker vi SVM (Simple Vector Machine) algoritme for maskinlæring for å gjenkjenne mønsteret som tegnes og følgelig kontrollere GPIO -ene til bringebær -pi for å utføre noen aktiviteter.

Nødvendige materialer:

1) En Raspberry Pi 3 modell B og nødvendig tilbehør som tastatur og mus

2) Raspberry Pi NoIR (ingen infrarød) kameramodul

3) Harry Potter Wand med retroreflektor på spissen: Ikke bekymre deg hvis du ikke har en. Alt med retroreflektor kan brukes. Så du kan bruke en hvilken som helst stavlignende pinne og påføre retroreflektortape, maling eller perler på spissen, og det skal fungere som vist i videoen av William Osman: Se videoen

4) 10 infrarøde lysdioder

5) En 3D -skriver og PLA -filament etter eget valg

6) 12V - 1A veggadapter og DC -kontakt

7) En servomotor

8) En gammel boks og en tale fra hjulet i en syklus

9) En varm limpistol

10) Utskrifter av noen Harry Potter -relaterte logoer og bilder på glanset ark

11) Grønne og gule fløyelsark.

MERK: Jeg prøvde også å bruke et gammelt vanlig webkamera for nattsyn ved å fjerne det infrarøde filteret, men det endte med at jeg skadet/fortrengte objektivet, noe som påvirket videokvaliteten sterkt, og jeg kunne ikke bruke det. Men hvis du vil prøve det, kan du gå gjennom denne flotte, instruerbare Klikk her

Trinn 2: Installer OpenCV -modulen

Nå er det tid for det første og sannsynligvis det lengste trinnet i hele dette prosjektet: Installering og bygging av OpenCV -modulen i din Raspberry Pi.

Installasjonen av avhengighetene for OpenCV -modulen tar ikke mye tid, men byggeprosessen kan ta opptil 2 til 3 timer !! Så, spenne opp !!: P

Det er mange opplæringsprogrammer på nettet som du kan følge for å installere OpenCV 4.1.0 -modulen. Her er lenken til den jeg fulgte: Klikk her

MERK: Jeg anbefaler på det sterkeste å installere OpenCV -modulen i et virtuelt miljø som vist i opplæringen, da det forhindrer forskjellige slags konflikter som kan oppstå på grunn av installasjon av avhengigheter for forskjellige moduler eller mens du arbeider med forskjellige versjoner av python.

Trinn 3: Skrive ut kamerafeste

Skrive ut kamerafeste
Skrive ut kamerafeste
Skrive ut kamerafeste
Skrive ut kamerafeste
Skrive ut kamerafeste
Skrive ut kamerafeste

NoIR picamera har ikke noe infrarødt filter, og kan derfor brukes som et nattsynskamera, men det mangler fortsatt en infrarød lyskilde. Alle nattsynskameraene har sin egen infrarøde lyskilde som sprenger ut IR -stråler i mørket som er usynlige for det blotte øye, men strålene kan sees av kameraet uten infrarødt filter etter å ha blitt reflektert fra noe objekt.

Så vi trenger i utgangspunktet en infrarød lyskilde og noe å montere kameraet på. For dette designet jeg en enkel 3D -modell av et objekt som vi kunne montere kameraet på som vi vil omringet av 10 IR -lysdioder i en sirkel. Modellen ble laget med SketchUp og skrevet ut med svart PLA på omtrent 40 minutter.

Trinn 4: Fullfør kamerafeste

Fullfør kamerafeste
Fullfør kamerafeste
Fullfør kamerafeste
Fullfør kamerafeste
Fullfør kamerafeste
Fullfør kamerafeste

Etter å ha skrevet ut modellen, slipte jeg den først med et sandpapir av 80 sand og begynte å plassere IR -lysdiodene i hullene i henhold til diagrammet ovenfor.

Jeg festet lysdiodene på plass med litt varmt lim og koblet deretter sammen de positive og negative ledningene til to påfølgende lysdioder og loddet dem deretter for å lage en seriekobling av lysdiodene.

Den positive ledningen til en ledning og den negative ledningen til ledningen ved siden av den i bunnen ble loddet ut for å koble de positive og negative endene fra 12 volt veggadapter.

Trinn 5: Den opplærte maskinlæringsmodellen

For å gjenkjenne bokstaven trukket av en person, trente jeg en maskinlæringsmodell basert på algoritmen Support Vector Machine (SVM) ved hjelp av et datasett med håndskrevne engelske alfabeter jeg fant her. SVM er svært effektive maskinlæringsalgoritmer som kan gi en høy nøyaktighet, rundt 99,2% i dette tilfellet! Les mer om SVM

Datasettet er i form av.csv -fil som inneholder 785 kolonner og mer enn 300 000 rader der hver rad representerer et 28 x 28 bilde og hver kolonne i den raden inneholder verdien av den pikslen for det bildet med en ekstra kolonne i begynnelsen som inneholder etiketten, et tall fra 0 til 25, som hver tilsvarer en engelsk bokstav. Gjennom en enkel python -kode, kuttet jeg dataene for å få alle bildene for bare de 2 bokstavene (A og C) jeg ønsket og trente en modell for dem.

Jeg har lagt ved den opplærte modellen (alphabet_classifier.pkl) og også treningskoden kan du gå igjennom den eller gjøre endringer for å trene modellen med forskjellige bokstaver eller prøve forskjellige algoritmer. Etter at du har kjørt programmet, lagrer den automatisk den opplærte modellen i den samme katalogen der koden din er lagret.

Trinn 6: Koden som får alt til å skje

Koden som får alt til å skje !!
Koden som får alt til å skje !!

Etter å ha opprettet den opplærte modellen, er det siste trinnet å skrive et python -program for vår Raspberry Pi som lar oss gjøre følgende:

  • Få tilgang til video fra picamera i sanntid
  • Oppdag og spore hvite klatter (i dette tilfellet spissen av staven som lyser i nattesyn) i videoen
  • Begynn å spore banen til den bevegelige bloben i videoen etter noen triggerhendelse (forklart nedenfor)
  • Stopp sporing etter en annen triggerhendelse (forklart nedenfor)
  • Returner den siste rammen med mønsteret tegnet av brukeren
  • Utfør forbehandling på rammen som terskel, støyfjerning, endring av størrelser etc.
  • Bruk den behandlede siste rammen for prediksjon.
  • Utfør en slags magi ved å kontrollere GPIO -ene til Raspberry Pi i henhold til forutsetningen

For dette prosjektet laget jeg en boks med Harry Potter -tema som jeg kan åpne og lukke ved hjelp av en servomotor som styres av GPIO på Raspberry Pi. Siden bokstaven 'A' står for 'Alohamora' (en av de mest kjente stavene fra Harry Potter -filmene som lar en veiviser åpne hvilken som helst lås !!), hvis en person tegner bokstav A med tryllestaven, befaler pi servoen å åpne esken. Hvis personen tegner bokstaven 'C' som står for close (ettersom jeg ikke kunne tenke meg noen passende stave som ble brukt for å lukke eller låse: P), befaler pi servoen å lukke boksen.

Alt arbeidet knyttet til bilde-/videobehandling, som blobdeteksjon, sporing av banen til blobben, forbehandling av den siste rammen osv., Utføres gjennom OpenCV-modulen.

For triggerhendelsene nevnt ovenfor, opprettes to sirkler på sanntidsvideoen, en grønn og en rød sirkel. Når klippen kommer inn i området i den grønne sirkelen, begynner programmet å spore banen som ble tatt av klippen etter det øyeblikket, slik at personen kan begynne å lage bokstaven. Når klippen når den røde sirkelen, stopper videoen og den siste rammen sendes til en funksjon som utfører forbehandlingen på rammen for å gjøre den klar for prediksjon.

Jeg har lagt ved kodefilene i dette trinnet. Gjennomgå det og gjør eventuelle endringer du vil.

MERK: Jeg måtte lage to separate python -filer som arbeider med forskjellige python -versjoner, en som importerer OpenCV -modul (Python 2.7) og en annen som importerer sklearn -modulen (Python 3.5) for prediksjon etter lasting av den opplærte modellen, slik min OpenCV ble installert for Python 2.7 -versjonen mens sklearn ble installert for python 3.5. Så jeg brukte delprosessmodulen til å kjøre filen HarryPotterWandsklearn.py (for prediksjon) fra HarryPotterWandcv.py (for alt opencv -arbeidet og videoopptak i sanntid) og få utgangen. På denne måten trenger jeg bare å kjøre HarryPotterWandcv.py -filen.

Trinn 7: Åpningsmekanismen for esken

Boksen åpningsmekanisme
Boksen åpningsmekanisme
Boksen åpningsmekanisme
Boksen åpningsmekanisme
Boksen åpningsmekanisme
Boksen åpningsmekanisme

Jeg hadde en gammel rød farget boks som jeg brukte til dette prosjektet.

For boksåpningsmekanismen:

  1. Jeg varmlimte en servo nær bakenden av esken på et stykke papp nær esken.
  2. Så tok jeg en eik fra hjulet i en syklus og varmlimte den til armen på servoen.
  3. Den andre enden av eiken var festet til lokket på esken ved hjelp av et stykke ledning.
  4. Servo Positive ble koblet til +5V Pin 2 på Raspberry Pi.
  5. Negativt for servo ble koblet til GND Pin 39.
  6. Servosignal ble koblet til Pin 12

Trinn 8: Gjør esken til et Harry Potter -tema

Making the Box Harry Potter Themed
Making the Box Harry Potter Themed
Making the Box Harry Potter Themed
Making the Box Harry Potter Themed
Making the Box Harry Potter Themed
Making the Box Harry Potter Themed

For å lage boksen Harry Potter -tema, skrev jeg ut noen fargede bilder av forskjellige ting som Harry Potter -logoen, The Hogwarts Crest, The Crest i hvert av de fire husene etc. på glanset A4 -størrelse ark og limte dem på esken på forskjellige steder.

Jeg brukte også et gulfarget fløyelsark til å klippe strimler og limte dem på lokket for å gi esken den samme fargen som Gryffindor House. Jeg dekket innsiden av lokket og papp for servo med grønt fløyelark. På innsiden av lokket limte jeg inn flere symboler og et emblem som viser dyrene som representerer hvert hus på Hogwarts -skolen.

Så stoppet jeg til slutt alle mine Harry Potter -relaterte ting i esken som inkluderte en Gryffindor -lyddemper, en dagbok med Hogwarts -uniformen og Elder Wand som ble brukt i dette prosjektet: D

Anbefalt: