Sadržaj:
- Korak 1: Video zapis
- Korak 2: Hardver
- Korak 3: Dio koda
- Korak 4: Dobijanje slika
- Korak 5: Korišteni alati i jezik
- Korak 6: Priprema skupa podataka za obuku
- Korak 7: Neuronska mreža
- Korak 8: Obuka neuronske mreže
- Korak 9: Testiranje neuronske mreže
- Korak 10: Rezultat i sljedeći dio…
- Korak 11: Otkrivanje objekata
- Korak 12: Video
- Korak 13: Označavanje
- Korak 14: Označavanje GUI -ja
- Korak 15: Potrebne biblioteke
- Korak 16: Preostale ćelije
Video: Je li to ruka? (Raspberry Pi kamera + neuronska mreža) Dio 1/2: 16 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Prije nekoliko dana ozlijedio sam zglob desne ruke u teretani. Nakon toga, svaki put kad sam koristio računarski miš, to je uzrokovalo mnogo boli zbog strmog kuta zgloba.
Tada mi je palo na pamet "zar ne bi bilo sjajno da bilo koju površinu možemo pretvoriti u trackpad" i ne znam zašto, ali iz nekog razloga pomislio sam na nju, film ONA, dopustit ću vam da shvatite van. Bila je to uzbudljiva misao, ali nisam znala mogu li to učiniti, odlučila sam pokušati.
Ovaj članak prikazuje ono što je iz toga proizašlo.
Prije nego počnemo, odričem se odgovornosti-
'Na kraju ovog članka nisam mogao pretvoriti nijednu površinu u trackpad, ali nisam puno naučio i dodao veliki alat u svoj arsenal. Nadam se da će se to dogoditi i vama '
Hajde da počnemo.
Korak 1: Video zapis
Ovdje je mali video zapis od 5 minuta koji pokriva sve korake. Pogledaj.
Korak 2: Hardver
Postavio sam malinu pi zajedno sa kamerom maline pi na visini od oko 45 cm. To nam daje površinu za nadzor od oko 25x25 cm ispod kamere.
Raspberry pi i malina pi kamera su lako dostupni, samo ih proguglajte i trebali biste pronaći lokalnu trgovinu.
Pogledajte ovu vezu ili neku od mojih Raspberry pi playlista da pokrenete svoj pi bez glave.
Nakon ovog postavljanja potreban nam je dio koda koji odlučuje ima li ruke u području koje kamera nadzire i ako ima gdje je.
Korak 3: Dio koda
Dio koda koji nam omogućuje da odlučimo postoji li ruka u području interesa koristi nešto što se zove neuronska mreža. Oni spadaju u kategoriju programiranja gdje ne definiramo pravila za donošenje odluka, ali mi prikazujemo neuronskoj mreži dovoljno podataka da ona sama utvrđuje pravila.
U našem slučaju, umjesto kodiranja kako izgleda ruka, prikazujemo slike neuronske mreže snimljene sa maline pi koje sadrže ruku, a koje ne sadrže. Ova faza naziva se trening neuronske mreže, a korištene slike nazivaju se skupovi podataka za obuku.
Korak 4: Dobijanje slika
Daljinski sam se prijavio na svoj maline pi i snimio hrpu slika pomoću sljedeće naredbe.
sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o okvir%04d.jpg
Snimio sam 80 slika rukom i 80 slika koje ne sadrže ruku. 160 slika nije dovoljno za pravilno treniranje neuronske mreže, ali bi trebalo biti dovoljno za dokaz koncepta.
Osim 160 slika, snimio sam još 20 slika kako bih testirao našu mrežu nakon što se obuči.
Kad je skup podataka bio spreman, počeo sam pisati kod za neuronsku mrežu.
Korak 5: Korišteni alati i jezik
Napisao sam svoju neuronsku mrežu u python biblioteci za duboko učenje koja se zove Keras, a kod je napisan na jupyter prijenosnom računaru iz anaconda navigatora.
Korak 6: Priprema skupa podataka za obuku
Prvo (slika #1) uključio sam sve biblioteke potrebne za ovaj projekat, uključujući PIL, matplotlib, numpy, os i Keras. U drugoj ćeliji python bilježnice (Slika #2) definiram putanje do skupa podataka i ispisujem uzorak. Sada moramo učitati sve slike u niz numpy, stoga sam u trećoj ćeliji (slika #2) stvorio numerički niz od 82 (broj ručnog uzorka) +75 (broj uzorka koji nije ručni), tj. 157x100x100x3. 157 je ukupan broj slika koje imam, 100x100 je naša dimenzija slike sa promijenjenom veličinom, a 3 za slojeve crvene, zelene i plave boje na slici.
U četvrtu i petu ćeliju učitavamo slike koje sadrže ruku, a zatim slike koje ne sadrže ruku u nizu numpy. U šestoj ćeliji svaku vrijednost dijelimo sa 255, stoga ograničava raspon vrijednosti od 0 do 1. (Slika #3)
Žao mi je ako priložene slike nisu dovoljno dobre. Evo veze do GITHUB spremišta za pregled koda. Ne zaboravite zamijeniti nazive putanje direktorija svojom stazom:).
Krećući se zajedno.
Zatim moramo označiti svaku sliku, pa stvaramo jednodimenzionalni numerički niz dužine 157. Prvih 82 unosa postavljeno je na 1, a preostalih 75 unosa je postavljeno na 0 za prijenos neuronske mreže, tako da su prve 82 slike iz jedne klase, a preostale iz druge. (Slika #4)
Sada napravimo neuronsku mrežu.
Korak 7: Neuronska mreža
U devetoj ćeliji definiramo našu neuronsku mrežu. Sadrži tri ponavljanja sloja konvolucije nakon čega slijede maxpool slojevi s 8, 12 i 16 filtera konvolucije. Nakon toga imamo dvije guste neuronske mreže. Prilažete dvije slike za ovaj korak. Prvi je snap koda koji stvara neuronsku mrežu, a drugi slikovni prikaz neuronske mreže sa izlaznom dimenzijom i označenim operacijama.
Korak 8: Obuka neuronske mreže
U desetoj ćeliji optimizator neuronske mreže konfiguriramo na 'adam', a funkciju gubitka na 'binary_crossentropy'. Oni igraju važnu ulogu u ažuriranju težine mreže. Konačno, kad pokrenemo jedanaestu ćeliju, neuronska mreža počinje trenirati. Dok mreža trenira, pogledajte funkciju gubitka i uvjerite se da se smanjuje.
Korak 9: Testiranje neuronske mreže
Nakon što se neuronska mreža obuči, moramo pripremiti skup podataka za testiranje. Ponavljamo postupak za pripremu seta za obuku u 3., 4., 5. i 6. ćeliji o testnim podacima za kreiranje testnog skupa. Pripremamo i naljepnicu za testni skup, ali ovaj put pokrećemo model na tim skupovima podataka kako bismo dobili predviđanja, a ne za obuku.
Korak 10: Rezultat i sljedeći dio…
Dobio sam tačnost testiranja od 88%, ali uzmite ovo sa prstohvatom soli jer su skupovi podataka koji se koriste za obuku i testiranje ovog modela vrlo vrlo vrlo mali i neadekvatni za odgovarajuću obuku ovog modela.
U svakom slučaju nadam se da vam se dopao ovaj članak. Moja namjera iza ove vježbe još nije dovršena i pazite na drugi dio. Postavit ću ga čim budem mogao.
U sljedećem dijelu trenirat ćemo drugu neuronsku mrežu koja će nam reći lokaciju ruke na slici otkrivenoj rukom.
Svi upiti su dobrodošli.
Ako je neko zainteresiran za korištenje mog malog skupa podataka, javite mi u komentarima. Učinit ću to dostupnim.
Hvala na čitanju. Vidimo se uskoro s drugim dijelom do tada. Zašto ne stvorite i obučite neuronsku mrežu.
Edit:- Sljedeći koraci su za drugi dio.
Korak 11: Otkrivanje objekata
U prethodnim koracima smo kreirali NN koji nam govori sadrži li test slika kazaljku ili ne. Pa šta dalje? Ako NN klasificira sliku kao ruku koja sadrži, željeli bismo znati lokaciju ruke. To se u literaturi o računarskom vidu naziva detekcija objekata. Pa hajde da istreniramo NN koji radi potpuno isto.
Korak 12: Video
3 -minutni video koji objašnjava sve preostale korake. Pogledaj.
Korak 13: Označavanje
Ako želite da neuronska mreža emitira lokaciju ruke, moramo je obučiti na takav način, tj. Za razliku od prethodne neuronske mreže gdje je svaka slika označena ručno ili bez ruke. Ovaj put će sve slike sa rukom imati četiri oznake koje odgovaraju dijagonalnim koordinatama graničnog okvira oko ruke na toj slici.
Priložena slika csv datoteke sadrži oznaku za svaku sliku. Imajte na umu da su koordinate normalizirane s dimenzijom slike, tj. Ako je gornja X koordinata na 320. pikselu na slici širine 640 piksela, označit ćemo je kao 0,5.
Korak 14: Označavanje GUI -ja
Možda se pitate kako sam uspio označiti svih 82 slike, pa napisao sam GUI u pythonu koji mi je pomogao u ovom zadatku. Nakon što se slika učita u GUI. Pritisnuo sam lijevi klik na gornju koordinatu i desni klik na donju koordinatu vjerovatno ograničavajućeg okvira oko ruke. Ove koordinate se zatim zapisuju u datoteku nakon čega kliknem na dugme next da učitam sljedeću sliku. Ponovio sam ovaj postupak za svih 82 slike voza i 4 probne slike. Kad su etikete bile spremne, došlo je vrijeme za obuku.
Korak 15: Potrebne biblioteke
Prvo moramo učitati sve potrebne biblioteke. Što uključuje
- PIL za manipulaciju slikom,
- matplotlib za crtanje,
- numpy za rad matrice,
- os za funkcionalnost zavisnu od operativnog sistema i
- keras za neuronsku mrežu.
Korak 16: Preostale ćelije
U 2., 3., 4. i 5. ćeliju učitavamo slike u numpy niz i stvaramo četverodimenzionalni niz iz csv datoteke koji će djelovati kao oznake. U ćeliji broj 6 stvaramo svoju neuronsku mrežu. Njegova arhitektura je identična neuronskoj mreži koja se koristi za klasifikaciju osim dimenzije izlaznog sloja koja je 4 a ne 1. Druga razlika dolazi od korištene funkcije gubitka koja je srednja kvadratna greška. U ćeliji broj 8 započinjemo obuku naše neuronske mreže nakon što sam je obučio. Pokrenuo sam ovaj model na skupu testova kako bih dobio predviđanja za graničnu kutiju na preklapajuće koordinate granične kutije, izgledali su prilično precizno.
Hvala na čitanju.
Preporučuje se:
Robotska ruka sa hvataljkom: 9 koraka (sa slikama)
Robotska ruka sa hvataljkom: Berba stabala limuna smatra se teškim radom, zbog velike veličine drveća, kao i zbog vruće klime u regijama u kojima se sadi limunovo drveće. Zato nam je potrebno još nešto da pomognemo poljoprivrednim radnicima da više završe svoj posao
Robotska ruka sa Zio modulima Dio 3: 4 koraka
Robotska ruka sa Zio modulima 3. dio: Ovaj blog je dio Zio Robotics serije. Uvod U naš prethodni blog objavili smo 1. i 2. dio uputstva o tome kako upravljati robotskom rukom pomoću Zio modula. Dio 1 uglavnom je koncentriran na automatsku kontrolu kandže vašeg robotskog kraka
Robotska ruka sa Zio modulima Dio 2: 11 koraka
Robotska ruka sa Zio modulima 2. dio: U današnjem vodiču koristit ćemo sva 4 servo servera i PS2 bežični kontroler za upravljanje robotskom rukom. Ovaj blog je dio Zio Robotics serije. Uvod U naš prethodni blog objavili smo 1. dio vodič za upravljanje robotskim ar
KAKO MONTIRATI IMPRESIVNU DRVENU ROBOTSKU RUKU (DIO 3: ROBOTSKA RUKA) - NA MIKRO: BITN: 8 koraka
KAKO MONTIRATI IMPRESIVNU DRVENU ROBOTSKU RUKU (DIO 3: ROBOTSKA RUKA) - ZASNOVANO NA MIKRO: BITN: Sljedeći postupak instalacije temelji se na završetku načina izbjegavanja prepreka. Postupak instalacije u prethodnom odjeljku isti je kao i postupak instalacije u načinu praćenja linija. Pogledajmo onda konačni oblik A
Treća ruka ++: višenamjenska ruka za pomoć u elektronici i drugim osjetljivim radovima .: 14 koraka (sa slikama)
Treća ruka ++: Višenamjenska ruka za pomoć u elektronici i drugim osjetljivim poslovima. U prošlosti sam koristio treće ruke/ruke za pomoć koje su dostupne u lancima elektronike i bio sam frustriran njihovom upotrebljivošću. Nikada nisam mogao dobiti isječke točno tamo gdje sam ih želio ili je trebalo više vremena nego što je zaista potrebno za postavljanje