![Това ръка ли е? (Камера Raspberry Pi + Невронна мрежа) Част 1/2: 16 стъпки (със снимки) Това ръка ли е? (Камера Raspberry Pi + Невронна мрежа) Част 1/2: 16 стъпки (със снимки)](https://i.howwhatproduce.com/images/002/image-3672-109-j.webp)
Съдържание:
- Стъпка 1: Видео
- Стъпка 2: Хардуер
- Стъпка 3: Парче код
- Стъпка 4: Получаване на изображения
- Стъпка 5: Използвани инструменти и език
- Стъпка 6: Подготовка на набора от данни за обучение
- Стъпка 7: Невронна мрежа
- Стъпка 8: Обучение на невронна мрежа
- Стъпка 9: Тестване на невронна мрежа
- Стъпка 10: Резултат и следваща част…
- Стъпка 11: Откриване на обект
- Стъпка 12: Видео
- Стъпка 13: Етикетиране
- Стъпка 14: Етикетиране на GUI
- Стъпка 15: Необходими библиотеки
- Стъпка 16: Оставащи клетки
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36
![Това ръка ли е? (Камера Raspberry Pi + Невронна мрежа) Част 1/2 Това ръка ли е? (Камера Raspberry Pi + Невронна мрежа) Част 1/2](https://i.howwhatproduce.com/images/002/image-3672-110-j.webp)
![Това ръка ли е? (Камера Raspberry Pi + Невронна мрежа) Част 1/2 Това ръка ли е? (Камера Raspberry Pi + Невронна мрежа) Част 1/2](https://i.howwhatproduce.com/images/002/image-3672-111-j.webp)
![Това ръка ли е? (Камера Raspberry Pi + Невронна мрежа) Част 1/2 Това ръка ли е? (Камера Raspberry Pi + Невронна мрежа) Част 1/2](https://i.howwhatproduce.com/images/002/image-3672-112-j.webp)
Преди няколко дни нараних китката на дясната си ръка във фитнес залата. Впоследствие всеки път, когато използвах компютърната мишка, това причиняваше много болка поради стръмния ъгъл на китката.
Точно тогава ме удари "не би ли било чудесно, ако можем да преобразуваме всякаква повърхност в тракпад" и не знам защо, но по някаква причина се сетих за нея, филма НЕ, ще ви позволя да разберете навън. Това беше вълнуваща мисъл, но не знаех дали мога да го направя, реших да опитам.
Тази статия улавя това, което излезе от нея.
Преди да започнем, имам отказ от отговорност-
„В края на тази статия не можах да превърна нито една повърхност в тракпад, но не научих много и добавих големи инструменти към моя арсенал. Надявам се, че това се случва и с вас '
Да започваме.
Стъпка 1: Видео
![Image Image](https://i.howwhatproduce.com/images/002/image-3672-114-j.webp)
![](https://i.ytimg.com/vi/sHpu-sWhGns/hqdefault.jpg)
Ето едно малко 5 -минутно видео, обхващащо всички стъпки. Погледни.
Стъпка 2: Хардуер
![Хардуер Хардуер](https://i.howwhatproduce.com/images/002/image-3672-115-j.webp)
Аз инсталирам малинов пи заедно с малина пи камера на височина около 45 см. Това ни дава площ за наблюдение от около 25x25 cm под камерата.
Raspberry pi и raspberry pi camera са лесно достъпни, просто го потърсете в Google и трябва да можете да намерите местен магазин.
Разгледайте тази връзка или някой от плейлиста ми за Raspberry pi, за да стартирате безглавното си пи.
След тази настройка се нуждаем от парче код, който решава дали има ръка в областта, която камерата наблюдава, и ако да, къде е тя.
Стъпка 3: Парче код
![Парче код Парче код](https://i.howwhatproduce.com/images/002/image-3672-116-j.webp)
![Парче код Парче код](https://i.howwhatproduce.com/images/002/image-3672-117-j.webp)
Парче код, което ни позволява да решим дали има ръка в област на интерес, използва нещо, наречено Neural Network. Те попадат в категорията програмиране, при която ние не дефинираме правила за вземане на решение, но показваме достатъчно данни за невронната мрежа, че тя сама определя правилата.
В нашия случай, вместо да кодираме как изглежда ръката, ние показваме изображения от невронна мрежа, заснети от малиново пи, което съдържа ръка и което не съдържа ръка. Тази фаза се нарича обучение на невронна мрежа, а използваните изображения се наричат набор от данни за обучение.
Стъпка 4: Получаване на изображения
![Получаване на изображения Получаване на изображения](https://i.howwhatproduce.com/images/002/image-3672-118-j.webp)
Влязох отдалечено в моето малиново пи и заснех куп изображения с помощта на следната команда.
sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o кадър%04d.jpg
Заснех 80 изображения с ръка и 80 изображения, които не съдържат ръка. 160 изображения не са достатъчни за правилно обучение на невронна мрежа, но трябва да са достатъчни за доказателство на концепцията.
Освен 160 изображения, заснех още 20 изображения, за да тествам нашата мрежа, след като тя бъде обучена.
След като наборът от данни беше готов, започнах да пиша код за невронна мрежа.
Стъпка 5: Използвани инструменти и език
![Използвани инструменти и език Използвани инструменти и език](https://i.howwhatproduce.com/images/002/image-3672-119-j.webp)
![Използвани инструменти и език Използвани инструменти и език](https://i.howwhatproduce.com/images/002/image-3672-120-j.webp)
Написах моята невронна мрежа в библиотека за дълбоко обучение на Python, наречена Keras, и кодът е написан на тетрадка jupyter от anaconda navigator.
Стъпка 6: Подготовка на набора от данни за обучение
![Подготовка на набора от данни за обучение Подготовка на набора от данни за обучение](https://i.howwhatproduce.com/images/002/image-3672-121-j.webp)
![Подготовка на набора от данни за обучение Подготовка на набора от данни за обучение](https://i.howwhatproduce.com/images/002/image-3672-122-j.webp)
![Подготовка на набора от данни за обучение Подготовка на набора от данни за обучение](https://i.howwhatproduce.com/images/002/image-3672-123-j.webp)
![Подготовка на набора от данни за обучение Подготовка на набора от данни за обучение](https://i.howwhatproduce.com/images/002/image-3672-124-j.webp)
Първо (Изображение #1) Включих всички библиотеки, необходими за този проект, който включва PIL, matplotlib, numpy, os и Keras. Във втората клетка на бележника на Python (Изображение #2) дефинирам пътища към набора от данни и отпечатвам броя на пробите. Сега трябва да заредим всички изображения в масив от numpy, следователно в третата клетка (Изображение #2) създадох масив от numpy от 82 (брой ръчна проба) +75 (брой на неръчна проба), т.е. 157x100x100x3. 157 е общият брой изображения, които имам, 100x100 е нашият размер на изображението с преоразмеряване и 3 е за червени, зелени и сини цветни слоеве в изображението.
В четвърта и пета клетка зареждаме изображения, съдържащи ръка, последвани от изображения, които не съдържат ръка в масив numpy. В шестата клетка ние разделяме всяка стойност на 255, следователно ограничаващият диапазон от 0 до 1. (Изображение #3)
Съжалявам, ако приложените изображения не са достатъчно добри. Ето връзка към хранилището GITHUB, за да разгледате кода. Не забравяйте да замените имената на пътищата на директорията с вашия път:).
Придвижване.
След това трябва да маркираме всяко изображение, така че ние създаваме едноизмерен масив от numpy с дължина 157. Първите 82 записа са зададени на 1, а останалите 75 записа са настроени на 0, пренасящи невронна мрежа, като първите 82 изображения са от един клас, а останалите са от друг. (Изображение #4)
Сега нека създадем невронна мрежа.
Стъпка 7: Невронна мрежа
![Невронна мрежа Невронна мрежа](https://i.howwhatproduce.com/images/002/image-3672-125-j.webp)
![Невронна мрежа Невронна мрежа](https://i.howwhatproduce.com/images/002/image-3672-126-j.webp)
В девета клетка дефинираме нашата невронна мрежа. Той съдържа три повторения на слоя за свиване, последван от слоевете maxpool със съответно 8, 12 и 16 филтъра за свиване. След това имаме две плътни невронни мрежи. Прикачете две изображения за тази стъпка. Първият е снимка на код, който създава невронна мрежа, а вторият е картинно представяне на невронна мрежа с изходно измерение и операции с анотация.
Стъпка 8: Обучение на невронна мрежа
![Обучителна невронна мрежа Обучителна невронна мрежа](https://i.howwhatproduce.com/images/002/image-3672-127-j.webp)
В десетата клетка ние конфигурираме оптимизатора на невронни мрежи на „adam“и функцията за загуба на „binary_crossentropy“. Те играят важна роля в актуализирането на теглата на мрежата. Накрая, когато изпълняваме единадесета клетка, невронната мрежа започва да се обучава. Докато мрежата тренира, погледнете функцията за загуба и се уверете, че тя намалява.
Стъпка 9: Тестване на невронна мрежа
![Тестване на невронна мрежа Тестване на невронна мрежа](https://i.howwhatproduce.com/images/002/image-3672-128-j.webp)
След като невронната мрежа е обучена, трябва да подготвим набор от тестови данни. Повтаряме процедурата, направена за подготовка на тренировъчен набор в 3 -та, 4 -та, 5 -та и 6 -та клетка върху тестови данни, за да създадем набор от тестове. Ние също така подготвяме етикет за набор от тестове, но този път пускаме модел върху тези набори от данни, за да получим прогнози, а не да тренираме.
Стъпка 10: Резултат и следваща част…
![Резултат и следваща част… Резултат и следваща част…](https://i.howwhatproduce.com/images/002/image-3672-129-j.webp)
Получих точност на теста от 88%, но вземете това с щипка сол, тъй като наборът от данни, използван за обучение и тестване на този модел, е много, много малък и недостатъчен за правилното обучение на този модел.
Както и да е, надявам се тази статия да ви е харесала. Моето намерение зад това упражнение все още не е завършено и внимавайте за втората част. Ще го кача възможно най -скоро.
В следващата част ще обучим друга невронна мрежа, която ще ни каже местоположението на ръката в изображение, открито с ръка.
Всички запитвания са добре дошли.
Ако някой се интересува от използването на моя малък набор от данни, да ме уведоми в коментарите. Ще го направя на разположение.
Благодаря за четенето. Ще се видим скоро с втората част дотогава защо не създадете и обучите невронна мрежа.
Редактиране:- Следващите стъпки са за втора част.
Стъпка 11: Откриване на обект
![Откриване на обект Откриване на обект](https://i.howwhatproduce.com/images/002/image-3672-130-j.webp)
В предишните стъпки създадохме NN, която ни казва дали тестовото изображение съдържа ръка или не. Е, какво следва? Ако NN класифицира изображението като съдържащо ръка, бихме искали да знаем местоположението на ръката. Това се нарича откриване на обекти в литературата за компютърно зрение. Така че нека тренираме NN, който прави точно същото.
Стъпка 12: Видео
![Image Image](https://i.howwhatproduce.com/images/002/image-3672-132-j.webp)
![](https://i.ytimg.com/vi/i4iCdwSUSU4/hqdefault.jpg)
3 -минутно видео, обясняващо всички останали стъпки. Погледни.
Стъпка 13: Етикетиране
![Етикетиране Етикетиране](https://i.howwhatproduce.com/images/002/image-3672-133-j.webp)
![Етикетиране Етикетиране](https://i.howwhatproduce.com/images/002/image-3672-134-j.webp)
![Етикетиране Етикетиране](https://i.howwhatproduce.com/images/002/image-3672-135-j.webp)
Ако искате невронна мрежа да изведе местоположението на ръката, ние трябва да я обучим по такъв начин, т.е. за разлика от предишната невронна мрежа, където всяко изображение беше означено или с ръка, и без ръка. Този път всички изображения с ръка ще имат четири етикета, съответстващи на диагоналните координати на граничната рамка около ръката в това изображение.
Прикаченото изображение на csv файл съдържа етикет за всяко изображение. Моля, имайте предвид, че координатите са нормализирани с размер на изображението, т.е. ако горната X координата е на 320 -и пиксел в изображението с ширина 640 пиксела, ние ще го обозначим като 0,5.
Стъпка 14: Етикетиране на GUI
![Етикетиране на GUI Етикетиране на GUI](https://i.howwhatproduce.com/images/002/image-3672-136-j.webp)
![Етикетиране на GUI Етикетиране на GUI](https://i.howwhatproduce.com/images/002/image-3672-137-j.webp)
![Етикетиране на GUI Етикетиране на GUI](https://i.howwhatproduce.com/images/002/image-3672-138-j.webp)
![Етикетиране на GUI Етикетиране на GUI](https://i.howwhatproduce.com/images/002/image-3672-139-j.webp)
Може би се чудите как успях да маркирам всички 82 изображения, добре, че написах графичен интерфейс в python, който ми помогна с тази задача. След като изображението се зареди в GUI. Щракнах с левия бутон върху горната координата и с десния бутон върху долната координата на вероятната ограничаваща кутия около ръката. След това тези координати се записват във файл, след което щраквам върху следващия бутон, за да заредя следващото изображение. Повторих тази процедура за всички 82 влакови и 4 тестови изображения. След като етикетите бяха готови, беше време за обучение.
Стъпка 15: Необходими библиотеки
![Необходими библиотеки Необходими библиотеки](https://i.howwhatproduce.com/images/002/image-3672-140-j.webp)
![Необходими библиотеки Необходими библиотеки](https://i.howwhatproduce.com/images/002/image-3672-141-j.webp)
![Необходими библиотеки Необходими библиотеки](https://i.howwhatproduce.com/images/002/image-3672-142-j.webp)
Първо трябва да заредим всички необходими библиотеки. Което включва
- PIL за манипулиране на изображения,
- matplotlib за начертаване,
- numpy за матрична работа,
- os за зависима от операционната система функционалност и
- keras за невронна мрежа.
Стъпка 16: Оставащи клетки
![Останалите клетки Останалите клетки](https://i.howwhatproduce.com/images/002/image-3672-143-j.webp)
![Останалите клетки Останалите клетки](https://i.howwhatproduce.com/images/002/image-3672-144-j.webp)
![Останалите клетки Останалите клетки](https://i.howwhatproduce.com/images/002/image-3672-145-j.webp)
![Останалите клетки Останалите клетки](https://i.howwhatproduce.com/images/002/image-3672-146-j.webp)
Във втората, третата, четвъртата и петата клетка зареждаме изображения в масив numpy и създаваме четириизмерен масив от csv файл, който да действа като етикети. В клетка номер 6 създаваме нашата невронна мрежа. Неговата архитектура е идентична с невронната мрежа, използвана за класификация, с изключение на измерването на изходния слой, което е 4, а не 1. Друга разлика идва от използваната функция за загуба, която е средната квадратна грешка. В клетка номер 8 започваме обучението на нашата невронна мрежа, след като тренирах, пуснах този модел на тестовия набор, за да получа прогнози за ограничаваща кутия върху наслагващи се координати на гранична кутия, те изглеждаха доста точни.
Благодаря за четенето.
Препоръчано:
Ако това, тогава това ArDino: 3 стъпки
![Ако това, тогава това ArDino: 3 стъпки Ако това, тогава това ArDino: 3 стъпки](https://i.howwhatproduce.com/images/005/image-13191-j.webp)
Ако това тогава онова ArDino: За нашия училищен проект ако това тогава трябваше да направим интерактивен обект с помощта на arduino. Реших да направя едно приятно Ардино. Той е много талантлив и с едно натискане на бутон ще изпее темата за юрския парк за вас
Планетариум, захранван от невронна мрежа, използващ Python, Electron и Keras: 8 стъпки
![Планетариум, захранван от невронна мрежа, използващ Python, Electron и Keras: 8 стъпки Планетариум, захранван от невронна мрежа, използващ Python, Electron и Keras: 8 стъпки](https://i.howwhatproduce.com/images/007/image-18238-j.webp)
Планетариум, захранван от невронна мрежа, използващ Python, Electron и Keras: В тази инструкция ще ви покажа как написах автоматичен 3D планетарен генератор, използвайки Python и Electron. Видеото по -горе показва един от случайните планетариуми, генерирани от програмата. ** Забележка: Тази програма по никакъв начин не е перфектна и на някои места
Nike LED Swoosh! Това е чудесен декор за стая. Това е единственият проект, който всеки може да повтори .: 5 стъпки
![Nike LED Swoosh! Това е чудесен декор за стая. Това е единственият проект, който всеки може да повтори .: 5 стъпки Nike LED Swoosh! Това е чудесен декор за стая. Това е единственият проект, който всеки може да повтори .: 5 стъпки](https://i.howwhatproduce.com/images/010/image-28228-j.webp)
Nike LED Swoosh! Това е чудесен декор за стая. Това е единственият проект, който всеки може да повтори .: Инструменти-измервателна лента-отвертка-запояващо желязо-трион-електрическа бормашина-шкурка Доставка -LED лента (RGB) 5m-LED контролер-Захранване 12V 4A-дървен материал 50-50-1500 2x-дървен материал 20-20-3000 2x-шперплат 500-1000mm-винтове (45mm) 150x-винтове (35mm) 30x-scr
КАК ДА СЕ СБОРЯ ВРЕМЕННА ДЪРВЕНА РОБОТНА РЪКА (ЧАСТ 3: РОБОТНА РЪКА) - НА ОСНОВА НА МИКРО: BITN: 8 стъпки
![КАК ДА СЕ СБОРЯ ВРЕМЕННА ДЪРВЕНА РОБОТНА РЪКА (ЧАСТ 3: РОБОТНА РЪКА) - НА ОСНОВА НА МИКРО: BITN: 8 стъпки КАК ДА СЕ СБОРЯ ВРЕМЕННА ДЪРВЕНА РОБОТНА РЪКА (ЧАСТ 3: РОБОТНА РЪКА) - НА ОСНОВА НА МИКРО: BITN: 8 стъпки](https://i.howwhatproduce.com/images/001/image-2767-95-j.webp)
КАК ДА СЕ СБОРЯ ВРЕМЕННА ДЪРВЕНА РОБОТНА РЪКА (ЧАСТ 3: РОБОТНА РЪКА) - НА ОСНОВА НА МИКРО: BITN: Следващият процес на инсталиране се основава на завършването на режима за избягване на препятствия. Процесът на инсталиране в предишния раздел е същият като процеса на инсталиране в режим на проследяване на линии. Тогава нека да разгледаме окончателната форма на A
Ако това, след това онова: Blackbox: Бягай, избягвай и скачай: 4 стъпки
![Ако това, след това онова: Blackbox: Бягай, избягвай и скачай: 4 стъпки Ако това, след това онова: Blackbox: Бягай, избягвай и скачай: 4 стъпки](https://i.howwhatproduce.com/images/003/image-7635-9-j.webp)
Ако това тогава онова: Blackbox: Run, Dodge and Jump: My Name is Remco Liqui дробове и това е училищен проект If This Then That. Черната кутия: Run, Dodge and Jump е кутия, в която се съдържа игра, която може да се играе. Идеята зад това е, че играете игра и когато достигнете определен резултат (100 точки)