Taula de continguts:

Vareta de treball real de Harry Potter amb visió per ordinador: 8 passos (amb imatges)
Vareta de treball real de Harry Potter amb visió per ordinador: 8 passos (amb imatges)

Vídeo: Vareta de treball real de Harry Potter amb visió per ordinador: 8 passos (amb imatges)

Vídeo: Vareta de treball real de Harry Potter amb visió per ordinador: 8 passos (amb imatges)
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, De novembre
Anonim
Image
Image
Vareta de treball real de Harry Potter amb visió per ordinador
Vareta de treball real de Harry Potter amb visió per ordinador
Vareta de treball real de Harry Potter amb visió per ordinador
Vareta de treball real de Harry Potter amb visió per ordinador
Vareta de treball real de Harry Potter amb visió per ordinador
Vareta de treball real de Harry Potter amb visió per ordinador

"Qualsevol tecnologia prou avançada no es distingeix de la màgia" - Arthur C. Clarke

Fa uns mesos, el meu germà va visitar Japó i va tenir una experiència màgica real al món dels mags de Harry Potter als estudis universals que va ser possible gràcies a la tecnologia de Visió per Computador.

Al món dels mags de Harry Potter, a Universal Studios, els turistes poden realitzar "màgia real" en determinats llocs (on s'instal·la el sistema de captura de moviment) mitjançant varetes fetes especialment amb comptes retro-reflectants a la punta. Les varetes es poden comprar a una botiga d'Ollivander real que són exactament iguals a les que es mostren a les pel·lícules de Harry Potter, però recordeu: "És la vareta que tria l'assistent": P

En aquells llocs determinats, si la persona realitza un gest particular amb vareta, el sistema de captura de moviment reconeix el gest i tots els gestos corresponen a un encanteri determinat que provoca certes activitats a la zona circumdant, com encendre la font, etc.

Per tant, en aquest instructiu us mostraré com podeu crear un sistema de captura de moviment econòmic i eficaç a casa per realitzar "màgia real" obrint una caixa amb el toc de la vostra vareta: D utilitzant només una càmera de visió nocturna normal, alguns aparells electrònics, i algun codi python que utilitza la biblioteca OpenCV Computer Vision i Machine Learning !!!

Pas 1: la idea bàsica i les parts necessàries

La idea bàsica i les parts necessàries
La idea bàsica i les parts necessàries
La idea bàsica i les parts necessàries
La idea bàsica i les parts necessàries
La idea bàsica i les parts necessàries
La idea bàsica i les parts necessàries
La idea bàsica i les parts necessàries
La idea bàsica i les parts necessàries

Les varetes que es compren al món màgic de Harry Potter a Universal Studios tenen un cordó retroreflectant a la punta. Aquests comptes reflectants reflecteixen una gran quantitat de llum infraroja que la càmera emet en el sistema de captura de moviment. Per tant, el que percebem els humans com una punta no tan distintiva de la vareta que es mou en l'aire, el sistema de captura de moviment percep com un blob brillant que es pot aïllar fàcilment al flux de vídeo i fer un seguiment per reconèixer el patró dibuixat per la persona i executar l'acció necessària. Tot aquest processament es realitza en temps real i fa ús de la visió per computador i l’aprenentatge automàtic.

Una càmera senzilla de visió nocturna es pot utilitzar com a càmera per a la captura de moviment, ja que també exploten la llum infraroja que no és visible per als humans, però es pot veure clarament amb una càmera que no disposa de filtre infraroig. Per tant, el flux de vídeo de la càmera s’introdueix en un raspberry pi que té un programa python que executa OpenCV que s’utilitza per detectar, aïllar i rastrejar la punta de la vareta. A continuació, fem servir l'algorisme SVM (Simple Vector Machine) de Machine Learning per reconèixer el patró dibuixat i, en conseqüència, controlar els GPIO del raspberry pi per realitzar algunes activitats.

Els materials requerits:

1) Un Raspberry Pi 3 model B i els accessoris necessaris com el teclat i el ratolí

2) Mòdul de càmera Raspberry Pi NoIR (sense infrarojos)

3) Vareta de Harry Potter amb retroreflector a la punta: No us preocupeu si no en teniu. Es pot utilitzar qualsevol cosa amb un retroreflector. Per tant, podeu utilitzar qualsevol pal semblant a una vareta i aplicar cinta de retroreflector, pintura o perles a la punta i hauria de funcionar com es mostra al vídeo de William Osman: Mireu el vídeo

4) 10 LED d'infrarojos

5) Una impressora 3D i un filament PLA que trieu

6) Adaptador de paret de 12V - 1A i presa de corrent continu

7) Un servomotor

8) Una caixa vella i un radi de la roda d’un cicle

9) Una pistola de cola calenta

10) Impressions d'alguns logotips i imatges relacionades amb Harry Potter en full de paper brillant

11) Llençols de vellut verd i groc.

NOTA: També vaig provar d'utilitzar una càmera web antiga per a la visió nocturna eliminant el filtre d'infrarojos, però vaig acabar danyant / desplaçant l'objectiu, cosa que va afectar molt la qualitat del vídeo i no el vaig poder utilitzar. Però si voleu provar-ho, podeu passar per aquest fantàstic clic aquí

Pas 2: instal·leu el mòdul OpenCV

Ara és el moment del primer i probablement el pas més llarg de tot aquest projecte: la instal·lació i la construcció del mòdul OpenCV al vostre Raspberry Pi.

La instal·lació de les dependències del mòdul OpenCV no triga molt de temps, però el procés de compilació pot trigar de 2 a 3 hores !! Així doncs, Rellotgeu-vos !!: Pàg

Hi ha molts tutorials en línia que podeu seguir per instal·lar el mòdul OpenCV 4.1.0. Aquí teniu l’enllaç del que he seguit: Feu clic aquí

NOTA: Us recomano instal·lar el mòdul OpenCV a l'entorn virtual, tal com es mostra al tutorial, ja que evitarà diversos tipus de conflictes que poden passar a causa de la instal·lació de dependències de diferents mòduls o mentre es treballa amb diferents versions de python.

Pas 3: Impressió del muntatge de la càmera

Impressió del suport de la càmera
Impressió del suport de la càmera
Impressió del suport de la càmera
Impressió del suport de la càmera
Impressió del suport de la càmera
Impressió del suport de la càmera

La càmera NoIR no té filtre d’infrarojos, per tant es pot utilitzar com a càmera de visió nocturna, però encara no té una font de llum infraroja. Totes les càmeres de visió nocturna tenen la seva pròpia font de llum infraroja que fa saltar els raigs IR a la foscor, que són invisibles a simple vista, però els raigs poden ser vistos per la càmera sense filtre infrarojos després de reflectir-se en cap objecte.

Per tant, bàsicament necessitem una font de llum infraroja i alguna cosa per muntar la càmera. Per a això vaig dissenyar un senzill model en 3D d’un objecte sobre el qual podríem muntar la càmera que ens envoltaria de 10 leds IR en cercle. El model es va crear amb SketchUp i es va imprimir amb PLA negre en uns 40 minuts.

Pas 4: finalització del muntatge de la càmera

Acabat el muntatge de la càmera
Acabat el muntatge de la càmera
Acabat el muntatge de la càmera
Acabat el muntatge de la càmera
Finalització del muntatge de la càmera
Finalització del muntatge de la càmera

Després d’imprimir el model, primer el vaig polir amb un paper de sorra de granulat de 80 graus i després vaig començar a col·locar els leds IR als seus forats segons el diagrama anterior.

Vaig assegurar els leds al seu lloc amb una mica de cola calenta i després vaig unir els cables positius i negatius de dos leds consecutius i després els vaig soldar per crear una connexió en sèrie dels leds.

El cable positiu d’un led i el negatiu del led que hi ha al costat a la part inferior es van deixar sense soldar per connectar els extrems positius i negatius de l’adaptador de paret de 12 volts.

Pas 5: el model d’aprenentatge automàtic entrenat

Amb el propòsit de reconèixer la carta dibuixada per una persona, he format un model d’aprenentatge automàtic basat en l’algorisme de Vector Support Machine (SVM) mitjançant un conjunt de dades d’alfabets anglesos manuscrits que he trobat aquí. Els SVM són algoritmes d’aprenentatge automàtic molt eficients que poden donar una alta precisió, al voltant del 99,2% en aquest cas !! Llegiu més sobre SVM

El conjunt de dades té la forma d’un fitxer.csv que conté 785 columnes i més de 300.000 files on cada fila representa una imatge de 28 x 28 i cada columna d’aquesta fila conté el valor d’aquest píxel per a aquesta imatge amb una columna addicional a el principi que conté l'etiqueta, un número del 0 al 25, corresponent cadascun a una lletra anglesa. Mitjançant un simple codi python, vaig tallar les dades per obtenir totes les imatges només de les 2 lletres (A i C) que volia i vaig formar un model per a elles.

He adjuntat el model entrenat (alphabet_classifier.pkl) i també el codi d’entrenament, no dubteu a passar-lo o fer qualsevol canvi per entrenar el model amb diferents lletres o provar algorismes diferents. Després d’executar el programa, desa automàticament el model entrenat al mateix directori on s’ha desat el codi.

Pas 6: el codi que fa que tot passi

El codi que fa que tot passi !!
El codi que fa que tot passi !!

Després de crear el model entrenat, l'últim pas és escriure un programa python per al nostre Raspberry Pi que ens permeti fer el següent:

  • Accediu al vídeo de la càmera fotogràfica en temps real
  • Detecta i fa un seguiment de taques blanques (en aquest cas, la punta de la vareta que s’il·lumina en la visió nocturna) al vídeo
  • Comenceu a rastrejar el camí del blob en moviment al vídeo després d'un esdeveniment activador (s'explica a continuació)
  • Atureu el seguiment després d'un altre esdeveniment activador (s'explica a continuació)
  • Torneu l'últim marc amb el patró dibuixat per l'usuari
  • Realitzeu un processament previ al quadre, com ara llindars, eliminació de soroll, redimensionament, etc.
  • Utilitzeu l'últim marc processat per a la predicció.
  • Realitzeu algun tipus de màgia controlant els GPIO del Raspberry Pi segons la predicció

Per a aquest projecte vaig crear una caixa temàtica de Harry Potter que puc obrir i tancar mitjançant un servomotor controlat pel GPIO del Raspberry Pi. Com que la lletra "A" significa "Alohamora" (un dels encanteris més famosos de les pel·lícules de Harry Potter que permet a un mag obrir qualsevol pany !!), si una persona dibuixa la lletra A amb la vareta, el pi ordena al servo obriu la caixa. Si la persona dibuixa la lletra 'C' que significa tancar (ja que no se m'acut cap encanteri adequat que s'utilitzi per tancar o bloquejar: P), el pi ordena al servo que tanqui la caixa.

Tot el treball relacionat amb el processament d’imatges / vídeo, com la detecció de blob, el traçat del camí del blob, el pre-processament de l’últim fotograma, etc., es realitza a través del mòdul OpenCV.

Per als esdeveniments activadors esmentats anteriorment, es creen dos cercles al vídeo en temps real, un cercle verd i un vermell. Quan el blob entra a la regió dins del cercle verd, el programa comença a traçar el camí que ha seguit el blob després d’aquest moment, permetent a la persona començar a crear la lletra. Quan el blob arriba al cercle vermell, el vídeo s'atura i l'últim fotograma es passa a una funció que realitza el processament previ al fotograma per preparar-lo per a la predicció.

He adjuntat els fitxers de codi en aquest pas. No dubteu a passar-hi i fer els canvis que vulgueu.

NOTA: Vaig haver de crear dos fitxers Python diferents que funcionessin amb diferents versions de Python, un que importa el mòdul OpenCV (Python 2.7) i un altre que importa el mòdul sklearn (Python 3.5) per a la predicció després de carregar el model entrenat, ja que el meu OpenCV estava instal·lat per la versió de Python 2.7 mentre que sklearn estava instal·lat per a Python 3.5. Per tant, he utilitzat el mòdul de subprocés per executar el fitxer HarryPotterWandsklearn.py (per a la predicció) des de HarryPotterWandcv.py (per a tot el treball a cel obert i la gravació de vídeo en temps real) i obtenir la seva sortida. D'aquesta manera només he d'executar el fitxer HarryPotterWandcv.py.

Pas 7: el mecanisme d'obertura de caixes

El mecanisme d’obertura de caixes
El mecanisme d’obertura de caixes
El mecanisme d’obertura de caixes
El mecanisme d’obertura de caixes
El mecanisme d’obertura de caixes
El mecanisme d’obertura de caixes

Tenia al voltant una antiga caixa de color vermell que utilitzava per a aquest projecte.

Per al mecanisme d'obertura de caixa:

  1. Vaig enganxar un servo a la part posterior de la caixa sobre un tros de cartró a prop de la vora de la caixa.
  2. Després vaig agafar un radi de la roda d’un cicle i el vaig enganxar en calent al braç del servo.
  3. L'altre extrem del ràdio es va fixar a la tapa de la caixa mitjançant un tros de filferro.
  4. Positiu del servo es va connectar a + 5V Pin 2 a Raspberry Pi.
  5. El negatiu del servo es va connectar al pin 39 de GND.
  6. El senyal del servo estava connectat al pin 12

Pas 8: Creació del tema de Harry Potter

Fent temàtica la caixa de Harry Potter
Fent temàtica la caixa de Harry Potter
Fent temàtica la caixa de Harry Potter
Fent temàtica la caixa de Harry Potter
Fent temàtica la caixa de Harry Potter
Fent temàtica la caixa de Harry Potter

Per fer el tema de la caixa Harry Potter, vaig imprimir algunes imatges de colors de diverses coses com el logotip de Harry Potter, la cresta de Hogwarts, la cresta de cadascuna de les quatre cases, etc. en un full de mida A4 brillant i les vaig enganxar a la caixa de diverses llocs.

També vaig utilitzar un full de vellut de color groc per tallar tires i les vaig enganxar a la tapa per donar-los a la caixa el mateix color que el de la casa Gryffindor. Vaig tapar l’interior de la tapa i el cartró per al servo amb llençol de vellut verd. A l'interior de la tapa vaig enganxar més símbols i un emblema que mostrava els animals que representen cada casa de l'escola de Hogwarts.

Després, finalment, vaig ficar totes les coses relacionades amb Harry Potter a la caixa, que incloïa un silenciador de Gryffindor, un diari amb l’uniforme de Hogwarts i la vareta vella utilitzada en aquest projecte: D

Recomanat: