Sadržaj:

Pravi radni štap Harryja Pottera pomoću računarskog vida: 8 koraka (sa slikama)
Pravi radni štap Harryja Pottera pomoću računarskog vida: 8 koraka (sa slikama)

Video: Pravi radni štap Harryja Pottera pomoću računarskog vida: 8 koraka (sa slikama)

Video: Pravi radni štap Harryja Pottera pomoću računarskog vida: 8 koraka (sa slikama)
Video: KADA BI STVARI U KUĆI MOGLE DA PRIČAJU 2024, Decembar
Anonim
Image
Image
Pravi radni štap Harryja Pottera pomoću računarskog vida
Pravi radni štap Harryja Pottera pomoću računarskog vida
Pravi radni štap Harryja Pottera pomoću računarskog vida
Pravi radni štap Harryja Pottera pomoću računarskog vida
Pravi radni štap Harryja Pottera pomoću računarskog vida
Pravi radni štap Harryja Pottera pomoću računarskog vida

"Svaka dovoljno napredna tehnologija se ne razlikuje od magije" - Arthur C. Clarke

Prije nekoliko mjeseci moj brat je posjetio Japan i imao pravo čarobnjačko iskustvo u Čarobnjačkom svijetu Harryja Pottera u Universal Studiosu omogućeno tehnologijom Computer Vision.

U čarobnjačkom svijetu Harryja Pottera u Universal Studiosu turisti mogu izvesti "pravu magiju" na određenim lokacijama (gdje je instaliran sistem za snimanje pokreta) koristeći posebno izrađene štapiće s retro-reflektirajućim perlicama na vrhu. Štapići se mogu kupiti u pravoj Ollivanderovoj trgovini koja je potpuno ista kao ona prikazana u filmovima o Harryju Potteru, ali zapamtite: "Štapić bira čarobnjaka": P

Na tim određenim lokacijama, ako osoba izvede određeni pokret štapićem, sistem za snimanje pokreta prepoznaje pokret i svi pokreti odgovaraju određenoj čaroliji koja uzrokuje određene aktivnosti u okolini poput uključivanja fontane itd.

Dakle, u ovom Instructable -u ću vam pokazati kako možete stvoriti jeftin i efikasan sistem za snimanje pokreta kod kuće za izvođenje "prave magije" otvaranjem kutije pokretom štapića: D koristeći samo običnu kameru za noćno gledanje, nešto elektronike, i neki python kôd koji koristi biblioteku OpenCV Computer Vision i mašinsko učenje !!!

Korak 1: Osnovna ideja i potrebni dijelovi

Osnovna ideja i potrebni dijelovi
Osnovna ideja i potrebni dijelovi
Osnovna ideja i potrebni dijelovi
Osnovna ideja i potrebni dijelovi
Osnovna ideja i potrebni dijelovi
Osnovna ideja i potrebni dijelovi
Osnovna ideja i potrebni dijelovi
Osnovna ideja i potrebni dijelovi

Štapići koji su kupljeni od čarobnjačkog svijeta Harryja Pottera u Universal Studiosu imaju retroreflektujuću perlu na vrhu. Ove retroreflektirajuće kuglice reflektiraju veliku količinu infracrvenog svjetla koje odaje kamera u sistemu za snimanje pokreta. Dakle, ono što mi ljudi percipiramo kao ne tako izrazit vrh štapića koji se kreće u zraku, sistem za snimanje pokreta opaža kao svijetla mrlja koja se može lako izolirati u video streamu i pratiti kako bi prepoznala uzorak koji je osoba nacrtala i izvršila potrebnu radnju. Sva ova obrada odvija se u stvarnom vremenu i koristi Computer Vision i Machine Learning.

Jednostavna kamera za noćno osmatranje može se koristiti kao naša kamera za snimanje pokreta, jer također izbacuje infracrveno svjetlo koje nije vidljivo ljudima, ali se može jasno vidjeti kamerom koja nema infracrveni filter. Dakle, video stream sa kamere se dovodi u malinu pi koja ima python program koji pokreće OpenCV koji se koristi za otkrivanje, izolaciju i praćenje vrha štapića. Zatim koristimo SVM (Simple Vector Machine) algoritam strojnog učenja za prepoznavanje nacrtanih uzoraka i u skladu s tim kontroliramo GPIO -ove maline pi za obavljanje nekih aktivnosti.

Potrebni materijali:

1) Raspberry Pi 3 model B i potrebni pribor poput tastature i miša

2) Modul kamere Raspberry Pi NoIR (bez infracrvene veze)

3) Štapić Harry Potter sa retroreflektorom na vrhu: Ne brinite ako ga nemate. Može se koristiti sve sa retroreflektorom. Dakle, možete upotrijebiti bilo koji štapić nalik štapiću i na vrh nanijeti retroreflektorsku traku, boju ili perle i to bi trebalo djelovati kako je prikazano u videu Williama Osmana: Pogledajte video

4) 10 infracrvenih LED dioda

5) 3D štampač i PLA filament po vašem izboru

6) 12V - 1A zidni adapter i DC utičnica

7) Servo motor

8) Stara kutija i žbica sa točkova ciklusa

9) Pištolj za vruće ljepilo

10) Ispisi nekih logotipa i slika povezanih s Harryjem Potterom na sjajnom listu papira

11) Zeleni i žuti baršunasti listovi.

NAPOMENA: Također sam pokušao koristiti staru redovnu web kameru za noćni vid uklanjanjem njenog infracrvenog filtra, ali na kraju sam oštetio/pomjerio objektiv što je uvelike utjecalo na kvalitetu videa i nisam ga mogao koristiti. Ali ako želite pokušati, možete proći kroz ovaj odličan vodič ovdje Kliknite ovdje

Korak 2: Instalirajte OpenCV modul

Sada je vrijeme za prvi i vjerovatno najduži korak u cijelom ovom projektu: instaliranje i izgradnja OpenCV modula u vašem Raspberry Pi.

Instalacija ovisnosti o OpenCV modulu ne oduzima puno vremena, ali proces izgradnje može potrajati do 2 do 3 sata !! Dakle, zakopčaj se !!: P

Na mreži postoji mnogo vodiča koje možete slijediti za instaliranje OpenCV 4.1.0 modula. Evo veze one koju sam slijedio: Kliknite ovdje

NAPOMENA: Toplo preporučujem instalaciju OpenCV modula u virtualnom okruženju kako je prikazano u vodiču jer će to spriječiti različite vrste sukoba koji se mogu dogoditi zbog instaliranja ovisnosti različitih modula ili tijekom rada s različitim verzijama pythona.

Korak 3: Odštampajte nosač kamere

Štampanje nosača kamere
Štampanje nosača kamere
Štampanje nosača kamere
Štampanje nosača kamere
Štampanje nosača kamere
Štampanje nosača kamere

NoIR pikamera nema infracrveni filter, pa se može koristiti kao kamera za noćno osmatranje, ali još uvijek nema izvor infracrvene svjetlosti. Sve kamere za noćno osmatranje imaju vlastiti izvor infracrvene svjetlosti koji u mraku izbacuje IC zrake koji su nevidljivi golim okom, ali zrake se mogu vidjeti kamerom bez infracrvenog filtera nakon odbijanja od bilo kojeg objekta.

Dakle, u osnovi nam je potreban infracrveni izvor svjetlosti i nešto na što ćemo montirati kameru. Za to sam dizajnirao jednostavan 3D model objekta na koji bismo mogli postaviti kameru koju ćemo okružiti s 10 IC dioda u krug. Model je kreiran pomoću programa SketchUp i štampan sa Black PLA za oko 40 minuta.

Korak 4: Dovršavanje postavljanja kamere

Završavanje postavljanja kamere
Završavanje postavljanja kamere
Završavanje postavljanja kamere
Završavanje postavljanja kamere
Završavanje postavljanja kamere
Završavanje postavljanja kamere

Nakon što sam odštampao model, prvo sam ga izbrusio brusnim papirom granulacije 80, a zatim počeo postavljati IC diode u njihove rupe prema gore navedenom dijagramu.

Osigurao sam LED diode vrućim ljepilom na njihovom mjestu, a zatim spojio pozitivne i negativne vodiče dvije uzastopne LED diode, a zatim ih lemio kako bih stvorio serijsko povezivanje LED dioda.

Pozitivni vodič jedne elektrode i negativni provodnici pored nje na dnu ostavljeni su lemljeni kako bi se pozitivni i negativni kraj spojili sa 12-voltnim zidnim adapterom.

Korak 5: Model obučenog mašinskog učenja

U svrhu prepoznavanja slova koje je osoba nacrtala, obučio sam model mašinskog učenja zasnovan na algoritmu Support Vector Machine (SVM) koristeći skup podataka ručno pisanih engleskih abeceda koji sam ovdje pronašao. SVM su vrlo efikasni algoritmi mašinskog učenja koji mogu dati visoku tačnost, u ovom slučaju oko 99,2% !! Pročitajte više o SVM -ovima

Skup podataka je u obliku.csv datoteke koja sadrži 785 stupaca i više od 300 000 redova gdje svaki red predstavlja sliku veličine 28 x 28, a svaki stupac u tom retku sadrži vrijednost tog piksela za tu sliku s dodatnom kolonom u početak koji sadrži oznaku, broj od 0 do 25, od kojih svaki odgovara engleskom slovu. Putem jednostavnog Python koda, isekao sam podatke da dobijem sve slike za samo 2 slova (A i C) koja sam želeo i obučio model za njih.

Priložio sam obučeni model (alphabet_classifier.pkl), a također i kôd za obuku slobodno ga prođite ili unesite bilo kakve izmjene za obuku modela s različitim slovima ili isprobajte različite algoritme. Nakon pokretanja programa, automatski sprema obučeni model u isti direktorij u koji je spremljen vaš kôd.

Korak 6: Kod koji čini da se sve dogodi

Kodeks koji čini da se sve dogodi !!
Kodeks koji čini da se sve dogodi !!

Nakon stvaranja obučenog modela, posljednji korak je pisanje python programa za naš Raspberry Pi koji nam omogućava sljedeće:

  • Pristupite video zapisu sa kamere u stvarnom vremenu
  • Otkrijte i pratite bijele mrlje (u ovom slučaju vrh štapića koji svijetli u noćnom vidu) u videu
  • Počnite pratiti putanju pokretne mrlje u videozapisu nakon nekog događaja okidača (objašnjeno u nastavku)
  • Zaustavi praćenje nakon drugog okidača (objašnjeno u nastavku)
  • Vrati zadnji okvir sa uzorkom koji je nacrtao korisnik
  • Izvršite prethodnu obradu na okviru, poput postavljanja pragova, uklanjanja šuma, promjene veličine itd.
  • Za predviđanje upotrijebite obrađeni posljednji okvir.
  • Učinite neku vrstu magije kontroliranjem GPIO -a Raspberry Pi -a prema predviđanju

Za ovaj projekt stvorio sam kutiju s temom Harry Potter koju mogu otvoriti i zatvoriti pomoću servo motora koji kontrolira GPIO od Raspberry Pi. Budući da slovo 'A' znači 'Alohamora' (jedna od najpoznatijih čarolija iz filmova o Harryju Potteru koja čarobnjaku omogućava da otvori bilo koju bravu !!), ako osoba izvuče slovo A štapićem, pi naredi servo da otvori kutiju. Ako osoba nacrta slovo 'C' koje označava zatvaranje (jer mi nije palo na pamet nijedna prikladna čarolija koja se koristi za zatvaranje ili zaključavanje: P), pi naređuje servo uređaju da zatvori okvir.

Sav posao vezan za obradu slike/video zapisa, poput otkrivanja blobova, praćenja putanje mrlje, predprocesiranja posljednjeg kadra itd., Obavlja se putem OpenCV modula.

Za gore spomenute događaje okidača, na videozapisu u stvarnom vremenu stvaraju se dva kruga, zeleni i crveni krug. Kada mrlja uđe u područje unutar zelenog kruga, program počinje trasirati putanju koju je prešla mrlja nakon tog trenutka dopuštajući osobi da započne stvaranje slova. Kada mrlja dosegne crveni krug, video zapis se zaustavlja i posljednji kadar se prosljeđuje funkciji koja vrši prethodnu obradu okvira kako bi bila spremna za predviđanje.

Priložio sam datoteke koda u ovom koraku. Slobodno prođite kroz to i unesite sve promjene kako želite.

NAPOMENA: Morao sam stvoriti dvije zasebne python datoteke koje rade s različitim verzijama pythona, jednu koja uvozi OpenCV modul (Python 2.7) i drugu koja uvozi sklearn modul (Python 3.5) za predviđanje nakon učitavanja obučenog modela jer je moj OpenCV instaliran za verziju Pythona 2.7 dok je sklearn instaliran za python 3.5. Dakle, koristio sam modul potprocesa da pokrenem datoteku HarryPotterWandsklearn.py (za predviđanje) iz HarryPotterWandcv.py (za sav rad na opencv -u i video snimanje u stvarnom vremenu) i dobijem izlaz. Na ovaj način moram pokrenuti samo datoteku HarryPotterWandcv.py.

Korak 7: Mehanizam za otvaranje kutije

Mehanizam otvaranja kutije
Mehanizam otvaranja kutije
Mehanizam otvaranja kutije
Mehanizam otvaranja kutije
Mehanizam otvaranja kutije
Mehanizam otvaranja kutije

Oko mene je ležala stara kutija u crvenoj boji koju sam koristio za ovaj projekat.

Za mehanizam otvaranja kutije:

  1. Vruće sam zalijepio servo kraj stražnjeg kraja kutije na komad kartona blizu ruba kutije.
  2. Zatim sam uzeo žbicu s kotača ciklusa i vruće je zalijepio za krak servo pogona.
  3. Drugi kraj žbica pričvršćen je na poklopac kutije komadom žice.
  4. Pozitivna strana servoa priključena je na +5V Pin 2 na Raspberry Pi.
  5. Negativ servo uređaja spojen je na GND Pin 39.
  6. Signal servoa spojen je na pin 12

Korak 8: Napravite kutiju o Harryju Potteru

Izrada kutije s temom Harry Potter
Izrada kutije s temom Harry Potter
Izrada kutije s temom Harry Potter
Izrada kutije s temom Harry Potter
Izrada kutije s temom Harry Potter
Izrada kutije s temom Harry Potter

Za izradu kutije s temom Harry Potter, ispisao sam neke slike u boji različitih stvari, poput logotipa Harryja Pottera, grb Hogwartsa, grb svake od četiri kuće itd. Na sjajnom listu veličine A4 i zalijepio ih na kutiju u raznim mjesta.

Također sam upotrijebio baršunasti list žute boje za rezanje traka i zalijepio ih na poklopac kako bih kutiji dao istu boju kao i u kući Gryffindor. Unutrašnjost poklopca i karton za servo obložio sam zelenim baršunastim listom. Na unutrašnjoj strani poklopca zalijepio sam još simbola i amblem koji prikazuje životinje koje predstavljaju svaku kuću škole Hogwarts.

Zatim sam konačno stavio sve svoje stvari vezane uz Harry Pottera u kutiju koja je uključivala prigušivač Gryffindor, dnevnik s uniformom Hogwartsa i starije štapiće koji su korišteni u ovom projektu: D

Preporučuje se: