Talaan ng mga Nilalaman:
- Hakbang 1: Mga Kinakailangan
- Hakbang 2: Pagsasanay ng Data
- Hakbang 3: Pagpapatupad ng Mga Pagtataya ng Pi Camera
- Hakbang 4: Arduino Robot
- Hakbang 5: Pagsubok
- Hakbang 6: Lahat ng Karagdagang Mga File
Video: Raspberry Pi 4 Traffic Sign Recognition Robot: 6 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Ang itinuturo na ito ay batay sa aking proyekto sa unibersidad. Ang layunin ay upang lumikha ng isang sistema kung saan ang isang neural network ay pinag-aaralan ang isang imahe at pagkatapos ay batay sa pagkilala ay sasabihin sa isang arduino robot na lumipat sa pamamagitan ng Ros.
Halimbawa kung ang isang pag-sign sa kanan ay kinikilala pagkatapos ang robot ay liliko sa kanan, kung ang isang turn left sign ay makikilala pagkatapos ang robot ay liliko sa kaliwa, kung hindi makikilala pagkatapos ang robot ay magpapatuloy. Ang dataset na gagamitin ay ang opisyal na pagkilala sa pag-sign sign ng trapiko mula sa INI (2019) (Institut Fur Neuroinformatik), ang dataset na ito ay mayroong 43 mga klase subalit dalawa lamang ang kinakailangan; Ang mga folder ng 00033 at 00034 sa dataset ay kaliwa at kanang mga palatandaan.
Hakbang 1: Mga Kinakailangan
Ang mga kinakailangan para sa proyektong ito ay ang mga sumusunod:
Isang robot na arduino. (karaniwang isang arduino uno, isang motor driver at motor) (hindi kinakailangan kung hindi ka gumagamit ng isang robot)
Isang raspberry pi 4.
Isang pi camera.
Kinakailangan ang software:
Python 3.
OpenCV 4.
Tensorflow.
arduino IDE (hindi kinakailangan kung hindi ka gumagamit ng isang robot)
Ros (hindi kinakailangan kung hindi ka gumagamit ng isang robot)
Anuman ang iyong paboritong tema ng sawa ay (Sa raspberry pi, ginagamit ko si Thonny).
Upang i-set up ang OpenCV at Tensorflow, sundin ang mga tagubilin ni Adrian. Link:
Inirerekumenda ko ang pagtingin sa marami sa kanyang mga tutorial hangga't maaari, ang mga ito ay talagang kawili-wili at kapwa kapaki-pakinabang para sa mga nagsisimula pati na rin ang mga tagapamagitan.
Hakbang 2: Pagsasanay ng Data
Ang script ng tren ay idinisenyo upang ma-access ang dataset na nagtatipon ng halos 50, 000 na mga imahe mula sa 43 mga klase. Ang script ay nakasulat sa sawa, na gumagamit ng iba't ibang mga aklatan: os - ito ay para sa pag-uugnay sa script ng sawa sa tamang direktoryo kung saan matatagpuan ang dataset. Matplotlib - ito ay para sa pagpapakita ng data mula sa modelo ng pagsasanay. Tensorflow at keras - ito ang mga silid aklatan na ginamit upang likhain ang artipisyal na neural network na modelo, ginagamit ang mga ito upang idisenyo ang modelo. Numpy - ang library na ito ay para sa paggawa ng mga imahe sa isang array na maaaring ilagay sa modelo upang makuha ang isang hula.
Ang script na nakalakip ay ang python code para sa paggawa ng isang modelo mula sa dataset. Binubuo ito sa convolutional 2D na may (5, 5) input at isang activation ng relu pagkatapos ng pooling, sa sandaling tapos na ito ang input ay dumaan sa isa pang convolution na may isang (3, 3) input na may parehong pag-activate at pooling. Nangyayari ito sa huling pagkakataon bago ma-flatten at pagkatapos ay inilalapat ang density sa dami ng mga klase, sa kasong ito 43.
Ang susunod na hakbang ay ang pag-ipon ang modelo. Ito ang bahagi na nagtatakda ng optimiser, ang isang sgd ang pinaka-akma dahil katulad ito sa ginamit na pag-optimize sa takdang-aralin 1. Ang Sgd ay nangangahulugang pinagmulan ng gradient ng Stochastic. Sa loob din ng tagatala ang pagkawala ay kailangang maitakda, ang pagpili ng isang sparse_categorical_crossentropy loss ay ang pinakamahusay na angkop dahil ang mga kategorya ay bilang mga integer at ang modelo ay maglalabas ng isang hula para sa bawat klase bilang isang float sa pagitan ng 0 at 1. 1 na 100% kawastuhan.
Kapag kumpleto na ang tagatala, kailangang ilapat ang isang generator para sa modelo upang masimulan ang pagproseso ng mga pag-input ng imahe. Ang generator ay binubuo ng maraming bahagi: training_set - ito ang link sa dataset na ginamit para sa pagsasanay, steps_per_epoch - ito ang bilang ng mga hakbang bawat epoch na kinakailangan, mga epoch - ito ay kung gaano karaming beses mag-uulit ang programa sa pamamagitan ng isang buong hanay ng data, validation_data - ito ang link sa ginamit na dataset para sa pagpapatunay, pagpapatunay_steps - ang bilang ng mga hakbang na ginamit para sa pagpapatunay, ang pagpapatunay ay nangyayari sa pagtatapos ng bawat panahon.
Pangkalahatan, ang isang kumpletong pagpunas ng buong dataset ay kailangang kumpleto bawat panahon. Samakatuwid halimbawa ng isang dataset ng 1024 na mga imahe ay mangangailangan: Laki ng batch = 32, Mga Hakbang bawat panahon = 32, mga panahon = 1. Ang bawat hakbang ay may kasamang buong laki ng batch, kaya't may laki ng batch na 32 ang mga hakbang ay magiging 32. kamay, pinakamahusay na magkaroon ng isang mas malaking sukat ng batch kaysa sa bilang ng mga klase, ito ay dahil kung mas maliit ang laki ng batch kung gayon ang bawat hakbang ay hindi maaaring magsama ng isang imahe mula sa bawat klase.
Kapag natapos na ang modelo sa pagsasanay, gamit ang matplotlib ang programa ay gagawa ng isang graph ng mga output, ipinapakita nito ang kasaysayan ng pagsasanay mula simula hanggang katapusan. Ang grap ay binubuo ng kawastuhan, kawastuhan ng pagpapatunay, pagkawala at pagkawala ng pagpapatunay, ito ay pinaghiwalay bawat panahon upang maipakita kung paano umunlad ang pagsasanay. Ang pangwakas na yugto ay upang mai-save ang modelo bilang isang.h5 file na maaaring ma-access sa ibang pagkakataon para sa proseso ng hula. Ang pag-save sa modelo ay nangangahulugan na sa tuwing pinapatakbo ang programa ng hula ay hindi kailangang mapatakbo muli ang programa sa pagsasanay. Ang programa ng pagsasanay ay maaaring tumagal ng hanggang 10 minuto bawat panahon sa isang raspberry pi.
Nakalakip ang iskrip ng Pagsasanay:
Hakbang 3: Pagpapatupad ng Mga Pagtataya ng Pi Camera
Ang susunod na programa ay ang hula at iskrip ng publisher.
Ang unang yugto ay upang mai-load ang modelo gamit ang model.load (). Ang pangalawang yugto ay upang umulit sa pamamagitan ng mga frame mula sa pi camera gamit ang opencv at pagkatapos ay baguhin ang laki ng frame sa parehong laki tulad ng mga laki ng pag-input na ginamit sa yugto ng pagsasanay, 32 x 32 pixel. Kapag tapos na ito ang bagong sukat na sukat ay inilalagay sa modelo gamit ang model.predict () na naglalabas ng isang matrix, ang bawat elemento ng matrix ay isang float mula 0 hanggang 1, ang elemento ng index ay pareho ng klase na kinakatawan nito, kaya't ang unang elemento ay isang klase at ang numero ay ang hula ng katiyakan ng imahe na mula sa klase. Hal. Ipinapakita ng
TANDAAN: Kung hindi mo ginagamit ang panig ng robot. Alisin lamang ang mga linya:
"import rospy"
def talker (direksyon):
mensahe = String ()
pub = rospy. Publisher ('robot', String, queue_size = 10)
rospy.init_node ('talker', anonymous = True)
mensahe = direksyon
rospy.loginfo (mensahe)
pub.publish (mensahe)"
"tagapagsalita (direksyon)"
Nakalakip ang script ng Pi camera.
Hakbang 4: Arduino Robot
Ang huling hakbang ay ang script ng script ng robot.
Ito ay nakasulat sa C ++ at isang.ino file para sa arduino uno. Kinakailangan ng programa ang ros library na matatagpuan sa manager ng mga aklatan sa loob ng ideyang ito. Kapag na-import na ito mayroong mga halimbawang mga file, pinili kong palawakin sa led blink file dahil gagawin nito ang isang katulad na layunin sa kailangan ko. Patuloy na loop ang programa hanggang sa maalis ang pagkakakonekta ng kapangyarihan, una itong nakikinig sa paksa ng robot, kapag nakakakuha ito ng isang utos mula sa paksang iyon magkakaroon ito ng isang pahayag kung makita kung ano ang sinasabi ng utos. Kung natitira ang utos pagkatapos ay pinapatakbo ng script ang pamamaraan sa kaliwa, kung patas ang utos pagkatapos ay tatakbo ang pakanan na paraan at tatakbo ang pasulong na pamamaraan. Ang tatlong pamamaraang ito ay halos magkatulad sa bawat isa, sinabi nila sa mga digital na pin na maging LOW (ground) o 100 (PWM) para ito sa gayon ang robot ay hindi masyadong mabilis sa pamamagitan ng pagsasabi sa driver ng motor na pahintulutan lamang ang kaunting boltahe palabas. Ang pagkakasunud-sunod ng mga output na ito ay kung bakit ang robot ay lumiliko pakaliwa at pakanan o pasulong, ito ay dahil sa orientation ng boltahe na papunta sa mga motor.
Nakalakip ang.ino script para sa arduino.
Hakbang 5: Pagsubok
Nakalakip ang mga Imahe kaya't ang proyekto mula simula hanggang katapusan. Ipinapakita ng unang imahe ang pagsasanay sa proseso. Kapag nakumpleto na ang isang pag-print sa labas ng modelong ginawa ay ipinakita. Ang pangatlong imahe ay nagpapakita ng hula mula sa script ng pagsasanay. ito ang huling yugto ng script ng pagsasanay. Kung titingnan mo sa folder ang pagsasanay sa pagsasanay ay nasa, isang grap at isang modelo ang nagawa. Ang graph ay dapat magmukhang imahe 4 dito, ipinapakita nito ang kasaysayan ng pagsasanay mula simula hanggang katapusan.
Ang pangwakas na imahe ay habang pinapatakbo ang script ng pi camera, ang ay isang live stream mula sa pi camera. isang hula ang ginawa sa bawat frame at ang hula ay nakalimbag sa terminal. Ipinapakita ng frame kung ano ang nakikita ng camera.
Nakalakip ang aking ulat sa Unibersidad para sa proyektong ito. Mangyaring basahin para sa karagdagang detalye ng proyekto.
Hakbang 6: Lahat ng Karagdagang Mga File
Ang ilan sa mga ito ay pagsubok ng mga file na ginawa ko.
Inirerekumendang:
Abellcadabra (Face Recognition Door Lock System): 9 Mga Hakbang
Abellcadabra (Face Recognition Door Lock System): Ang pagtula sa paligid ng kuwarentenas, sinubukan kong makahanap ng isang paraan upang patayin ang oras sa pamamagitan ng pagbuo ng pagkilala sa mukha para sa pintuan ng bahay. Pinangalanan ko itong Abellcadabra - na kung saan ay kombinasyon sa pagitan ng Abracadabra, isang magic na parirala na may doorbell na kukuha lamang ako ng kampanilya. LOL
Jenkins Traffic Traffic Light: 8 Hakbang (na may Mga Larawan)
Jenkins Traffic Traffic Light: Sa software engineering, ang patuloy na pagsasama ay ang pagsasanay ng pagsasama ng lahat ng mga nagtatrabaho kopya ng developer sa isang ibinahaging mainline nang maraming beses sa isang araw. Ang ilan sa mga pinakamahusay na kasanayan upang makamit iyon ay: ang bawat isa ay nagbubuhat sa baseline araw-araw, i-automate ang
Facial Recognition Security System para sa isang Refrigerator na May Raspberry Pi: 7 Hakbang (na may Mga Larawan)
Ang Facial Recognition Security System para sa isang Refrigerator Sa Raspberry Pi: Pag-browse sa internet Natuklasan ko na ang mga presyo para sa mga sistema ng seguridad ay nag-iiba mula sa 150 $ hanggang 600 $ pataas, ngunit hindi lahat ng mga solusyon (kahit na ang mga mamahaling) ay maaaring isama sa iba pang mga matalinong mga tool sa iyong bahay! Halimbawa, hindi mo maitatakda
VRBOT (Voice Recognition Robot): 10 Hakbang (na may Mga Larawan)
VRBOT (Voice Recognition Robot): Sa Instructable na ito gagawa kami ng isang robot (mas katulad ng isang RC car) na kinokontrol ng boses hal. Pagkilala sa Boses. Bago ako magsimula magbigay sa iyo ng anumang karagdagang mga detalye dapat malaman ng isa na ito ay Pagkilala sa Boses at hindi Pagkilala sa Pagsasalita na nangangahulugang c
Portable Advertising Sign sa Mura sa 10 Mga Hakbang lamang !!: 13 Mga Hakbang (na may Mga Larawan)
Portable Advertising Sign sa Mura sa 10 Mga Hakbang lamang !!: Gumawa ng iyong sarili, murang, portable na karatula sa advertising. Sa pag-sign na ito maaari mong ipakita ang iyong mensahe o logo saanman sa sinumang sa buong lungsod. Ang itinuturo na ito ay isang tugon sa / pagpapabuti / pagbabago ng: https://www.instructables.com/id/Low-Cost-Illumined-