Obsah:
- Krok 1: Video
- Krok 2: Hardvér
- Krok 3: Kus kódu
- Krok 4: Získanie obrázkov
- Krok 5: Použité nástroje a jazyk
- Krok 6: Príprava množiny údajov na školenie
- Krok 7: Neurónová sieť
- Krok 8: Školenie neurónovej siete
- Krok 9: Testovanie neurónovej siete
- Krok 10: Výsledok a ďalšia časť…
- Krok 11: Detekcia objektov
- Krok 12: Video
- Krok 13: Označovanie
- Krok 14: Označovanie GUI
- Krok 15: Potrebné knižnice
- Krok 16: Zostávajúce bunky
Video: Je to ruka? (Kamera Raspberry Pi + neurónová sieť) Časť 1/2: 16 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Pred niekoľkými dňami som si v posilňovni poranil zápästie pravej ruky. Potom zakaždým, keď som použil svoju počítačovú myš, spôsobil to veľkú bolesť kvôli strmému uhlu zápästia.
Vtedy mi to došlo „nebolo by skvelé, keby sme mohli previesť akýkoľvek povrch na trackpad“a neviem prečo, ale z nejakého dôvodu som na ňu myslel, film JE, nechám vás, chlapi, aby ste to pochopili. von. Bola to vzrušujúca myšlienka, ale nevedel som, či to dokážem, rozhodol som sa to skúsiť.
Tento článok zachytáva, čo z neho vyšlo.
Predtým, ako začneme, mám vylúčenie zodpovednosti-
„Na konci tohto článku som nedokázal previesť žiadny povrch na trackpad, ale veľa som sa toho nenaučil a pridal som do svojho arzenálu veľké nástroje. Dúfam, že sa to stane aj tebe '
Začnime.
Krok 1: Video
Tu je malé 5 -minútové video pokrývajúce všetky kroky. Pozri sa.
Krok 2: Hardvér
Raspberry pi a kameru Raspberry Pi som nastavil vo výške asi 45 cm. To nám dáva monitorovaciu plochu asi 25 x 25 cm pod kamerou.
Fotoaparát Raspberry Pi a Raspberry Pi je ľahko dostupný, stačí si ho vygoogliť a mali by ste nájsť miestny obchod.
Pozrite sa na tento odkaz alebo na jeden z môjho zoznamu skladieb Raspberry pi a rozbehnite svoje bezhlavé pi.
Po tomto nastavení potrebujeme kúsok kódu, ktorý rozhodne, či sa v oblasti, ktorú kamera monitoruje, nachádza ruka, a ak áno, kde je.
Krok 3: Kus kódu
Kus kódu, ktorý nám umožňuje rozhodnúť, či existuje oblasť záujmu, používa niečo, čo sa nazýva neurónová sieť. Spadajú do kategórie programovania, kde nedefinujeme pravidlá na rozhodovanie, ale ukazujeme neurónovým sieťam dostatok údajov na to, aby pravidlá určila sama.
V našom prípade namiesto kódovania toho, ako vyzerá ruka, zobrazujeme obrázky neurónovej siete zachytené z malinového pi, ktoré obsahujú ruku a ktoré neobsahujú ruku. Táto fáza sa nazýva tréning neurónovej siete a použité obrázky sa nazývajú tréningový súbor údajov.
Krok 4: Získanie obrázkov
Vzdialene som sa prihlásil do svojho Raspberry Pi a nasnímal veľa obrázkov pomocou nasledujúceho príkazu.
sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o frame%04d.jpg
Zachytil som 80 obrázkov rukou a 80 obrázkov, ktoré neobsahujú ruku. 160 obrázkov nestačí na správne trénovanie neurónovej siete, ale malo by stačiť na dôkaz koncepcie.
Okrem 160 obrázkov som zachytil ďalších 20 fotografií, aby som otestoval našu sieť, akonáhle bude vycvičená.
Akonáhle bol súbor údajov pripravený, začal som písať kód pre neurónové siete.
Krok 5: Použité nástroje a jazyk
Napísal som svoju neurónovú sieť do pythonovej knižnice hlbokého vzdelávania s názvom Keras a kód je napísaný na jupyterovom notebooku z anakonda navigátora.
Krok 6: Príprava množiny údajov na školenie
Najprv (obrázok č. 1) som zahrnul všetky knižnice potrebné pre tento projekt, ktoré zahŕňajú PIL, matplotlib, numpy, os a Keras. V druhej bunke prenosného počítača python (Obrázok č. 2) definujem cesty k množine údajov a vytlačím počet vzoriek. Teraz musíme načítať všetky obrázky do počtu polí, takže v tretej bunke (obrázok č. 2) som vytvoril početné pole 82 (počet vzoriek z ruky) +75 (počet vzoriek, ktoré nie sú z ruky), t.j. 157 x 100 x 100 x 3. 157 je celkový počet obrázkov, ktoré mám, 100 x 100 je náš rozmer obrázka so zmenenou veľkosťou a 3 sú pre červené, zelené a modré farebné vrstvy v obraze.
Do štvrtej a piatej bunky načítame obrázky obsahujúce ruku, za ktorými nasledujú obrázky, ktoré v poli s počtom polí neobsahujú ruku. V šiestej bunke delíme každú hodnotu 255, a preto je obmedzujúci rozsah hodnôt od 0 do 1. (Obrázok č. 3)
Ospravedlňujeme sa, ak priložené obrázky nie sú dosť dobré. Tu je odkaz na úložisko GITHUB, kde sa môžete pozrieť na kód. Nezabudnite nahradiť názvy ciest adresárov vašou cestou:).
Pohyb.
Ďalej musíme označiť každý obrázok, takže vytvoríme jednorozmerné numpy pole s dĺžkou 157. Prvých 82 záznamov je nastavených na 1 a zvyšných 75 záznamov je nastavených na 0, čo znamená, že neurónová sieť sprostredkováva, že prvých 82 obrázkov pochádza z jednej triedy a zvyšné sú z inej triedy. (Obrázok č. 4)
Teraz vytvoríme neurónovú sieť.
Krok 7: Neurónová sieť
V deviatej bunke definujeme našu neurónovú sieť. Obsahuje tri opakovania konvolučnej vrstvy, za ktorými nasledujú maxpoolové vrstvy s 8, 12 a 16 konvolučnými filtrami. Potom máme dve husté nervové siete. K tomuto kroku pripájame dva obrázky. Prvým je zachytenie kódu, ktorý vytvára neurónovú sieť, a druhým je obrázková reprezentácia neurónovej siete s anotovanými výstupnými dimenziami a operáciami.
Krok 8: Školenie neurónovej siete
V desiatej bunke nakonfigurujeme optimalizátor neurónovej siete na „adam“a stratovú funkciu na „binary_crossentropy“. Hrajú hlavnú úlohu v tom, ako sa aktualizujú váhy siete. Nakoniec, keď spustíme jedenástu bunku, začne trénovať neurónová sieť. Počas výcviku siete sa pozerajte na stratovú funkciu a uistite sa, že klesá.
Krok 9: Testovanie neurónovej siete
Akonáhle je neurónová sieť vyškolená, musíme pripraviť súbor testovacích údajov. Zopakujeme postup, ktorý sme urobili na prípravu tréningovej sady v 3., 4., 5. a 6. bunke o testovacích dátach, aby sme vytvorili testovaciu sadu. Tiež pripravujeme štítok pre testovaciu sadu, ale tentoraz spustíme model na tejto množine údajov, aby sme získali predpovede a nie na trénovanie.
Krok 10: Výsledok a ďalšia časť…
Mám presnosť testu 88%, ale vezmite to so štipkou soli, pretože množina údajov používaná na trénovanie a testovanie tohto modelu je veľmi veľmi malá a nedostatočná na správne natrénovanie tohto modelu.
Každopádne dúfam, že sa vám tento článok páčil. Môj zámer tohto cvičenia ešte nie je dokončený a dávajte si pozor na 2. časť. Odovzdám ho hneď, ako to bude možné.
V ďalšej časti budeme trénovať ďalšiu neurónovú sieť, ktorá nám povie polohu ruky na obrázku detekovanom rukou.
Všetky otázky sú vítané.
Ak má niekto záujem využiť môj malý súbor údajov, dajte mi vedieť v komentároch. Sprístupním.
Vďaka za prečítanie. Uvidíme sa čoskoro s druhou časťou do tej doby, prečo nevytvoríte a nevycvičíte neurónovú sieť.
Upraviť:- Ďalšie kroky sú pre druhú časť.
Krok 11: Detekcia objektov
V predchádzajúcich krokoch sme vytvorili NN, ktorá nám hovorí, či testovací obrázok obsahuje ruku alebo nie. No a čo ďalej? Ak NN klasifikuje obrázok ako obsahujúci ruku, chceli by sme vedieť polohu ruky. V literatúre o počítačovom videní sa to nazýva detekcia objektov. Trénujme teda NN, ktorá robí presne to isté.
Krok 12: Video
3 -minútové video s vysvetlením všetkých zostávajúcich krokov. Pozri sa.
Krok 13: Označovanie
Ak chcete, aby neurálna sieť produkovala umiestnenie ruky, musíme ju vycvičiť takýmto spôsobom, t.j. na rozdiel od predchádzajúcej neurónovej siete, kde bol každý obrázok označený buď rukou, alebo bez ruky. Tentoraz budú mať všetky obrázky s rukou štyri štítky zodpovedajúce diagonálnym súradniciam ohraničujúceho rámčeka okolo ruky na tomto obrázku.
Priložený obrázok súboru csv obsahuje menovku pre každý obrázok. Súradnice sú normalizované s rozmerom obrázka, t. J. Ak je horná súradnica X na 320. pixeli v obrázku so šírkou 640 pixelov, označíme ho ako 0,5.
Krok 14: Označovanie GUI
Možno sa čudujete, ako sa mi podarilo označiť všetkých 82 obrázkov. V Pythone som napísal GUI, ktoré mi s touto úlohou pomohlo. Akonáhle je obrázok načítaný v GUI. Ľavé kliknutie v hornej súradnici a pravé kliknutie v dolnej súradnici pravdepodobného ohraničujúceho rámčeka okolo ruky. Tieto súradnice sa potom zapíšu do súboru, po ktorom kliknutím na tlačidlo ďalej načítam nasledujúci obrázok. Tento postup som zopakoval pre všetkých 82 vlakových a 4 testovacie obrázky. Keď boli štítky pripravené, nastal čas školenia.
Krok 15: Potrebné knižnice
Najprv musíme načítať všetky potrebné knižnice. Ktoré zahŕňa
- PIL na manipuláciu s obrázkom,
- matplotlib na vykresľovanie,
- numpy pre maticovú prevádzku,
- os pre funkcie závislé od operačného systému a
- keras pre neurónovú sieť.
Krok 16: Zostávajúce bunky
V 2., 3., 4. a 5. bunke načítame obrázky do početného poľa a zo súboru csv vytvoríme štvorrozmerné pole, ktoré bude fungovať ako štítky. V bunke číslo 6 vytvárame našu neurónovú sieť. Jeho architektúra je identická s neurónovou sieťou používanou na klasifikáciu, s výnimkou dimenzie výstupnej vrstvy, ktorá je 4 a nie 1. Ďalší rozdiel pochádza z použitej stratovej funkcie, ktorou je stredná mocninová chyba. V bunke číslo 8 začíname trénovať našu neurónovú sieť akonáhle sme ju vycvičili, spustil som tento model na testovacej súprave, aby som získal predpovede pre ohraničujúci rámček na prekrývajúcich sa súradniciach ohraničujúceho poľa, ktoré vyzerali dosť presne.
Vďaka za prečítanie.
Odporúča:
Robotická ruka ASL (vľavo): 9 krokov (s obrázkami)
Robotická ruka ASL (vľavo): Cieľom tohto semestra bolo vytvoriť 3-D tlačenú robotickú ľavú ruku, ktorá je schopná v triede predviesť abecedu amerického posunkového jazyka pre nepočujúcich a sluchovo postihnutých ľudí. Prístupnosť predvádzať americký znakový jazyk
Hlasom ovládaná ruka robota: 8 krokov (s obrázkami)
Hlasom riadená robotická ruka: a.články {veľkosť písma: 110,0%; font-weight: bold; štýl písma: kurzíva; textová dekorácia: žiadna; farba pozadia: červená;} a.články: vznášať sa {farba-pozadia: čierna;} Tento návod vysvetľuje, ako vytvoriť hlasom ovládanú robotickú ruku pomocou
Magnetická tretia ruka: 5 krokov (s obrázkami)
Magnetická tretia ruka: Každý, kto hrá s elektronikou, hrá nahlas, vie, aké dôležité sú tretie ruky. To vám dáva možnosť držať spájku v jednej ruke a spájkovačku v druhej a ľahko pridať spájku k komponentu. Používam niektoré domáce tretie ruky na niektoré
Ľahko sa plaziaca ruka zombie: 15 krokov (s obrázkami)
Ľahká plazivá zombie ruka: Tieto pokyny nepotrebujú zváraciu pištoľ. Je bezpečné, aby si deti precvičovali vytváranie jednoduchých obvodov. Dávajte si však pozor na malé predmety, ktoré by mohli omylom prehltnúť. Materiál:-Vibračný motor (1,5 ~ 3 V, s drôtom)-Vodivá páska (10 mm, jednostranná, kamenec
Tretia ruka ++: Viacúčelová pomocná ruka pre elektroniku a iné jemné práce .: 14 krokov (s obrázkami)
Tretia ruka ++: Viacúčelová pomocná ruka pre elektroniku a iné jemné práce .: V minulosti som používal tretie ruky/pomocné ruky dostupné v reťazcových obchodoch s elektronikou a bol som frustrovaný z ich použiteľnosti. Nikdy som nedokázal dostať klipy presne tam, kde som ich chcel, alebo nastavenie trvalo viac času, než by skutočne malo