Съдържание:
- Стъпка 1: Изисквания
- Стъпка 2: Обучение на данни
- Стъпка 3: Прилагане на прогнозите за Pi камера
- Стъпка 4: Arduino Robot
- Стъпка 5: Тестване
- Стъпка 6: Всички допълнителни файлове
Видео: Raspberry Pi 4 Робот за разпознаване на пътни знаци: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Тази инструкция се основава на моя университетски проект. Целта беше да се създаде система, в която невронна мрежа анализира изображение и след това въз основа на разпознаването ще каже на arduino робот да се движи през Ros.
Например, ако се разпознае знак за завой надясно, тогава роботът ще завие надясно, ако се разпознае знак за завой наляво, тогава роботът ще завие наляво, ако нито един от тях не бъде разпознат, тогава роботът ще продължи напред. Наборът от данни, който ще се използва, е официалното разпознаване на пътни знаци от INI (2019) (Institut Fur Neuroinformatik), този набор от данни има 43 класа, но са необходими само два; 00033 и 00034 папки в набора от данни са леви и десни мигачи.
Стъпка 1: Изисквания
Изискванията за този проект са следните:
Ардуино робот. (основно arduino uno, драйвер на двигател и двигатели) (не е необходимо, ако не използвате робот)
Малина pi 4.
Пи камера.
Необходим софтуер:
Python 3.
OpenCV 4.
Тензорен поток.
arduino IDE (не е необходимо, ако не използвате робот)
Ros (не е необходимо, ако не използвате робот)
Какъвто и да е вашият любим python ide (На малиновото пи използвам Тони).
За да настроите OpenCV и Tensorflow, следвайте инструкциите на Adrian. Връзка:
Препоръчвам да разгледате възможно най -много негови уроци, те са наистина интересни и са полезни както за начинаещи, така и за междинни.
Стъпка 2: Обучение на данни
Скриптът на влака е предназначен за достъп до набора от данни, който съставя около 50 000 изображения от 43 класа. Скриптът е написан на python, използвайки различни библиотеки: os - това е за свързване на скрипта на python с правилната директория, където се намира наборът от данни. Matplotlib - това е за показване на данните от модела на обучение. Tensorflow и keras - това са библиотеките, използвани за създаване на модел на изкуствена невронна мрежа, те се използват за проектиране на модела. Numpy - тази библиотека е за превръщане на изображения в масив, който след това може да бъде поставен през модела за извличане на прогноза.
Прикрепеният скрипт е кодът на python за създаване на модел от набора от данни. Това се състои от сверточен 2D с (5, 5) вход и активиране на relu, след това обединяване, след като това бъде направено, входът преминава през друга конволюция с (3, 3) вход със същото активиране и обединяване. Това се случва за последен път, преди да се сплеска и след това плътността се прилага към количеството класове, в този случай 43.
Следващата стъпка беше компилирането на модела. Това е частта, която задава оптимизатора, sgd е най -подходящият, тъй като това е подобно на оптимизатора, използван при задание 1. Sgd означава стохастичен градиентен спускане. Също така в компилатора трябва да се зададе загубата, като изборът на sparse_categorical_crossentropy загубата е най -подходящият, тъй като категориите са като цели числа и моделът ще изведе прогноза за всеки клас като плувка между 0 и 1. 1 е 100% точност.
След като компилаторът завърши, трябва да се приложи генератор за модела, за да започне обработката на входовете на изображението. Генераторът се състои от множество части: training_set - това е връзката към набора от данни, използван за обучение, steps_per_epoch - това е необходимото число стъпки за епоха, epochs - това е колко пъти програмата ще повтори пълния набор от данни, validation_data - това е връзката към набора от данни, използван за валидиране, validation_steps - броят на стъпките, използвани за валидиране, валидирането се случва в края на всяка епоха.
По принцип трябва да се извърши пълно изтриване на целия набор от данни за епоха. Следователно например набор от данни от 1024 изображения ще изисква: Размер на партидата = 32, Стъпки за епоха = 32, Епохи = 1. Всяка стъпка включва целия размер на партидата, така че с размер на партида от 32 стъпките ще бъдат 32. От друга страна От друга страна, най -добре е да имате по -голям размер на партидата от броя на класовете, това е така, защото ако размерът на партидата е по -малък, тогава всяка стъпка не може да включва изображение от всеки клас.
След като моделът приключи обучението, с помощта на matplotlib програмата ще направи графика на резултатите, това показва историята на обучението от началото до края. Графиката се състои от точност, точност на валидиране, загуба и загуба на валидиране, която се разделя на епохи, за да покаже как е преминало обучението. Последният етап е запазването на модела като.h5 файл, който може да бъде достъпен по -късно за процеса на прогнозиране. Запазването на модела означава, че всеки път, когато програмата за предвиждане се изпълнява, програмата за обучение не е необходимо да се стартира отново. Програмата за обучение може да отнеме до 10 минути на епоха на малиново пи.
Приложен е учебният скрипт:
Стъпка 3: Прилагане на прогнозите за Pi камера
Следващата програма е предсказването и скриптът на издателя.
Първият етап е зареждането на модела с помощта на model.load (). Вторият етап е да повторите кадрите от pi камерата с помощта на opencv и след това да преоразмерите рамката до същия размер като входните размери, използвани в етапа на обучение, 32 x 32 пиксела. След като това е направено, новият преоразмерен кадър се прокарва през модела, използвайки model.predict (), който извежда матрица, всеки елемент от матрицата е с плаващо число от 0 до 1, индексът на елемента е същият като класа, който представлява, следователно първият елемент е клас първи, а числото е прогнозата за сигурността на изображението от този клас. Напр.
ЗАБЕЛЕЖКА: Ако не използвате страната на робота. Просто премахнете редовете:
"внос rospy"
def talker (посока):
message = String ()
pub = rospy. Publisher ('robot', String, queue_size = 10)
rospy.init_node ('говорител', анонимен = Вярно)
съобщение = посока
rospy.loginfo (съобщение)
pub.publish (съобщение)"
„говорещ (посока)“
Приложен е скриптът на камерата Pi.
Стъпка 4: Arduino Robot
Последната стъпка е програмният скрипт на робота.
Това е написано на C ++ и е.ino файл за arduino uno. Програмата изисква библиотеката ros, която може да бъде намерена в мениджъра на библиотеките в ide. След като това се импортира, има примерни файлове, избрах да разширя светодиодния мигащ файл, тъй като това би направило подобна цел на това, от което имах нужда. Програмата продължава да се върти, докато захранването се изключи, първо слуша тематичния робот, когато хване команда от тази тема, ще има оператор if, за да види какво казва командата. Ако командата е наляво, тогава скриптът изпълнява метода завой наляво, ако командата е дясна, тогава той ще изпълни метода завой надясно и в противен случай ще изпълни метода напред. Тези три метода са много сходни помежду си, те казват на цифровите щифтове да бъдат или НИСКИ (заземени), или 100 (ШИМ), това е така, за да може роботът да не е твърде бърз, като казва на шофьора на двигателя да позволи само малко изходно напрежение. Редът на тези изходи е това, което кара робота да завива наляво и надясно или да върви напред, това се дължи на ориентацията на напрежението, отиващо към двигателите.
Приложен е.ino скриптът за arduino.
Стъпка 5: Тестване
Изображенията са приложени, така че проектът от началото до края. Първото изображение показва обучението в процес. След като това приключи, се показва разпечатка на направения модел. Третото изображение показва прогноза от учебния скрипт. това е последният етап от учебния скрипт. Ако погледнете в папката, в която е скриптът за обучение, са направени графика и модел. Графиката трябва да изглежда като изображение 4 тук, това показва историята на обучението от началото до края.
Окончателното изображение е, докато се изпълнява скриптът на pi камерата, това е поток на живо от камерата pi. на всеки кадър се прави прогноза и прогнозата се отпечатва в терминала. Рамката показва какво вижда камерата.
Приложен е моят университетски доклад за този проект. Моля, прочетете за повече подробности по проекта.
Стъпка 6: Всички допълнителни файлове
Някои от тях бяха файлове за тестване, които направих по пътя.
Препоръчано:
Леки пътни конструкции Semarang: 8 стъпки
Леки пътни конструкции Семаранг: Училищен проект Като училищен проект за Ротердамския университет за приложни науки трябваше да измислим решение както за повишаване нивото на водата, така и за потъването на земята в Семаранг, Индонезия. Следните продукти се произвеждат по време на този p
Контролер за пътни сигнали: 4 стъпки
Контролер на пътни сигнали: Често съществуват сценарии, при които са необходими гъвкави последователности от пътни сигнали за координиране на трафика през кръстовището на оживена улица и леко използвана странична улица. В такива ситуации последователностите могат да бъдат контролирани с помощта на различен
Opencv разпознаване на лица, обучение и разпознаване: 3 стъпки
Откриване, обучение и разпознаване на лица с Opencv: OpenCV е библиотека за компютърно зрение с отворен код, която е много популярна за изпълнение на основни задачи по обработка на изображения, като замъгляване, смесване на изображения, подобряване на изображението, както и качество на видеото, праг и т.н. В допълнение към обработката на изображения, доказва се
Разпознаване и разпознаване на лица - Arduino Face ID Използване на OpenCV Python и Arduino .: 6 стъпки
Разпознаване и разпознаване на лица | Arduino Face ID Използване на OpenCV Python и Arduino .: Разпознаване на лице AKA Face ID е една от най -важните функции на мобилните телефони в днешно време. И така, имах въпрос "мога ли да имам идентификационен номер на лицето за моя проект Arduino" и отговорът е да … Пътуването ми започна по следния начин: Стъпка 1: Достъп до нас
Разпознаване на лице+разпознаване: 8 стъпки (със снимки)
Face Detection+разпознаване: Това е прост пример за стартиране на разпознаване и разпознаване на лица с OpenCV от камера. ЗАБЕЛЕЖКА: НАПРАВИХ ТОЗИ ПРОЕКТ ЗА СЪДЕЖДАНЕ НА СЕНЗОРИ И ИЗПОЛЗВАХ КАМЕРАТА КАТО СЕНЗОР ЗА ПРОСЛЕДВАНЕ И ПРИЗНАВАНЕ НА ЛИЦА. И така, нашата цел В тази сесия, 1. Инсталирайте Anaconda