Përmbajtje:

Robot Raspberry Pi 4 Njohja e Shenjave të Trafikut: 6 Hapa
Robot Raspberry Pi 4 Njohja e Shenjave të Trafikut: 6 Hapa

Video: Robot Raspberry Pi 4 Njohja e Shenjave të Trafikut: 6 Hapa

Video: Robot Raspberry Pi 4 Njohja e Shenjave të Trafikut: 6 Hapa
Video: Zysha e seksit Ja si të prishemi pa i ren me dore 2024, Nëntor
Anonim
Robot Raspberry Pi 4 i Njohjes së Shenjave të Trafikut
Robot Raspberry Pi 4 i Njohjes së Shenjave të Trafikut

Ky udhëzues bazohet në projektin tim universitar. Qëllimi ishte krijimi i një sistemi ku një rrjet nervor analizon një imazh dhe më pas bazuar në njohjen do t'i thotë një roboti arduino të lëvizë përmes Ros.

Për shembull nëse njihet shenja e kthesës në të djathtë atëherë roboti do të kthehet djathtas, nëse njihet shenja e kthesës majtas atëherë roboti do të kthehet majtas, nëse asnjëra nuk njihet atëherë roboti do të vazhdojë përpara. Baza e të dhënave që do të përdoret është njohja zyrtare e shenjave të trafikut nga INI (2019) (Institut Fur Neuroinformatik), kjo grup i të dhënave ka 43 klasa megjithatë nevojiten vetëm dy; 00033 dhe 00034 dosje në grupin e të dhënave janë shenja të kthesës majtas dhe djathtas.

Hapi 1: Kërkesat

Kërkesat
Kërkesat
Kërkesat
Kërkesat
Kërkesat
Kërkesat

Kërkesat për këtë projekt janë si më poshtë:

Një robot arduino. (në thelb një arduino uno, një shofer motori dhe motorë) (nuk nevojitet nëse nuk përdorni një robot)

Një mjedër pi 4.

Një kamerë pi.

Softueri i kërkuar:

Python 3.

CV e hapur 4.

Rrjedha e tensionit

arduino IDE (nuk nevojitet nëse nuk përdorni robot)

Ros (nuk nevojitet nëse nuk përdorni robot)

Cilado qoftë ideja juaj e preferuar e pitonit (Për mjedrën pi, unë përdor Thonny).

Për të konfiguruar OpenCV dhe Tensorflow, ndiqni udhëzimet e Adrianit. Lidhja:

Unë rekomandoj të shikoni sa më shumë mësime të tij, ato janë vërtet interesante dhe janë të dobishme si për fillestarët ashtu edhe për ndërmjetësit.

Hapi 2: Trajnimi i të dhënave

Skenari i trenit është krijuar për të hyrë në grupin e të dhënave i cili përpilon rreth 50, 000 imazhe nga 43 klasa. Skenari është shkruar në python, duke përdorur një sërë bibliotekash: os - kjo është për lidhjen e shkrimit python me drejtorinë e duhur ku ndodhet grupi i të dhënave. Matplotlib - kjo është për shfaqjen e të dhënave nga modeli i trajnimit. Tensorflow dhe keras - këto janë bibliotekat e përdorura për të krijuar modelin e rrjetit nervor artificial, ato përdoren për të hartuar modelin. Numpy - kjo bibliotekë është për shndërrimin e imazheve në një grup i cili më pas mund të vendoset përmes modelit për të marrë një parashikim.

Skripti i bashkangjitur është kodi piton për të bërë një model nga grupi i të dhënave. Kjo konsiston në 2D konvolucionale me një hyrje (5, 5) dhe një aktivizim të refuzimit pastaj bashkimit, pasi kjo të bëhet hyrja kalon përmes një konvolucioni tjetër me një hyrje (3, 3) me të njëjtin aktivizim dhe bashkim. Kjo ndodh për herë të fundit para se të rrafshohet dhe pastaj dendësia aplikohet në sasinë e klasave që ka, në këtë rast 43.

Hapi tjetër ishte përpilimi i modelit. Kjo është pjesa që vendos optimizuesin, një sgd ishte më e përshtatshme pasi që kjo ishte e ngjashme me optimizuesin e përdorur në detyrën 1. Sgd qëndron për zbritjen e gradientit stokastik. Gjithashtu brenda përpiluesit humbja duhet të vendoset, zgjedhja e një humbje të rrallë_kategorike_krosentropike është përshtatja më e mirë meqenëse kategoritë janë të plota dhe modeli do të nxjerrë një parashikim për secilën klasë si një notim midis 0 dhe 1. 1 duke qenë 100% saktësi.

Pasi përpiluesi të jetë i plotë, një gjenerator duhet të aplikohet që modeli të fillojë përpunimin e hyrjeve të imazhit. Gjeneratori përbëhet nga pjesë të shumta: seti i trajnimit - kjo është lidhja me grupin e të dhënave të përdorur për trajnim, hapat_per_epoch - ky është numri i hapave për epokë që kërkohen, epoka - këto janë sa herë programi do të përsëritet përmes një grupi të plotë të të dhënave, validation_data - kjo është lidhja me grupin e të dhënave të përdorur për vlefshmëri, hapat e validimit - numri i hapave të përdorur për validim, validimi ndodh në fund të çdo epoke.

Në përgjithësi, një fshirje e plotë e të gjithë grupit të të dhënave duhet të jetë e plotë për një epokë. Prandaj, për shembull, një grup i të dhënave prej 1024 imazhe do të kërkojë: Madhësia e serisë = 32, Hapat për epokë = 32, epokat = 1. Çdo hap përfshin të gjithë madhësinë e serisë, kështu që me një madhësi të serisë prej 32 hapat do të jenë 32. Nga ana tjetër është mirë që të keni një madhësi më të madhe të serisë sesa numri i klasave, kjo ndodh sepse nëse madhësia e serisë është më e vogël atëherë secili hap nuk mund të përfshijë një imazh nga secila klasë.

Pasi modeli të ketë përfunduar trajnimin, duke përdorur matplotlib programi do të bëjë një grafik të rezultateve, kjo tregon historinë e trajnimit nga fillimi në fund. Grafiku përbëhet nga saktësia, saktësia e vlefshmërisë, humbja dhe humbja e vlefshmërisë, kjo është e ndarë në epokë për të treguar sesi përparoi trajnimi. Faza përfundimtare është të ruani modelin si një skedar.h5 i cili mund të arrihet më vonë për procesin e parashikimit. Ruajtja e modelit do të thotë që çdo herë që programi i parashikimit të ekzekutohet programi i trajnimit nuk ka nevojë të ekzekutohet përsëri. Programi i trajnimit mund të zgjasë deri në 10 minuta për një epokë në një pi mjedër.

Bashkangjitur është skenari i Trajnimit:

Hapi 3: Zbatimi i Parashikimeve të Kamerave Pi

Programi tjetër është skenari i parashikimit dhe botuesit.

Faza e parë është ngarkimi i modelit duke përdorur model.load (). Faza e dytë është përsëritja përmes kornizave nga kamera pi duke përdorur opencv dhe më pas ndryshimi i madhësisë së kornizës në të njëjtën madhësi me madhësitë e dhëna të përdorura në fazën e trajnimit, 32 x 32 piksele. Pasi të bëhet kjo, korniza e re e ndryshuar vendoset përmes modelit duke përdorur model.predict () e cila nxjerr një matricë, secili element i matricës është një notim nga 0 në 1, indeksi i elementit është i njëjtë me klasën që përfaqëson, prandaj elementi i parë është klasa një dhe numri është parashikimi i sigurisë së imazhit që është nga ajo klasë. P.sh.

SHENIM: Nëse nuk përdorni anën e robotit. Thjesht hiqni rreshtat:

"importo rospy"

def folës (drejtim):

mesazh = String ()

pub = rospy. Publisher ('robot', String, queue_size = 10)

rospy.init_node ('folës', anonim = E vërtetë)

mesazh = drejtim

rospy.loginfo (mesazh)

pub.publish (mesazh)"

"folës (drejtim)"

Bashkangjitur është skenari i kamerës Pi.

Hapi 4: Roboti Arduino

Hapi i fundit është skripti i programit robot.

Kjo është shkruar në C ++ dhe është një skedar.ino për arduino uno. Programi kërkon bibliotekën ros e cila mund të gjendet në menaxherin e bibliotekave brenda ide. Pasi të jetë importuar, ka skedarë shembull, kam zgjedhur të zgjeroj skedarin led blink pasi kjo do të bënte një objektiv të ngjashëm me atë që më duhej. Programi vazhdon të lakojë derisa fuqia të shkëputet, së pari dëgjon robotin e temës, kur kap një komandë nga ajo temë do të ketë një deklaratë if për të parë atë që thotë komanda. Nëse komanda lihet atëherë skripti përdor metodën e kthesës majtas, nëse komanda është e djathtë atëherë do të ekzekutojë metodën e kthesës djathtas dhe përndryshe do të ekzekutojë metodën përpara. Këto tri metoda janë shumë të ngjashme me njëra -tjetrën, ato thonë që kunjat dixhitale të jenë LOW (tokë) ose 100 (PWM) kjo është për të bërë që roboti të mos jetë shumë i shpejtë duke i thënë shoferit të motorit që të lejojë vetëm pak tensioni jashtë. Rendi i këtyre daljeve është ajo që e bën robotin të kthehet majtas dhe djathtas ose të shkojë përpara, kjo është për shkak të orientimit të tensionit që shkon te motorët.

Bashkangjitur është shkrimi.ino për arduino.

Hapi 5: Testimi

Duke testuar
Duke testuar
Duke testuar
Duke testuar
Duke testuar
Duke testuar

Imazhet janë bashkangjitur kështu që projekti nga fillimi në fund. Imazhi i parë tregon trajnimin në proces. Pasi të ketë përfunduar, shfaqet një printim nga modeli i bërë. Imazhi i tretë tregon një parashikim nga skenari i trajnimit. kjo është faza e fundit e skenarit të trajnimit. Nëse shikoni në dosjen ku është skripti i trajnimit, është bërë një grafik dhe një model. Grafiku duhet të duket si imazhi 4 këtu, kjo tregon historinë e trajnimit nga fillimi në fund.

Imazhi përfundimtar është gjatë ekzekutimit të skriptit të kamerës pi, është një transmetim i drejtpërdrejtë nga kamera pi. bëhet një parashikim në secilën kornizë dhe parashikimi printohet në terminal. Korniza tregon atë që kamera po sheh.

Bashkangjitur është raporti im i Universitetit për këtë projekt. Ju lutemi lexoni për më shumë detaje të projektit.

Hapi 6: Të gjithë skedarët shtesë

Të gjithë skedarët shtesë
Të gjithë skedarët shtesë

Disa nga këto ishin testimi i skedarëve që bëra gjatë rrugës.

Recommended: