Orodha ya maudhui:

Roboti ya Utambuzi wa Ishara ya Trafiki Raspberry Pi 4: Hatua 6
Roboti ya Utambuzi wa Ishara ya Trafiki Raspberry Pi 4: Hatua 6

Video: Roboti ya Utambuzi wa Ishara ya Trafiki Raspberry Pi 4: Hatua 6

Video: Roboti ya Utambuzi wa Ishara ya Trafiki Raspberry Pi 4: Hatua 6
Video: Cheki jama alivyo paa na ndege ya kichawi utashangaa 2024, Novemba
Anonim
Raspberry Pi 4 Roboti ya Utambuzi wa Ishara ya Trafiki
Raspberry Pi 4 Roboti ya Utambuzi wa Ishara ya Trafiki

Mafundisho haya yanatokana na mradi wangu wa chuo kikuu. Lengo lilikuwa kuunda mfumo ambapo mtandao wa neva unachambua picha na kisha kulingana na utambuzi utamwambia roboti ya arduino kuhama kupitia Ros.

Kwa mfano ikiwa ishara ya kulia inagunduliwa basi roboti itageuka kulia, ikiwa ishara ya kushoto itatambuliwa basi roboti itageukia kushoto, ikiwa hakuna anayetambuliwa basi roboti itaendelea mbele. Hifadhidata itakayotumiwa ni utambuzi rasmi wa ishara ya trafiki kutoka INI (2019) (Institut Fur Neuroinformatik), hifadhidata hii ina madarasa 43 hata hivyo ni mbili tu zinahitajika; 00033 na 00034 folda kwenye mkusanyiko wa data ni ishara za kushoto na kulia.

Hatua ya 1: Mahitaji

Mahitaji
Mahitaji
Mahitaji
Mahitaji
Mahitaji
Mahitaji

Mahitaji ya mradi huu ni yafuatayo:

Roboti ya arduino. (kimsingi arduino uno, dereva wa magari na motors) (haihitajiki ikiwa hutumii roboti)

Risiberi pi 4.

Kamera ya pi.

Programu inahitajika:

Python 3.

OpenCV 4.

Tensorflow.

arduino IDE (haihitajiki ikiwa hutumii roboti)

Ros (haihitajiki ikiwa hutumii roboti)

Chochote maoni yako ya chatu unayoipenda ni (Kwenye rasiberi pi, ninatumia Thonny).

Kuanzisha OpenCV na Tensorflow, fuata maagizo na Adrian. Kiungo:

Ninapendekeza kutazama mafunzo yake mengi iwezekanavyo, zinavutia sana na zinafaa kwa Kompyuta na wapatanishi.

Hatua ya 2: Mafunzo ya Takwimu

Hati ya treni imeundwa kupata hifadhidata ambayo inakusanya picha karibu 50,000 kutoka madarasa 43. Hati hiyo imeandikwa kwa chatu, kwa kutumia maktaba anuwai: os - hii ni kwa kuunganisha hati ya chatu na saraka sahihi ambayo daftari iko. Matplotlib - hii ni kwa kuonyesha data kutoka kwa mfano wa mafunzo. Tensorflow na keras - hizi ni maktaba zinazotumiwa kuunda mfano wa mtandao wa neva wa bandia, hutumiwa kutengeneza mfano huo. Numpy - maktaba hii ni ya kugeuza picha kuwa safu ambayo inaweza kuwekwa kupitia modeli ili kupata utabiri.

Hati iliyoambatanishwa ni nambari ya chatu ya kutengeneza mfano kutoka kwa hifadhidata. Hii inajumuisha 2D ya kusuluhisha na pembejeo ya (5, 5) na uanzishaji wa relu kisha kuchanganisha, mara tu hii ikifanywa pembejeo hupitia usuluhishi mwingine na pembejeo ya (3, 3) na uanzishaji sawa na ujumuishaji. Hii hufanyika mara ya mwisho kabla ya kubanwa halafu wiani hutumiwa kwa kiwango cha madarasa, katika kesi hii 43.

Hatua inayofuata ilikuwa kukusanya mfano. Hii ndio sehemu ambayo inaweka optimiser, sgd ilikuwa inayofaa zaidi kwani hii ilikuwa sawa na optimiser inayotumika katika zoezi la 1. Sgd inasimama kwa asili ya Stochastic gradient. Pia ndani ya mkusanyaji upotezaji unahitaji kuweka, kuchagua sparse_categorical_crossentropy hasara ndio inayofaa zaidi kwani vikundi ni kama nambari na modeli itatoa utabiri kwa kila darasa kama kuelea kati ya 0 na 1. 1 kuwa usahihi wa 100%.

Mara mkusanyaji ukamilika, jenereta inahitaji kutumiwa kwa modeli ili kuanza kusindika pembejeo za picha. Jenereta hiyo ina sehemu nyingi: mafunzo_seti - hiki ni kiunga cha hifadhidata inayotumika kwa mafunzo, hatua_per_epoch - hii ndio hatua za nambari kwa wakati ambazo zinahitajika, epochs - hizi ni mara ngapi programu itapungua kupitia seti kamili ya data, data_ya uthibitishaji - hiki ni kiunga cha hifadhidata iliyotumiwa kwa uthibitishaji, uthibitishaji_matokeo - idadi ya hatua zinazotumiwa kwa uthibitishaji, uthibitishaji hufanyika mwishoni mwa kila wakati.

Kwa ujumla, kufuta kamili ya seta ya data nzima inahitaji kukamilika kwa kila wakati. Kwa hivyo kwa mfano setaseti ya picha 1024 itahitaji: Ukubwa wa kundi = 32, Hatua kwa kila saa = 32, epochs = 1. Kila hatua inajumuisha saizi nzima ya kundi, kwa hivyo na saizi ya kundi ya hatua 32 zitakuwa 32. Kwa upande mwingine mkono, ni bora kuwa na ukubwa wa kundi kubwa kuliko idadi ya madarasa, hii ni kwa sababu ikiwa saizi ya kundi ni ndogo basi kila hatua haiwezi kujumuisha picha kutoka kwa kila darasa.

Mara tu mtindo utakapomaliza mafunzo, kwa kutumia matplotlib programu hiyo itafanya grafu ya matokeo, hii inaonyesha historia ya mafunzo kutoka mwanzo hadi mwisho. Grafu ina usahihi, usahihi wa uthibitishaji, upotezaji na upotezaji wa uthibitishaji, hii imegawanywa kila wakati kuonyesha jinsi mafunzo yalivyoendelea. Hatua ya mwisho ni kuokoa mfano kama faili ya.h5 ambayo inaweza kupatikana baadaye kwa mchakato wa utabiri. Kuokoa mfano kunamaanisha kuwa kila wakati programu ya utabiri inaendeshwa mpango wa mafunzo hauitaji kuendeshwa tena. Programu ya mafunzo inaweza kuchukua hadi dakika 10 kwa wakati wowote kwenye pi ya raspberry.

Imeambatanishwa na hati ya Mafunzo:

Hatua ya 3: Utekelezaji wa Utabiri wa Kamera ya Pi

Programu inayofuata ni utabiri na hati ya mchapishaji.

Hatua ya kwanza ni kupakia mfano kwa kutumia model.load (). Hatua ya pili ni kupunguka kupitia muafaka kutoka kwa kamera ya pi ukitumia opencv na kisha urekebishe sura kwa ukubwa sawa na saizi za kuingiza zinazotumiwa katika hatua ya mafunzo, saizi 32 x 32. Mara tu hii ikifanywa sura mpya iliyobadilishwa ukubwa imewekwa kupitia modeli kwa kutumia mfano. Utabiri () ambao hutoa matrix, kila kitu cha tumbo ni kuelea kutoka 0 hadi 1, faharisi ya kipengee ni sawa na darasa linalowakilisha, kwa hivyo kipengee cha kwanza ni darasa la kwanza na nambari ni utabiri wa uhakika wa picha hiyo kutoka kwa darasa hilo. Mfano.

KUMBUKA: Ikiwa hutumii upande wa roboti. Ondoa tu mistari:

"kuagiza rospy"

def speaker (mwelekeo):

ujumbe = Kamba ()

Pub = rospy. Mchapishaji ('robot', Kamba, foleni_size = 10)

rospy.init_node ('mzungumzaji', asiyejulikana = Kweli)

ujumbe = mwelekeo

rospy.loginfo (ujumbe)

chapisha. chapisha (ujumbe)"

"mzungumzaji (mwelekeo)"

Imeambatanishwa na hati ya kamera ya Pi.

Hatua ya 4: Arduino Robot

Hatua ya mwisho ni hati ya mpango wa robot.

Hii imeandikwa katika C ++ na ni faili ya.ino kwa arduino uno. Programu inahitaji maktaba ya ros ambayo inaweza kupatikana katika meneja wa maktaba ndani ya wazo. Mara tu hii ikiingizwa kuna faili za mfano, nilichagua kupanua faili ya blink iliyoongozwa kwani hii ingefanya lengo sawa na ile niliyohitaji. Mpango huo unaendelea kuzunguka hadi umeme utakapokatika, kwanza husikiliza mada ya mada, ikishika amri kutoka kwa mada hiyo itakuwa na taarifa ya kuona amri inasema nini. Ikiwa amri imesalia basi hati inaendesha njia ya kushoto, ikiwa amri ni sawa basi itaendesha njia ya kulia na vinginevyo itaendesha njia ya mbele. Njia hizi tatu zinafanana sana, zinaambia pini za dijiti iwe chini (chini) au 100 (PWM) hii ni kwa ajili ya kwamba roboti isiwe haraka sana kwa kumwambia dereva wa gari aache tu nje ya voltage. Utaratibu wa matokeo haya ndio hufanya roboti igeuke kushoto na kulia au kwenda mbele, hii ni kwa sababu ya mwelekeo wa voltage kwenda kwa motors.

Imeambatanishwa ni hati ya.ino ya arduino.

Hatua ya 5: Upimaji

Upimaji
Upimaji
Upimaji
Upimaji
Upimaji
Upimaji

Picha zimeambatanishwa ili mradi kuanzia mwanzo hadi mwisho. Picha ya kwanza inaonyesha mafunzo katika mchakato. Mara tu hiyo ikiwa imekamilika kuchapishwa nje ya mfano uliofanywa kunaonyeshwa. Picha ya tatu inaonyesha utabiri kutoka kwa hati ya mafunzo. hii ni hatua ya mwisho ya maandishi ya mafunzo. Ukiangalia kwenye folda hati ya mafunzo iko, grafu na mfano umefanywa. Grafu inapaswa kuonekana kama picha 4 hapa, hii inaonyesha historia ya mafunzo kutoka mwanzo hadi mwisho.

Picha ya mwisho ni wakati inaendesha maandishi ya kamera ya pi, ni mtiririko wa moja kwa moja kutoka kwa kamera ya pi. utabiri unafanywa kwenye kila fremu na utabiri umechapishwa kwenye terminal. Sura hiyo inaonyesha kile kamera inaona.

Imeambatanishwa na ripoti yangu ya Chuo Kikuu ya mradi huu. Tafadhali soma kwa maelezo zaidi ya mradi huo.

Hatua ya 6: Faili Zote za Ziada

Faili Zote za Ziada
Faili Zote za Ziada

Baadhi ya hizi zilikuwa zinajaribu faili nilizozifanya njiani.

Ilipendekeza: