Мазмұны:
- 1 -қадам: талаптар
- 2 -қадам: Деректерді оқыту
- 3 -қадам: Pi Camera болжамдарын іске асыру
- 4 -қадам: Arduino робот
- 5 -қадам: тестілеу
- 6 -қадам: Барлық қосымша файлдар
Бейне: Raspberry Pi 4 жол белгілерін тану роботы: 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Бұл нұсқаулық менің университет жобасына негізделген. Мақсаты - нейрондық желі суретті талдайтын, содан кейін тануға негізделген ардуино роботына Рос арқылы қозғалуды айтатын жүйе құру.
Мысалы, егер оңға бұрылу белгісі танылса, робот оңға бұрылады, егер солға бұрылу белгісі танылса, робот солға бұрылады, егер екеуі де танылмаса, робот алға қарай жалғастырады. Қолданылатын деректер жиынтығы INI (2019) жол белгілерін ресми тану болып табылады (Institut Fur Neuroinformatik), бұл деректер қорында 43 класс бар, тек екеуі қажет; Деректер қорындағы 00033 және 00034 қалталар солға және оңға бұрылу белгілері болып табылады.
1 -қадам: талаптар
Бұл жобаға қойылатын талаптар:
Ардуино роботы. (негізінен arduino uno, мотор жүргізушісі және қозғалтқыштар) (егер сіз роботты пайдаланбасаңыз қажет емес)
Таңқурай пи 4.
Pi камерасы.
Қажетті бағдарламалық қамтамасыз ету:
Python 3.
OpenCV 4.
Тензорлау.
arduino IDE (егер сіз роботты пайдаланбасаңыз қажет емес)
Роз (егер сіз роботты пайдаланбасаңыз қажет емес)
Сіздің сүйікті питон идеяңыз қандай болса да (таңқурай пиінде мен Тонниді қолданамын).
OpenCV мен Tensorflow орнату үшін Adrian нұсқауларын орындаңыз. Сілтеме:
Мен оның оқулықтарын мүмкіндігінше қарауға кеңес беремін, олар өте қызықты және жаңадан бастаушыларға да, орта деңгейге де пайдалы.
2 -қадам: Деректерді оқыту
Пойыз сценарийі 43 класты 50 000 суреттерден тұратын жинақталған мәліметтер қорына кіруге арналған. Сценарий әр түрлі кітапханаларды қолдана отырып, python тілінде жазылған: os - бұл питон сценарийін мәліметтер базасы орналасқан дұрыс каталогпен байланыстыруға арналған. Matplotlib - бұл жаттығу үлгісіндегі деректерді көрсетуге арналған. Tensorflow және keras - бұл жасанды нейрондық желі моделін жасау үшін пайдаланылатын кітапханалар, олар модельді жобалау үшін қолданылады. Numpy - бұл кітапхана суретті массивке айналдыруға арналған, содан кейін болжамды алу үшін модель арқылы өтуге болады.
Қосылған сценарий - бұл деректер жиынынан модель жасауға арналған питон коды. Бұл (5, 5) кірісі бар конвульсиялы 2D -ден және релюді қосудан, содан кейін біріктіруден тұрады, егер бұл орындалса, кіріс (3, 3) кірісі бірдей активация мен біріктіру арқылы басқа конвульсиядан өтеді. Бұл тегістелгенге дейін соңғы рет орын алады, содан кейін тығыздық сыныптардың санына қолданылады, бұл жағдайда 43.
Келесі қадам модельді құрастыру болды. Бұл оптимизаторды орнататын бөлігі, sgd ең қолайлы болды, себебі бұл 1 -тапсырмада қолданылатын оптимизаторға ұқсас болды, Sgd стохастикалық градиент түсуін білдіреді. Сондай -ақ компиляторда шығынды орнату қажет, sparse_categorical_crossentropy жоғалтуды таңдау ең қолайлы, себебі санаттар бүтін сандар болып табылады және модель әр сынып үшін 0 мен 1 арасындағы өзгермелі болжамды шығарады. 100% дәлдік.
Компилятор аяқталғаннан кейін модельге кескін кірістерін өңдеуді бастау үшін генераторды қолдану қажет. Генератор бірнеше бөліктен тұрады: training_set - бұл дайындық үшін қолданылатын деректер жиынының сілтемесі, steps_per_epoch - бұл әр дәуірге қажет кезеңдердің саны, дәуірлер - бұл бағдарлама толық деректер жиынтығымен қанша рет қайталанады, validation_data - бұл тексеру үшін қолданылатын деректер жиынына сілтеме, validation_steps - тексеру үшін қолданылатын қадамдар саны, валидация әр дәуірдің соңында болады.
Әдетте, барлық деректер жиынтығын бір уақытта жою қажет. Мысалы, 1024 кескіннің деректер жиынтығына мыналар қажет болады: Топтаманың өлшемі = 32, Әр кезеңге арналған қадамдар = 32, дәуірлер = 1. Әр қадамға партияның барлық өлшемі кіреді, сондықтан партияның өлшемі 32 болғанда қадамдар 32 болады. қолмен, пакеттердің саны сыныптар санынан үлкен болғаны дұрыс, себебі егер пакеттің өлшемі кішірек болса, онда әр қадамға әр сыныптан сурет қосуға болмайды.
Модель жаттығуды аяқтағаннан кейін, matplotlib көмегімен бағдарлама шығыс графигін жасайды, бұл жаттығудың басынан аяғына дейін тарихын көрсетеді. График дәлдіктен, тексерудің дәлдігінен, жоғалудан және валидацияның жоғалуынан тұрады, бұл әр кезеңге бөлініп, жаттығудың қалай өткенін көрсетеді. Соңғы кезең - бұл модельді.h5 файлы ретінде сақтау, оған кейін болжау процесі үшін қол жеткізуге болады. Үлгіні сақтау дегеніміз, болжау бағдарламасы орындалған сайын, оқу бағдарламасын қайта іске қосудың қажеті жоқ. Оқу бағдарламасы таңқурай пирогында әр дәуірде 10 минутқа дейін созылуы мүмкін.
Тренинг сценарийі қоса берілген:
3 -қадам: Pi Camera болжамдарын іске асыру
Келесі бағдарлама - болжау мен баспагер сценарийі.
Бірінші кезең - model.load () көмегімен үлгіні жүктеу. Екінші кезең - opencv көмегімен pi камерасынан кадрларды қайталау, содан кейін кадрды жаттығу кезеңінде қолданылатын кіріс өлшемдері 32х32 пиксель өлшеміне дейін өзгерту. Бұл әрекетті орындағаннан кейін, матрицаны шығаратын model.predict () көмегімен модель арқылы жаңа өлшем өлшемі қойылады, матрицаның әр элементі 0 -ден 1 -ге дейінгі флот болып табылады, сондықтан элементтер индексі ол ұсынатын класспен бірдей, демек бірінші элемент - бірінші сынып, ал сан - бұл кластың имиджінің сенімділігін болжау. Мысалы,
ЕСКЕРТПЕ: Егер сіз робот жағын пайдаланбасаңыз. Жолдарды алып тастаңыз:
«импорттық росси»
«Def -talker (бағыт):
хабарлама = String ()
pub = rospy. Publisher ('робот', String, queue_size = 10)
rospy.init_node ('сөйлеуші', анонимді = Рас)
хабар = бағыт
rospy.loginfo (хабар)
pub.publish (хабар) »
«сөйлеуші (бағыт)»
Pi камерасының сценарийі бекітілген.
4 -қадам: Arduino робот
Соңғы қадам - робот бағдарламасының сценарийі.
Бұл C ++ тілінде жазылған және arduino uno үшін.ino файлы. Бағдарлама ros кітапханасын қажет етеді, оны кітапхана менеджерінен табуға болады. Бұл импортталғаннан кейін мысал файлдары бар, мен жыпылықтайтын файлды кеңейтуді таңдадым, себебі бұл маған қажет нәрсеге ұқсас мақсатты жасайды. Бағдарлама қуат ажыратылғанша циклды жалғастырады, алдымен тақырып роботы тыңдалады, егер ол осы тақырыптан пәрменді алса, онда команданың не айтқанын көру үшін if операторы болады. Егер пәрмен сол жақта болса, сценарий солға бұрылу әдісін қолданады, егер пәрмен дұрыс болса, ол оңға бұрылу әдісін іске қосады, әйтпесе ол алға жіберу әдісін қолданады. Бұл үш әдіс бір -біріне өте ұқсас, олар цифрлық түйреуіштердің LOW (жер) немесе 100 (PWM) болуы керектігін айтады, бұл робот мотор драйверіне сәл ғана рұқсат беруін айтып, тым жылдам емес. кернеу. Бұл роботтар роботты солға немесе оңға немесе алға қарай бұруға мәжбүр етеді, бұл қозғалтқыштарға түсетін кернеудің бағдарына байланысты.
Arduino үшін.ino сценарийі бекітілген.
5 -қадам: тестілеу
Жобаның басынан аяғына дейін суреттер қоса беріледі. Бірінші суретте дайындық процесі көрсетілген. Бұл аяқталғаннан кейін жасалған модельдің көшірмесі көрсетіледі. Үшінші сурет жаттығу сценарийінен болжамды көрсетеді. бұл жаттығу сценарийінің соңғы кезеңі. Егер сіз оқу сценарийі орналасқан қалтаға қарасаңыз, график пен модель жасалған. График мұнда 4 -сурет сияқты болуы керек, бұл жаттығудың басынан аяғына дейін тарихын көрсетеді.
Соңғы сурет - pi камерасының сценарийі жұмыс істеп тұрған кезде, бұл - камерадан тікелей эфир. әр кадрға болжам жасалады және терминалда баспа басылады. Рамка камераның не көріп тұрғанын көрсетеді.
Бұл жоба бойынша менің университет есебім қоса берілген. Жоба туралы толығырақ білу үшін оқыңыз.
6 -қадам: Барлық қосымша файлдар
Олардың кейбіреулері мен жол бойында жасаған файлдарды тексерді.
Ұсынылған:
Smart Watchz Corona белгілерін анықтайтын және деректерді тіркейтін: 10 қадам
Smart Watchz - Corona белгілерін анықтау және деректерді тіркеу мүмкіндігі: бұл LM35 және Accelerometer көмегімен серверде деректерді тіркеу арқылы Corona белгілерін анықтайтын Smartwatch. Rtc уақытты көрсету және телефонмен синхрондау үшін қолданылады және оны деректерді тіркеу үшін пайдаланады. Esp32 көкпен кортекс контроллері бар ми ретінде қолданылады
Raspberry Pi -де TensorFlow көмегімен кескінді тану: 6 қадам
Raspberry Pi-де TensorFlow көмегімен кескінді тану: Google TensorFlow-бұл деректер ағынының графиктерін қолдана отырып, сандық есептеуге арналған ашық бастапқы коды бар кітапхана. Оны Google машиналық және терең оқыту технологияларының әр түрлі саласында қолданады. TensorFlow бастапқыда Google Brai әзірледі
Май роботы: экзистенциалды дағдарысы бар Arduino роботы: 6 қадам (суреттермен)
Сары май роботы: экзистенциалды дағдарысы бар Arduino роботы: Бұл жоба «Рик пен Морти» анимациялық сериясына негізделген. Эпизодтардың бірінде Рик робот жасайды, оның жалғыз мақсаты - май әкелу. Брюсфейдің (Брюссель инженерлік факультетінің) студенттері ретінде бізде механикаға тапсырма бар
[Arduino роботы] Роботты қалай түсіруге болады - Бас бармақ роботы - Серво моторы - Бастапқы код: 26 қадам (суреттермен)
[Arduino роботы] Роботты қалай түсіруге болады | Бас бармақ роботы | Серво моторы | Бастапқы код: Бас бармақ роботы. MG90S сервоқозғалтқышының потенциометрі қолданылды. Бұл өте көңілді және оңай! Код өте қарапайым. Бұл шамамен 30 жол. Бұл қозғалысты түсіруге ұқсайды. Кез келген сұрақ немесе пікір қалдырыңыз! [Нұсқаулық] Бастапқы код https: //github.c
VRBOT (дауысты тану роботы): 10 қадам (суреттермен)
VRBOT (Дауысты тану роботы): Бұл нұсқаулықта біз дауыспен басқарылатын роботты (RC машинасына ұқсас) жасаймыз, яғни Дауысты тану. Мен сізге қосымша мәлімет беруді бастамас бұрын, бұл сөйлеуді тану емес, дауысты тану екенін білу керек