Kazalo:

Prava delujoča palica Harry Potter z uporabo računalniškega vida: 8 korakov (s slikami)
Prava delujoča palica Harry Potter z uporabo računalniškega vida: 8 korakov (s slikami)

Video: Prava delujoča palica Harry Potter z uporabo računalniškega vida: 8 korakov (s slikami)

Video: Prava delujoča palica Harry Potter z uporabo računalniškega vida: 8 korakov (s slikami)
Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024, Julij
Anonim
Image
Image
Prava delujoča palica Harry Potter z uporabo računalniškega vida
Prava delujoča palica Harry Potter z uporabo računalniškega vida
Prava delujoča palica Harry Potter z uporabo računalniškega vida
Prava delujoča palica Harry Potter z uporabo računalniškega vida
Prava delujoča palica Harry Potter z uporabo računalniškega vida
Prava delujoča palica Harry Potter z uporabo računalniškega vida

"Vsaka dovolj napredna tehnologija se ne razlikuje od čarovnije" - Arthur C. Clarke

Nekaj mesecev nazaj je moj brat obiskal Japonsko in imel resnične čarovniške izkušnje v čarovniškem svetu Harryja Potterja v Universal Studiosu, ki jim je to omogočilo tehnologija Computer Vision.

V čarovniškem svetu Harryja Potterja v Universal Studios lahko turisti izvajajo "pravo čarovnijo" na določenih lokacijah (kjer je nameščen sistem za zajemanje gibanja) s pomočjo posebej izdelanih palic z odsevnimi kroglicami na konici. Palice lahko kupite v pravi Ollivanderjevi trgovini, ki so popolnoma enake tistim, ki so prikazane v filmih o Harryju Potterju, vendar se spomnite: "Čarobnjak izbere paličica": P

Na tistih določenih lokacijah, če oseba izvede določeno potezo s palico, sistem za zajemanje gibanja prepozna potezo in vse kretnje ustrezajo določenemu uroku, ki povzroči nekatere dejavnosti v okolici, kot je vklop vodnjaka itd.

Tako bom v tem Instructableu pokazal, kako lahko doma ustvarite poceni in učinkovit sistem zajemanja gibanja za izvajanje "prave čarovnije", tako da s potegom palice odprete škatlo: D z uporabo običajne kamere za nočno opazovanje, nekaj elektronike, in nekaj kode python z uporabo knjižnice OpenCV Computer Vision in strojnega učenja !!!

1. korak: Osnovna ideja in potrebni deli

Osnovna zamisel in potrebni deli
Osnovna zamisel in potrebni deli
Osnovna zamisel in potrebni deli
Osnovna zamisel in potrebni deli
Osnovna zamisel in potrebni deli
Osnovna zamisel in potrebni deli
Osnovna ideja in potrebni deli
Osnovna ideja in potrebni deli

Palice, kupljene v čarovniškem svetu Harryja Potterja v Universal Studiosu, imajo na konici odsevno kroglico. Te odsevne kroglice odsevajo veliko infrardeče svetlobe, ki jo oddaja kamera v sistemu za zajemanje gibanja. Torej, kar ljudje dojemamo kot ne tako izrazit vrh palice, ki se giblje v zraku, sistem zajema gibanje kot svetel blob, ki ga je mogoče enostavno izolirati v videotoku in mu slediti, da prepozna vzorec, ki ga nariše oseba, in izvede potrebno dejanje. Vsa ta obdelava poteka v realnem času in uporablja računalniški vid in strojno učenje.

Preprosto kamero Night Vision lahko uporabimo kot našo kamero za zajem gibanja, saj izžareva tudi infrardečo svetlobo, ki ni vidna ljudem, vendar jo je mogoče jasno videti s kamero, ki nima infrardečega filtra. Tako se video tok iz kamere dovaja v malinovo pi, ki ima program python z OpenCV, ki se uporablja za zaznavanje, izolacijo in sledenje konici palice. Nato uporabimo algoritem strojnega učenja SVM (Simple Vector Machine) za prepoznavanje narisanega vzorca in ustrezno krmiljenje GPIO -jev maline pi za izvajanje nekaterih dejavnosti.

Potrebni materiali:

1) Raspberry Pi 3 model B in potrebna dodatna oprema, kot sta tipkovnica in miška

2) Modul kamere Raspberry Pi NoIR (brez infrardečega)

3) Palica Harry Potter z odsevnikom na vrhu: Ne skrbite, če ga nimate. Uporabite lahko karkoli z odsevnikom. Torej lahko uporabite katero koli palico, podobno palici, in na konico nanesete odsevni trak, barvo ali kroglice, ki naj delujejo, kot je prikazano v videoposnetku Williama Osmana: Oglejte si video

4) 10 infrardečih LED

5) 3D tiskalnik in žarilna nitka PLA po vaši izbiri

6) 12V - 1A stenski adapter in vtičnica DC

7) Servo motor

8) Stara škatla in žlica s kolesca cikla

9) Pištola za vroče lepilo

10) Izpisi nekaterih logotipov in slik, povezanih s Harryjem Potterjem, na sijajnem listu papirja

11) Zeleni in rumeni žametni listi.

OPOMBA: Poskusil sem uporabiti tudi staro običajno spletno kamero za nočni vid, tako da sem odstranil njen infrardeči filter, vendar sem na koncu poškodoval/premaknil lečo, kar je močno vplivalo na kakovost videa in ga nisem mogel uporabiti. Če pa želite poskusiti, pojdite skozi ta odličen pouk Kliknite tukaj

Korak: Namestite modul OpenCV !

Zdaj je čas za prvi in verjetno najdaljši korak tega celotnega projekta: namestitev in izdelava modula OpenCV v vašem Raspberry Pi.

Namestitev odvisnosti za modul OpenCV ne traja veliko časa, vendar lahko postopek izdelave traja do 2 do 3 ure !! Torej, zapenjajte se !!: P

Na spletu je veliko vadnic, ki jim lahko sledite za namestitev modula OpenCV 4.1.0. Tukaj je povezava tiste, ki sem ji sledil: Kliknite tukaj

OPOMBA: Močno priporočam namestitev modula OpenCV v virtualno okolje, kot je prikazano v vadnici, saj bo to preprečilo različne vrste konfliktov, ki se lahko pojavijo zaradi namestitve odvisnosti različnih modulov ali pri delu z različnimi različicami pythona.

3. korak: Natisnite nosilec kamere

Tiskanje nosilca za fotoaparat
Tiskanje nosilca za fotoaparat
Tiskanje nosilca za fotoaparat
Tiskanje nosilca za fotoaparat
Tiskanje nosilca za fotoaparat
Tiskanje nosilca za fotoaparat

Pikamera NoIR nima infrardečega filtra, zato se lahko uporablja kot kamera za nočno opazovanje, vendar še vedno nima infrardečega vira svetlobe. Vse kamere za nočno opazovanje imajo lasten infrardeči vir svetlobe, ki v temi odstreli infrardeče žarke, ki so nevidni s prostim očesom, vendar jih žarki lahko vidijo brez infrardečega filtra, potem ko se odbijejo od katerega koli predmeta.

Torej, v bistvu potrebujemo infrardeči vir svetlobe in nekaj, na kar lahko namestimo kamero. Za to sem oblikoval preprost 3D model predmeta, na katerega bi lahko namestili kamero, ki jo bomo obkrožili z 10 IR -diodami v krogu. Model je bil ustvarjen s programom SketchUp in natisnjen s črno PLA v približno 40 minutah.

4. korak: Dokončanje nosilca kamere

Dokončanje nosilca kamere
Dokončanje nosilca kamere
Dokončanje nosilca kamere
Dokončanje nosilca kamere
Dokončanje nosilca kamere
Dokončanje nosilca kamere

Po tiskanju modela sem ga najprej brusila z brusnim papirjem zrnatosti 80, nato pa sem v skladu z zgornjim diagramom začela postavljati IR diode v njihove luknje.

Svetleče diode sem na njihovo mesto pritrdil z vročim lepilom, nato pa povezal pozitivne in negativne vodi dveh zaporednih LED, nato pa jih spajkal, da bi ustvaril serijsko povezavo LED.

Pozitivni vod enega vodila in negativni vodnik zraven njega na dnu sta ostala spajkana, da bi povezali pozitivni in negativni konec 12-voltnega stenskega adapterja.

5. korak: Model usposobljenega strojnega učenja

Za prepoznavanje črke, ki jo je narisala oseba, sem se naučil modela strojnega učenja, ki temelji na algoritmu Support Vector Machine (SVM) s pomočjo nabora podatkov ročno napisanih angleških abeced, ki sem jih našel tukaj. SVM so zelo učinkoviti algoritmi strojnega učenja, ki lahko dajo visoko natančnost, v tem primeru okoli 99,2% !! Preberite več o SVM -jih

Nabor podatkov je v obliki datoteke.csv, ki vsebuje 785 stolpcev in več kot 300.000 vrstic, kjer vsaka vrstica predstavlja sliko 28 x 28 in vsak stolpec v tej vrstici vsebuje vrednost te slikovne pike za to sliko z dodatnim stolpcem v začetek, ki vsebuje oznako, številko od 0 do 25, od katerih vsaka ustreza angleški črki. S preprosto kodo python sem razrezal podatke, da sem dobil vse slike samo za 2 črki (A in C), ki sem jih želel, in zanje izučil model.

Priložil sem usposobljen model (alphabet_classifier.pkl) in tudi kodo za usposabljanje vas prosim, da ga pregledate ali naredite kakršne koli spremembe za usposabljanje modela z različnimi črkami ali preizkusite različne algoritme. Po zagonu programa samodejno shrani usposobljeni model v isti imenik, kjer je shranjena vaša koda.

6. korak: Koda, zaradi katere se vse zgodi !

Koda, zaradi katere se vse zgodi !!
Koda, zaradi katere se vse zgodi !!

Po ustvarjanju usposobljenega modela je zadnji korak, da napišemo program python za naš Raspberry Pi, ki nam omogoča naslednje:

  • Dostopajte do videoposnetka s kamere v realnem času
  • V videoposnetku odkrijte in sledite belim madežem (v tem primeru konici palice, ki zasveti v nočnem pogledu)
  • Začnite slediti poti premikajočega se bloba v videoposnetku po dogodku sprožilca (razloženo spodaj)
  • Ustavi sledenje po drugem dogodku sprožilca (razloženo spodaj)
  • Vrnite zadnji okvir z vzorcem, ki ga je narisal uporabnik
  • Izvedite predhodno obdelavo na okvirju, kot so prag, odstranjevanje hrupa, spreminjanje velikosti itd.
  • Za napoved uporabite obdelani zadnji okvir.
  • Naredite nekakšno čarovnijo tako, da nadzirate GPIO -je Raspberry Pi v skladu s predvidevanjem

Za ta projekt sem ustvaril škatlo s temo Harryja Potterja, ki jo lahko odprem in zaprem s pomočjo servo motorja, ki ga nadzira GPIO v Raspberry Pi. Ker črka 'A' pomeni 'Alohamora' (eden najbolj znanih urokov iz filmov o Harryju Potterju, ki čarovniku omogoča, da odpre katero koli ključavnico !!), če oseba s palico nariše črko A, pi ukaže servo, da odprite škatlo. Če oseba nariše črko 'C', ki pomeni zapiranje (ker se nisem spomnil nobenega ustreznega uroka, ki bi se uporabil za zapiranje ali zaklepanje: P), pi ukaže servomotorju, da zapre polje.

Vsa dela, povezana z obdelavo slik/videa, kot so odkrivanje blobov, sledenje poti bloba, vnaprejšnja obdelava zadnjega okvirja itd., Se izvajajo prek modula OpenCV.

Za zgoraj omenjene sprožilne dogodke sta v videoposnetku v realnem času ustvarjena dva kroga, zeleni in rdeči krog. Ko blob vstopi v regijo znotraj zelenega kroga, program začne slediti poti, ki jo je po tem trenutku prešla, in osebi omogoči, da začne ustvarjati črko. Ko blob doseže rdeči krog, se video ustavi in zadnji okvir se posreduje funkciji, ki izvede predhodno obdelavo okvirja, da ga pripravi na predvidevanje.

V tem koraku sem priložil kodne datoteke. Ne pozabite iti skozi to in narediti kakršne koli spremembe, kot želite.

OPOMBA: Moral sem ustvariti dve ločeni datoteki python, ki delujeta z različnimi različicami pythona, eno, ki uvozi modul OpenCV (Python 2.7) in drugo, ki uvozi modul sklearn (Python 3.5) za napovedovanje po nalaganju usposobljenega modela, saj je bil moj OpenCV nameščen za različico Python 2.7, medtem ko je bil sklearn nameščen za python 3.5. Tako sem uporabil podprocesni modul za zagon datoteke HarryPotterWandsklearn.py (za napoved) iz HarryPotterWandcv.py (za vse delo opencv in snemanje videa v realnem času) in dosegel izhod. Na ta način moram zagnati samo datoteko HarryPotterWandcv.py.

7. korak: Mehanizem odpiranja škatle

Mehanizem odpiranja škatle
Mehanizem odpiranja škatle
Mehanizem odpiranja škatle
Mehanizem odpiranja škatle
Mehanizem odpiranja škatle
Mehanizem odpiranja škatle

Okrog sem ležala stara rdeče obarvana škatla, ki sem jo uporabila za ta projekt.

Za mehanizem odpiranja škatel:

  1. Vroče sem zlepil servo v bližini zadnjega dela škatle na kos kartona blizu roba škatle.
  2. Nato sem vzel žig iz kolesa cikla in ga vroče prilepil na roko servo.
  3. Drugi konec napere je bil s kosom žice pritrjen na pokrov škatle.
  4. Pozitivna vrednost servo je bila povezana z +5V Pin 2 na Raspberry Pi.
  5. Negativ servomotorja je bil priključen na pin 39 GND.
  6. Signal servo je bil priključen na pin 12

8. korak: Ustvarjanje škatle Harry Potter

Oblikovanje škatle Harry Potter
Oblikovanje škatle Harry Potter
Oblikovanje škatle Harry Potter
Oblikovanje škatle Harry Potter
Oblikovanje škatle Harry Potter
Oblikovanje škatle Harry Potter

Za izdelavo škatle Harry Potter je na sijajni list velikosti A4 natisnil nekaj barvnih slik različnih stvari, kot so logotip Harry Potter, greben Hogwarts, greben vsake od štirih hiš itd., In jih prilepil na škatlo krajev.

Za rezanje trakov sem uporabil tudi žametno barvo rumene barve in jih prilepil na pokrov, da sem škatli dal enako barvo kot pri hiši Gryffindor. Notranjost pokrova in kartona za servo sem pokrila z zelenim žametnim listom. Na notranjo stran pokrova sem prilepil več simbolov in emblem, ki prikazuje živali, ki predstavljajo vsako hišo šole Hogwarts.

Nato sem na koncu vse svoje stvari, povezane s Harryjem Potterjem, spravil v škatlo, ki je vključevala glušnik Gryffindor, dnevnik z uniformo Hogwarts in starejšo palico, uporabljeno v tem projektu: D

Priporočena: