INHOUDSOPGAWE:
- Stap 1: Video
- Stap 2: Hardeware
- Stap 3: Stuk kode
- Stap 4: Beelde kry
- Stap 5: Gereedskap en taal gebruik
- Stap 6: Voorbereiding van 'n datastel vir opleiding
- Stap 7: Neurale netwerk
- Stap 8: Opleiding van neurale netwerk
- Stap 9: Toets neurale netwerk
- Stap 10: Resultaat en volgende deel …
- Stap 11: Voorwerpopsporing
- Stap 12: Video
- Stap 13: Etikettering
- Stap 14: Etikettering van GUI
- Stap 15: biblioteke benodig
- Stap 16: Oorblywende selle
Video: Is dit 'n hand? (Raspberry Pi -kamera + neurale netwerk) Deel 1/2: 16 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
'N Paar dae gelede het ek my regterhand by die gimnasium beseer. Elke keer as ek my rekenaarmuis gebruik het, veroorsaak dit baie pyn as gevolg van die steil polshoek.
Dit is toe dat dit my tref "sou dit nie wonderlik wees as ons enige oppervlak in 'n trackpad kon omskep nie" en ek weet nie hoekom nie, maar om een of ander rede het ek aan haar gedink, die film HER, ek sal julle laat dink uit. Dit was 'n opwindende gedagte, maar ek het nie geweet of ek dit kon doen nie, ek het besluit om dit te probeer.
Hierdie artikel beskryf wat daaruit gekom het.
Voordat ons begin, het ek 'n vrywaring:
'Aan die einde van hierdie artikel kon ek geen oppervlak in 'n trackpad omskep nie, maar ek het nie veel geleer nie en het groot gereedskap by my arsenaal gevoeg. Ek hoop dit gebeur met jou ook '
Laat ons begin.
Stap 1: Video
Hier is 'n klein video van 5 minute wat alle stappe dek. Kyk.
Stap 2: Hardeware
Ek stel 'n framboos pi saam met 'n framboos pi kamera op 'n hoogte van ongeveer 45 cm op. Dit gee ons 'n moniteringsgebied van ongeveer 25x25 cm onder die kamera.
Raspberry pi en framboos pi kamera is maklik beskikbaar, google dit net en u behoort 'n plaaslike winkel te vind.
Kyk na hierdie skakel of een van my Raspberry pi -snitlys om u koplose pi aan die gang te kry.
Na hierdie opstelling benodig ons 'n stuk kode wat besluit of daar 'n hand in die omgewing is wat die kamera monitor, en indien wel, waar is dit?
Stap 3: Stuk kode
'N Stukkie kode waarmee ons kan besluit of daar 'n belanghebbende is, gebruik iets wat neurale netwerk genoem word. Hulle val onder die kategorie van programmering, waar ons nie reëls definieer om 'n besluit te neem nie, maar ons wys die neurale netwerk genoeg data om reëls self te bepaal.
In ons geval, in plaas van die kodering van hoe die hand lyk, wys ons neurale netwerkbeelde wat geneem is van framboos pi wat hand bevat en wat nie hand bevat nie. Hierdie fase word opleiding van neurale netwerk genoem en beelde wat gebruik word, word opleidingsdatastel genoem.
Stap 4: Beelde kry
Ek het by my framboospie aangemeld en 'n klomp beelde geneem met die volgende opdrag.
sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o raam%04d.jpg
Ek het 80 beelde met die hand geneem en 80 beelde wat nie hand bevat nie. 160 beelde is nie genoeg om 'n neurale netwerk behoorlik op te lei nie, maar dit behoort genoeg te wees om die konsep te bewys.
Behalwe 160 beelde, het ek nog 20 beelde geneem om ons netwerk te toets sodra dit opgelei is.
Sodra die datastel gereed was, het ek kode vir neurale netwerk begin skryf.
Stap 5: Gereedskap en taal gebruik
Ek het my neurale netwerk in die python deep learning -biblioteek met die naam Keras geskryf, en die kode word op die jupyter -notaboek van anaconda -navigator geskryf.
Stap 6: Voorbereiding van 'n datastel vir opleiding
Eerstens (prent 1) het ek al die biblioteke ingesluit wat nodig is vir hierdie projek, wat PIL, matplotlib, numpy, os en Keras insluit. In die tweede sel van die python -notaboek (prent #2) definieer ek paaie na die datastel en druk ek die aantal monsters uit. Nou moet ons alle beelde in 'n numpy -skikking laai, daarom het ek in die derde sel (prent 2) 'n numpy -reeks van 82 (aantal handmonsters) +75 (aantal nie -handmonsters) geskep, dit wil sê 157x100x100x3. 157 is die totale aantal beelde wat ek het, 100x100 is die grootte van ons beeld en 3 is vir rooi, groen en blou kleurlae in die prent.
In die vierde en vyfde sel laai ons beelde met die hand gevolg deur beelde wat nie die hand in die numpy -skikking bevat nie. In die sesde sel deel ons elke waarde met 255, en beperk dus die waarde van 0 tot 1. (prent #3)
Ek is jammer as die aangehegte beelde nie goed genoeg is nie. Hier is 'n skakel na die GITHUB -bewaarplek, sodat u na die kode kan kyk. Moenie vergeet om gidspaadname met u pad te vervang nie:).
Beweeg saam.
Vervolgens moet ons elke prentjie benoem, sodat ons 'n eendimensionele numpy -skikking van 157 in lengte kan skep. Die eerste 82 inskrywings word op 1 gestel, en die oorblywende 75 inskrywings is ingestel op 0 wat die neurale netwerk oordra dat die eerste 82 beelde uit een klas is en die res van 'n ander. (Beeld #4)
Laat ons nou 'n neurale netwerk skep.
Stap 7: Neurale netwerk
In die negende sel definieer ons ons neurale netwerk. Dit bevat drie herhalings van die konvolusielaag gevolg deur maxpool -lae met onderskeidelik 8, 12 en 16 konvolusiefilters. Daarna het ons twee digte neurale nette. Heg twee beelde vir hierdie stap aan. Die eerste is 'n kort kode wat 'n neurale netwerk skep, en die tweede 'n voorstelling van 'n neurale netwerk met 'n afmeting en 'n geannoteerde bewerking.
Stap 8: Opleiding van neurale netwerk
In die tiende sel stel ons die neurale netwerkoptimaliseerder op na 'adam' en die verliesfunksie in 'binary_crossentropy'. Dit speel 'n belangrike rol in die opdatering van netwerkgewigte. As ons uiteindelik die elfde sel gebruik, begin die neurale netwerk begin oefen. Terwyl die netwerk oefen, kyk na die verliesfunksie en maak seker dat dit afneem.
Stap 9: Toets neurale netwerk
Sodra die neurale netwerk opgelei is, moet ons die toetsdatastel voorberei. Ons herhaal die prosedure wat gedoen is om die opleidingsstel in die derde, vierde, vyfde en sesde sel voor te berei vir toetsdata om 'n toetsstel te maak. Ons berei ook die etiket vir die toetsstel voor, maar hierdie keer gebruik ons 'n model vir hierdie datastel om voorspellings te kry en nie om op te lei nie.
Stap 10: Resultaat en volgende deel …
Ek het 'n toetsnauwkeurigheid van 88%, maar neem dit met 'n knippie sout, aangesien die datastel wat gebruik is om hierdie model op te lei, baie klein is en onvoldoende is om hierdie model behoorlik op te lei.
Ek hoop in elk geval dat u hierdie artikel geniet het. My bedoeling agter hierdie oefening is nog nie voltooi nie, en let op die tweede deel. Ek sal dit so gou as moontlik oplaai.
In die volgende deel sal ons 'n ander neurale netwerk oplei wat ons die ligging van die hand in 'n met die hand opgespoorde beeld sal vertel.
Alle navrae is welkom.
As iemand belangstel om my klein datastel te gebruik, laat weet my in die kommentaar. Ek sal dit beskikbaar stel.
Dankie vir die lees. Ek sien u binnekort met die tweede deel tot dan, waarom bou u nie 'n neurale netwerk op en lei dit op nie?
Edit:- Die volgende stappe is vir die tweede deel.
Stap 11: Voorwerpopsporing
In vorige stappe het ons 'n NN geskep wat ons vertel of die toetsbeeld hand bevat of nie. Wel, wat volgende? As NN die beeld as hand bevat, wil ons graag die ligging van die hand weet. Dit word objekopsporing in rekenaarvisie -literatuur genoem. Laat ons dus NN oplei wat presies dieselfde doen.
Stap 12: Video
'N Video van 3 minute wat alle oorblywende stappe verduidelik. Kyk.
Stap 13: Etikettering
As u wil hê dat 'n neurale netwerk die ligging van die hand moet uitvoer, moet ons dit op so 'n manier oplei, dws anders as die vorige neurale netwerk, waar elke beeld met die hand of sonder die hand gemerk is. Hierdie keer het alle beelde met die hand vier etikette wat ooreenstem met diagonale koördinate van die omhulsel rondom die hand in die prent.
Die aangehegte prent van die csv -lêer bevat 'n etiket vir elke prent. Let daarop dat koördinate genormaliseer word met die beeldafmeting, dit wil sê as die boonste X -koördinaat 'n 320ste pixel in die prentjie met 'n breedte van 640 pixels het, sal ons dit as 0,5 benoem.
Stap 14: Etikettering van GUI
U wonder miskien hoe ek dit reggekry het om al die 82 beelde te benoem, ek het 'n GUI in python geskryf wat my gehelp het met hierdie taak. Sodra die prent in die GUI gelaai is. Ek het met die linkermuisknop by die boonste koördinaat klik en met die rechtermuisknop op die onderste koördinaat van die moontlike omhulsel om die hand. Hierdie koördinate word dan na 'n lêer geskryf, waarna ek op die volgende knoppie klik om die volgende prent te laai. Ek het hierdie prosedure herhaal vir alle 82 trein- en 4 toetsbeelde. Sodra die etikette gereed was, was dit opleidingstyd.
Stap 15: biblioteke benodig
Eerstens moet ons alle nodige biblioteke laai. Wat insluit
- PIL vir beeldmanipulasie,
- matplotlib vir plot,
- numpy vir matriksbediening,
- os vir bedryfstelselafhanklike funksies en
- keras vir neurale netwerk.
Stap 16: Oorblywende selle
In die 2de, 3de, 4de en 5de sel laai ons beelde in 'n numpy -skikking en skep ons 'n vier -dimensionele skikking uit csv -lêer om as etikette op te tree. In sel nommer 6 skep ons ons neurale netwerk. Die argitektuur is identies aan die neurale netwerk wat vir klassifikasie gebruik word, behalwe die afmeting van die uitvoerlaag wat 4 is en nie 1. 'n Ander verskil kom van die verliesfunksie wat gebruik word, die gemiddelde kwadraatfout. In sel nommer 8 begin ons met die opleiding van ons neurale netwerk, sodra ek opgelei is, het ek hierdie model op die toetsstel gehardloop om voorspellings te kry vir die omhulsel van die koördinate van die omhulsel, dit lyk redelik akkuraat.
Dankie vir die lees.
Aanbeveel:
Neurale netwerk -aangedrewe planetarium met behulp van Python, elektron en Keras: 8 stappe
Neurale netwerk -aangedrewe planetarium met behulp van Python, elektron en Keras: In hierdie instruksies sal ek u wys hoe ek 'n outomatiese 3D -planetariumopwekker met behulp van Python en elektron geskryf het. Die video hierbo toon een van die ewekansige planetariums wat die program gegenereer het. ** Let op: Hierdie program is geensins perfek nie en op een of ander plek
Hoe om dit te doen-E-INK E-PAPIER WEERSTUKMODULE-Deel 3 - WiFi: 7 stappe (met foto's)
Hoe om dit te doen-E-INK E-PAPIER WEERSTUKMODULE-Deel 3 | WiFi: In hierdie handleiding vir Deel 3 van Hoe-E-INK E-PAPER DISPLAY MODULE, gaan ek met u deel hoe u u E-Ink Display Module kan koppel aan 'n WiFi-module waarmee u die tekste via WiFi kan opdateer. Het u nie 'n E-Ink Display Module nie? U kan een kry
Skryf dit ! Maak dit ! Deel dit!: 4 stappe
Skryf dit ! Maak dit ! Deel dit!: My studente het Legos gebruik om kreatiwiteit by te dra tot hul skryfwerk, skryfwerk en om hul werk digitaal met hul gesin en met hul maats in die klas te wys
Arduino neurale netwerk robot: 21 stappe (met foto's)
Arduino Neural Network Robot: Hierdie instruksie is gebaseer op 'n 3 -delige reeks wat ek gemaak het vir die Make YouTube Channel, wat u presies wys hoe u u eie Arduino neurale netwerkrobot kan prototipe, ontwerp, monteer en programmeer. Nadat u die volledige reeks gekyk het, behoort u 'n weddenskap te hê
Hoe om musiek te kry van byna enige (Haha) webwerf (solank u dit kan hoor, kan u dit kry Ok, as dit in Flash is ingebed, kan u dit nie redigeer nie) !!!!! Bygevoeg inligting: 4 stappe
Hoe om musiek te kry van byna enige (Haha) webwerf (solank u dit kan hoor, kan u dit kry … Ok, as dit in Flash is ingebed, kan u dit nie redigeer nie) !!!!! Bygevoeg inligting: as u ooit na 'n webwerf gaan en 'n liedjie speel waarvan u hou en dit wil hê, is dit die instruksie dat u nie my skuld het as u iets deurmekaar maak nie (die enigste manier waarop dit kan gebeur, is as u sonder rede begin om dinge uit te vee) ) Ek kon musiek kry vir