Talaan ng mga Nilalaman:

Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2: 16 Mga Hakbang (na may Mga Larawan)
Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2: 16 Mga Hakbang (na may Mga Larawan)

Video: Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2: 16 Mga Hakbang (na may Mga Larawan)

Video: Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2: 16 Mga Hakbang (na may Mga Larawan)
Video: Ещё немного красивых пикселей ► 2 Прохождение Huntdown 2024, Nobyembre
Anonim
Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2
Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2
Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2
Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2
Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2
Kamay ba Iyon? (Raspberry Pi Camera + Neural Network) Bahagi 1/2

Ilang araw na ang nakakalipas, nasugatan ko ang kanang pulso ko sa gym. Pagkatapos tuwing gagamitin ko ang aking computer mouse, nagdulot ito ng labis na sakit dahil sa matarik na anggulo ng pulso.

Iyon ay kapag ito hit sa akin "hindi ito ay mahusay kung maaari naming i-convert ang anumang ibabaw sa isang trackpad" at hindi ko alam kung bakit ngunit para sa ilang kadahilanan naisip ko siya, ang pelikulang KANYA, hahayaan ko kayong malaman ito palabas Ito ay isang nakagaganyak na pag-iisip ngunit hindi ko alam kung magagawa ko ito, nagpasya akong subukan ito.

Nakukuha ng artikulong ito kung ano ang lumabas dito.

Bago kami magsimula mayroon akong disclaimer-

'Sa pagtatapos ng artikulong ito, hindi ko mai-convert ang anumang ibabaw sa isang trackpad ngunit marami akong natutunan at nagdagdag ng malalaking tool sa aking arsenal. Sana mangyari din sa iyo '

Magsimula na tayo.

Hakbang 1: Video

Image
Image

Narito ang isang maliit na 5 minutong video na sumasaklaw sa lahat ng mga hakbang. Tingnan mo.

Hakbang 2: Hardware

Hardware
Hardware

Nag-set up ako ng isang raspberry pi kasama ang raspberry pi camera sa taas na halos 45 cm. Binibigyan kami nito ng lugar ng pagsubaybay ng tungkol sa 25x25 cm sa ilalim ng camera.

Madaling magagamit ang Raspberry pi at raspberry pi camera, i-google mo lang ito at dapat ay makahanap ka ng isang lokal na tindahan.

Tingnan ang Link na ito o isa sa aking playlist ng Raspberry pi upang makuha at tumakbo ang iyong walang ulo.

Kasunod sa pag-set up na ito, kailangan namin ng isang piraso ng code na nagpapasya kung mayroong isang kamay sa lugar na sinusubaybayan ng camera at kung gayon nasaan ito.

Hakbang 3: piraso ng Code

Piraso ng Code
Piraso ng Code
Piraso ng Code
Piraso ng Code

Ang piraso ng code na nagpapahintulot sa amin na magpasya kung mayroong isang kamay sa lugar ng interes ay gumagamit ng isang bagay na tinatawag na Neural Network. Nabibilang sila sa kategorya ng programa kung saan hindi namin tinukoy ang mga panuntunan upang magdesisyon ngunit nagpapakita kami ng neural network ng sapat na data na nalalaman nito ang mga patakaran nang mag-isa.

Sa aming kaso, sa halip na i-coding ang kamukha ng kamay ay nagpapakita kami ng mga imahe ng neural network na nakuha mula sa raspberry pi na naglalaman ng kamay at hindi naglalaman ng kamay. Ang yugto na ito ay tinatawag na pagsasanay ng neural network at ang mga imaheng ginamit ay tinatawag na training dataset.

Hakbang 4: Pagkuha ng Mga Larawan

Pagkuha ng Mga Larawan
Pagkuha ng Mga Larawan

Nailayo ko ang pag-log in sa aking raspberry pi at nakakuha ng bungkos ng mga imahe gamit ang sumusunod na utos.

sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o frame% 04d.jpg

Nakuha ko ang 80 mga imahe gamit ang kamay at 80 mga imahe na hindi naglalaman ng kamay. Ang 160 na mga imahe ay hindi sapat upang maayos na sanayin ang isang neural network ngunit dapat ay sapat para sa patunay ng konsepto.

Bukod sa 160 na mga imahe, nakunan ko pa ang 20 mga imahe upang subukan ang aming network sa sandaling ito ay bihasa.

Kapag handa na ang dataset nagsimula akong magsulat ng code para sa neural network.

Hakbang 5: Ginamit ang Mga Tool at Wika

Mga Gamit at Wika na Ginamit
Mga Gamit at Wika na Ginamit
Mga Gamit at Wika na Ginamit
Mga Gamit at Wika na Ginamit

Sinulat ko ang aking neural network sa python deep learning library na tinatawag na Keras at ang code ay nakasulat sa jupyter notebook mula sa anaconda navigator.

Hakbang 6: Paghahanda ng Dataset para sa Pagsasanay

Paghahanda ng Dataset para sa Pagsasanay
Paghahanda ng Dataset para sa Pagsasanay
Paghahanda ng Dataset para sa Pagsasanay
Paghahanda ng Dataset para sa Pagsasanay
Paghahanda ng Dataset para sa Pagsasanay
Paghahanda ng Dataset para sa Pagsasanay
Paghahanda ng Dataset para sa Pagsasanay
Paghahanda ng Dataset para sa Pagsasanay

Una (Larawan # 1) Isinama ko ang lahat ng mga aklatan na kinakailangan para sa proyektong ito, na kasama ang PIL, matplotlib, numpy, os at Keras. Sa pangalawang cell ng python notebook (Larawan # 2) tinutukoy ko ang mga landas sa dataset at i-print ang bilang ng sample. Ngayon kailangan naming i-load ang lahat ng mga imahe sa isang numpy array, samakatuwid sa ikatlong cell (Larawan # 2) Lumikha ako ng isang numpy array na 82 (bilang ng sample ng kamay) +75 (bilang ng sample na hindi kamay) ie 157x100x100x3. Ang 157 ay kabuuang bilang ng mga imahe na mayroon ako, 100x100 ang aming sukat na sukat ng imahe at ang 3 ay para sa pula, berde at asul na mga layer ng kulay sa imahe.

Sa ika-apat at ikalimang cell, naglo-load kami ng mga imaheng naglalaman ng kamay na sinusundan ng mga imahe na hindi naglalaman ng kamay sa numpy array. Sa ikaanim na cell, hinati natin ang bawat halaga ng 255 samakatuwid ay nililimitahan ang saklaw ng halaga mula 0 hanggang 1. (Larawan # 3)

Humihingi ako ng paumanhin kung ang mga nakakabit na imahe ay hindi sapat. Narito ang link sa GithUB repository para sa iyo upang tingnan ang code. Huwag kalimutang palitan ang mga pangalan ng path ng direktoryo sa iyong path:).

Gumagalaw.

Susunod na kailangan naming lagyan ng label ang bawat imahe, kaya, lumikha kami ng isang dimensional na numpy array na 157 ang haba. Ang unang 82 na mga entry ay nakatakda sa 1 at ang natitirang 75 mga entry ay nakatakda sa 0 na nagpapahiwatig ng neural network na ang unang 82 na mga imahe ay mula sa isang klase at ang natitira ay mula sa isa pa. (Larawan # 4)

Ngayon gumawa tayo ng isang neural network.

Hakbang 7: Neural Network

Neural Network
Neural Network
Neural Network
Neural Network

Sa ikasiyam na cell, tinutukoy namin ang aming neural network. Naglalaman ito ng tatlong pag-uulit ng convolution layer na sinusundan ng mga maxpool layer na may 8, 12 at 16 convolution filters ayon sa pagkakabanggit. Kasunod nito ay mayroon kaming dalawang siksik na neural net. Ang paglakip ng dalawang mga imahe para sa hakbang na ito. Una ay ang snap ng code na lumilikha ng neural network at pangalawa ang nakalarawan na representasyon ng neural network na may output dimension at pagpapatakbo na may anotasyon.

Hakbang 8: Pagsasanay Neural Network

Pagsasanay sa Neural Network
Pagsasanay sa Neural Network

Sa ikasampung sel, i-configure namin ang neural network optimizer sa 'adam' at pagkawala ng pagpapaandar sa 'binary_crossentropy'. Ginampanan nila ang pangunahing papel sa kung paano nai-update ang timbang ng network. Panghuli kapag nagpatakbo kami ng pang-onse na cell, nagsisimula na sanayin ang neural network. Habang ang network ay pagsasanay na tingnan ang pagkawala ng pag-andar at tiyakin na ito ay bumababa.

Hakbang 9: Pagsubok sa Neural Network

Pagsubok sa Neural Network
Pagsubok sa Neural Network

Kapag nasanay ang neural network, kailangan naming maghanda ng hanay ng data ng pagsubok. Inuulit namin ang pamamaraang ginawa upang maghanda ng pagsasanay na itinakda sa ika-3, ika-4, ika-5 at ika-6 na cell sa data ng pagsubok upang lumikha ng hanay ng pagsubok. Naghahanda din kami ng label para sa hanay ng pagsubok ngunit sa oras na ito nagpapatakbo kami ng modelo sa hanay ng data na ito upang makakuha ng mga hula at hindi upang sanayin.

Hakbang 10: Resulta at Susunod na Bahagi …

Resulta at Susunod na Bahagi …
Resulta at Susunod na Bahagi …

Nakuha ko ang katumpakan ng pagsubok na 88% ngunit dalhin ito sa isang pakurot ng asin bilang ginamit ang data upang sanayin at subukan ang modelong ito na napakaliit at hindi sapat upang maayos na sanayin ang modelong ito.

Gayunpaman sana ay nasiyahan ka sa artikulong ito. Ang aking hangarin sa likod ng ehersisyo na ito ay hindi pa kumpleto at abangan ang ika-2 bahagi. I-upload ko ito sa lalong madaling panahon.

Sa susunod na bahagi, magsasanay kami ng isa pang neural network na magsasabi sa amin ng lokasyon ng kamay sa isang imahe na nakita ng kamay.

Malugod na tinatanggap ang lahat ng mga query.

Kung ang sinuman ay interesado sa paggamit ng aking maliit na maliit na dataset ipaalam sa akin sa mga komento. Ilalagay ko ito.

Salamat sa pagbabasa. Makikita kita sa lalong madaling panahon sa pangalawang bahagi hanggang sa gayon bakit hindi ka lumikha at sanayin ang isang neural network.

I-edit: - Ang mga susunod na hakbang ay para sa pangalawang bahagi.

Hakbang 11: Pagtuklas ng Bagay

Pagtuklas ng Bagay
Pagtuklas ng Bagay

Sa mga nakaraang hakbang nilikha namin ang isang NN na nagsasabi sa amin kung ang imahe ng pagsubok ay naglalaman ng kamay o hindi. Well ano ang susunod? Kung inuri ng NN ang imahe bilang naglalaman ng kamay nais naming malaman ang lokasyon ng kamay. Tinatawag itong object detection sa computer vision literatura. Kaya't sanayin natin ang NN na eksaktong eksaktong ginagawa.

Hakbang 12: Video

Image
Image

Isang 3 minutong video na nagpapaliwanag sa lahat ng natitirang mga hakbang. Tingnan mo.

Hakbang 13: Pag-label

Paglalagay ng label
Paglalagay ng label
Paglalagay ng label
Paglalagay ng label
Paglalagay ng label
Paglalagay ng label

Kung nais mo ang isang neural network upang maipakita ang lokasyon ng kamay, kailangan naming sanayin ito sa isang paraan ibig sabihin hindi tulad ng nakaraang neural network kung saan ang bawat imahe ay may label na alinman sa kamay at walang kamay. Sa oras na ito ang lahat ng mga imahe na may kamay ay magkakaroon ng apat na mga label na naaayon sa dayagonal na mga coordinate ng bounding box sa paligid ng kamay sa larawang iyon.

Ang kalakip na imahe ng csv file ay naglalaman ng label para sa bawat imahe. Mangyaring tandaan na ang mga coordinate ay na-normalize ng dimensyon ng imahe ibig sabihin kung ang itaas na coordinate ng X ay nasa 320th pixel na imahe na may lapad na 640 pixel, tatawagan namin ito bilang 0.5.

Hakbang 14: Pag-label ng GUI

Pagmarka ng GUI
Pagmarka ng GUI
Pagmarka ng GUI
Pagmarka ng GUI
Pagmarka ng GUI
Pagmarka ng GUI
Pagmarka ng GUI
Pagmarka ng GUI

Maaaring nagtataka ka kung paano ko nagawang lagyan ng label ang lahat ng 82 mga imahe, mabuti nagsulat ako ng isang GUI sa sawa na tumulong sa akin sa gawaing ito. Kapag na-load ang imahe sa GUI. Iniwan ko ang pag-click sa itaas na coordinate at pag-right click sa mas mababang coordinate ng maaaring may hangganang kahon sa paligid ng kamay. Ang mga coordinate na ito ay nakasulat sa isang file kasunod sa pag-click ko sa susunod na pindutan upang mai-load ang susunod na imahe. Inulit ko ang pamamaraang ito para sa lahat ng 82 mga larawan ng tren at 4 na pagsubok. Kapag handa na ang mga label, oras na ng pagsasanay.

Hakbang 15: Kailangan ng Mga Aklatan

Kailangan ng Mga Aklatan
Kailangan ng Mga Aklatan
Kailangan ng Mga Aklatan
Kailangan ng Mga Aklatan
Kailangan ng Mga Aklatan
Kailangan ng Mga Aklatan

Una kailangan naming i-load ang lahat ng kinakailangang mga aklatan. Alin ang kasama

  • PIL para sa pagmamanipula ng imahe,
  • matplotlib para sa paglalagay,
  • numpy para sa operasyon ng matrix,
  • os para sa operating system na umaasa sa pagpapaandar at
  • keras para sa neural network.

Hakbang 16: Mga Natitirang Selula

Mga Natitirang Selula
Mga Natitirang Selula
Mga Natitirang Selula
Mga Natitirang Selula
Mga Natitirang Selula
Mga Natitirang Selula
Mga Natitirang Selula
Mga Natitirang Selula

Sa ika-2, ika-3, ika-4 at ika-5 na cell nag-load kami ng mga imahe sa numpy array at lumikha ng isang apat na dimensional na array mula sa csv file upang kumilos bilang mga label. Sa cell number 6 nilikha namin ang aming neural network. Ang arkitektura nito ay magkapareho sa neural network na ginamit para sa pag-uuri maliban sa sukat ng output layer na 4 at hindi 1. Ang isa pang pagkakaiba ay nagmula sa pagkawala ng pagpapaandar na ginamit na nangangahulugang squared error. Sa cell number 8 sinisimulan namin ang pagsasanay ng aming neural network nang sanay na pinatakbo ko ang modelong ito sa set ng pagsubok upang makakuha ng mga hula para sa bounding box sa overlaying coordinate ng bounding box na mukhang tama ang kanilang hitsura.

Salamat sa pagbabasa.

Inirerekumendang: