
Innholdsfortegnelse:
- Trinn 1: Video
- Trinn 2: Maskinvare
- Trinn 3: Kodebit
- Trinn 4: Få bilder
- Trinn 5: Verktøy og språk som brukes
- Trinn 6: Forberede datasett for opplæring
- Trinn 7: Nevralnettverk
- Trinn 8: Trening av nevrale nettverk
- Trinn 9: Testing av nevrale nettverk
- Trinn 10: Resultat og neste del…
- Trinn 11: Objektdeteksjon
- Trinn 12: Video
- Trinn 13: Merking
- Trinn 14: Merking GUI
- Trinn 15: Nødvendige biblioteker
- Trinn 16: Resterende celler
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02



For noen dager siden skadet jeg høyre håndledd på treningsstudioet. Etterpå hver gang jeg brukte datamusen, forårsaket det mye smerte på grunn av bratt håndledningsvinkel.
Det var da det slo meg "ville det ikke vært flott hvis vi kunne konvertere en hvilken som helst overflate til en styreflate" og jeg vet ikke hvorfor, men av en eller annen grunn tenkte jeg på henne, filmen HER, jeg vil la dere finne ut av det ute. Det var en spennende tanke, men jeg visste ikke om jeg kunne gjøre det, jeg bestemte meg for å prøve det.
Denne artikkelen viser hva som kom ut av det.
Før vi begynner har jeg en ansvarsfraskrivelse
'På slutten av denne artikkelen kunne jeg ikke konvertere noen overflate til en styreflate, men jeg lærte ikke mye og la til store verktøy i arsenalet mitt. Jeg håper det skjer med deg også '
La oss komme i gang.
Trinn 1: Video


Her er en liten 5 min video som dekker alle trinn. Ta en titt.
Trinn 2: Maskinvare

Jeg setter opp en bringebær pi sammen med bringebær pi kamera i en høyde på ca 45 cm. Dette gir oss et overvåkingsområde på omtrent 25x25 cm under kameraet.
Bringebær pi og bringebær pi kamera er lett tilgjengelig, bare google det og du bør kunne finne en lokal butikk.
Ta en titt på denne lenken eller en av mine Raspberry pi -spillelister for å få din hodeløse pi i gang.
Etter dette oppsettet trenger vi et stykke kode som avgjør om det er en hånd i området som kameraet overvåker, og i så fall hvor er det.
Trinn 3: Kodebit


Kodebit som lar oss bestemme om det er en hånd i interesseområdet, bruker noe som kalles Neural Network. De faller inn under kategorien programmering der vi ikke definerer regler for å ta avgjørelser, men vi viser nevrale nettverk nok data til at det regner ut regler alene.
I vårt tilfelle, i stedet for å kode hvordan hånden ser ut, viser vi nevrale nettverksbilder tatt fra bringebær pi som inneholder hånd og som ikke inneholder hånd. Denne fasen kalles opplæring av nevrale nettverk og bilder som brukes kalles treningsdatasett.
Trinn 4: Få bilder

Jeg fjernlogget meg til bringebær pi og tok en haug med bilder ved hjelp av følgende kommando.
sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o ramme%04d.jpg
Jeg tok 80 bilder med hånden og 80 bilder som ikke inneholder hånd. 160 bilder er ikke nok til å trene et neuralt nettverk på riktig måte, men bør være nok for bevis på konseptet.
I tillegg til 160 bilder, tok jeg 20 bilder mer for å teste nettverket vårt når det er trent.
Når datasettet var klart begynte jeg å skrive kode for nevrale nettverk.
Trinn 5: Verktøy og språk som brukes


Jeg skrev mitt nevrale nettverk i python deep learning -biblioteket kalt Keras, og koden er skrevet på jupyter notebook fra anaconda navigator.
Trinn 6: Forberede datasett for opplæring




Først (Bilde 1) Jeg inkluderte alle bibliotekene som trengs for dette prosjektet, som inkluderer PIL, matplotlib, numpy, os og Keras. I den andre cellen i python -notatboken (Bilde #2) definerer jeg stier til datasettet og skriver ut prøvetall. Nå må vi laste alle bildene inn i en numpy -matrise, derfor opprettet jeg i tredje celle (Bilde 2) en numpy -array på 82 (antall håndprøver) +75 (antall ikke -hånd -prøver) dvs. 157x100x100x3. 157 er totalt antall bilder jeg har, 100x100 er størrelsen på bildedimensjonen og 3 er for røde, grønne og blå fargelag i bildet.
I fjerde og femte celle laster vi inn bilder som inneholder hånd etterfulgt av bilder som ikke inneholder hånd i numpy -matrisen. I den sjette cellen deler vi hver verdi med 255 og begrenser dermed verdiområdet fra 0 til 1. (Bilde #3)
Jeg beklager hvis vedlagte bilder ikke er gode nok. Her er lenken til GITHUB -depotet, slik at du kan se på koden. Ikke glem å erstatte katalogbanenavn med banen din:).
Flytter med.
Deretter må vi merke hvert bilde, så vi lager et endimensjonalt numpy -utvalg på 157 i lengden. De første 82 oppføringene er satt til 1 og de resterende 75 oppføringene er satt til 0 som overfører nevrale nettverk at de første 82 bildene er fra en klasse og de resterende er fra en annen. (Bilde #4)
La oss nå lage et nevrale nettverk.
Trinn 7: Nevralnettverk


I niende celle definerer vi vårt nevrale nettverk. Den inneholder tre repetisjoner av konvolusjonslaget etterfulgt av maxpool -lag med henholdsvis 8, 12 og 16 konvolusjonsfiltre. Etter det har vi to tette nevrale nett. Legger ved to bilder for dette trinnet. Først er snap av kode som skaper nevrale nettverk og andre er billedlig representasjon av nevrale nettverk med utdata dimensjon og operasjoner kommentert.
Trinn 8: Trening av nevrale nettverk

I den tiende cellen konfigurerer vi nevrale nettverksoptimerere til 'adam' og tapsfunksjon til 'binary_crossentropy'. De spiller en viktig rolle i hvordan nettverksvekter oppdateres. Til slutt når vi kjører ellevte celle, begynner nevrale nettverk å trene. Mens nettverket trener, se på tapfunksjonen og sørg for at den avtar.
Trinn 9: Testing av nevrale nettverk

Når nevrale nettverk er opplært, må vi utarbeide testdatasett. Vi gjentar prosedyren som er utført for å forberede treningssett i tredje, fjerde, femte og sjette celle på testdata for å lage testsett. Vi forbereder også etikett for testsett, men denne gangen kjører vi modell på dette datasettet for å få spådommer og ikke for å trene.
Trinn 10: Resultat og neste del…

Jeg har testnøyaktighet på 88%, men ta dette med en klype salt ettersom datasettet brukes til å trene og teste denne modellen er veldig veldig veldig liten og utilstrekkelig til å trene denne modellen på riktig måte.
Uansett håper jeg at du likte denne artikkelen. Min intensjon bak denne øvelsen er ennå ikke fullført, og pass på 2. del. Jeg vil laste den opp så snart jeg kan.
I neste del vil vi trene et annet neuralt nettverk som vil fortelle oss håndens plassering i et hånddetektert bilde.
Alle spørsmål er velkomne.
Hvis noen er interessert i å bruke mitt lille datasett, gi meg beskjed i kommentarer. Jeg vil gjøre den tilgjengelig.
Takk for at du leste. Jeg ser deg snart med andre del til da, hvorfor ikke lage og trene et nevrale nettverk.
Edit:- Neste trinn er for andre del.
Trinn 11: Objektdeteksjon

I tidligere trinn opprettet vi et NN som forteller oss om testbildet inneholder hånd eller ikke. Hva så videre? Hvis NN klassifiserer bildet som inneholdende hånd, vil vi gjerne vite håndens plassering. Dette kalles objektgjenkjenning i datavisningslitteratur. Så la oss trene NN som gjør akkurat det samme.
Trinn 12: Video


En 3 min video som forklarer alle gjenværende trinn. Ta en titt.
Trinn 13: Merking



Hvis du vil at et nevralnettverk skal sende ut plassering av hånden, må vi trene det på en slik måte, dvs. i motsetning til tidligere nevrale nettverk der hvert bilde ble merket som enten med hånd og uten hånd. Denne gangen vil alle bilder med hånden ha fire etiketter som tilsvarer diagonale koordinater for avgrensningsboksen rundt hånden i det bildet.
Vedlagt bilde av csv -fil inneholder etikett for hvert bilde. Vær oppmerksom på at koordinatene er normalisert med bildedimensjonen, dvs. hvis øvre X -koordinat er på 320. piksel i bildet med en bredde på 640 piksler, vil vi merke det som 0,5.
Trinn 14: Merking GUI




Du lurer kanskje på hvordan jeg klarte å merke alle 82 bildene. Vel, jeg skrev en GUI i python som hjalp meg med denne oppgaven. Når bildet er lastet inn i GUI. Jeg venstreklikker ved øvre koordinat og høyreklikker på nedre koordinat for sannsynlig grenseboks rundt hånden. Disse koordinatene skrives deretter til en fil etter at jeg klikker på neste knapp for å laste neste bilde. Jeg gjentok denne prosedyren for alle 82 tog- og 4 testbilder. Når etikettene var klare, var det treningstid.
Trinn 15: Nødvendige biblioteker



Først må vi laste alle nødvendige biblioteker. Som inkluderer
- PIL for bildemanipulering,
- matplotlib for plotting,
- numpy for matrisedrift,
- os for operativsystemavhengig funksjonalitet og
- keras for nevrale nettverk.
Trinn 16: Resterende celler




I 2., 3., 4. og 5. celle laster vi inn bilder i numpy array og lager en firdimensjonal array fra csv -fil for å fungere som etiketter. I celle nummer 6 lager vi vårt nevrale nettverk. Arkitekturen er identisk med det nevrale nettverket som brukes for klassifisering, bortsett fra utdatalagdimensjonen som er 4 og ikke 1. En annen forskjell kommer fra tapfunksjonen som brukes, som er gjennomsnittlig kvadratfeil. I celle nummer 8 starter vi opplæringen av vårt nevrale nettverk når jeg trente. Jeg kjørte denne modellen på testsettet for å få spådommer for avgrensningsboks på overliggende koordinater for avgrensningsboks, de så ganske nøyaktige ut.
Takk for at du leste.
Anbefalt:
Skriv det ! Klare det ! Del det!: 4 trinn

Skriv det ! Klare det ! Del det!: Elevene mine har brukt Legos for å legge til kreativitet i skriving, organisering av skriving og for å vise frem arbeidet sitt digitalt med familien og med sine jevnaldrende i klassen
Password Keeper på Aruino Pro Micro eller hvorfor holde det enkelt når det finnes en detaljert måte !: 15 trinn (med bilder)

Password Keeper på Aruino Pro Micro eller hvorfor holde det enkelt når det finnes en detaljert måte !: Det ser ut til at hovedproblemet med mikrokontrollere for fan av elektronikk (spesielt nybegynnere) er å finne ut hvor du skal bruke dem :) I dag elektronikk, spesielt digital , ser mer og mer ut som en svart magi. Bare 80-Lvl visarder er
Arduino Neural Network Robot: 21 trinn (med bilder)

Arduino Neural Network Robot: Denne instruksjonsbasen er basert på en 3 -delt serie jeg laget for Make YouTube Channel som viser deg nøyaktig hvordan du prototype, designe, montere og programmere din egen Arduino neurale nettverksrobot. Etter å ha sett hele serien, bør du ha en innsats
Hvordan få musikk fra Nesten alle (Haha) nettsteder (så lenge du kan høre det, kan du få det Ok fint hvis det er innebygd i Flash du kanskje ikke kan) REDIGERT !!!!! Lagt til infor

Hvordan få musikk fra Nesten alle (Haha) nettsteder (så lenge du kan høre det, kan du få det … Ok fint hvis det er innebygd i Flash du kanskje ikke kan) REDIGERT !!!!! Lagt til informasjon: hvis du noen gang går til et nettsted og den spiller en sang du liker og vil ha den, så er det instruerbart for meg, det er ikke min feil hvis du ødelegger noe (den eneste måten det vil skje er hvis du begynner å slette ting uten grunn ) Jeg har klart å få musikk til
Vanntette høyttalere som flyter - " Det flyter, det ruter og rokker notene! &Quot;: 7 trinn (med bilder)

Vanntette høyttalere som flyter - " It Floats, It Totes and It Rocks the Notes! ). Vi flyter nedover elven, eller fester linjer til kysten slik at flottørene våre holder seg rett ved campingplassen vår. Alle h