Съдържание:

Истинска работеща пръчка на Хари Потър, използваща компютърно зрение: 8 стъпки (със снимки)
Истинска работеща пръчка на Хари Потър, използваща компютърно зрение: 8 стъпки (със снимки)

Видео: Истинска работеща пръчка на Хари Потър, използваща компютърно зрение: 8 стъпки (със снимки)

Видео: Истинска работеща пръчка на Хари Потър, използваща компютърно зрение: 8 стъпки (със снимки)
Видео: Колекцията ми от магически пръчки - Хари Потър 2024, Юли
Anonim
Image
Image
Истинска работеща пръчка на Хари Потър, използваща компютърно зрение
Истинска работеща пръчка на Хари Потър, използваща компютърно зрение
Истинска работеща пръчка на Хари Потър, използваща компютърно зрение
Истинска работеща пръчка на Хари Потър, използваща компютърно зрение
Истинска работеща пръчка на Хари Потър, използваща компютърно зрение
Истинска работеща пръчка на Хари Потър, използваща компютърно зрение

„Всяка достатъчно напреднала технология е неразличима от магията“- Артър К. Кларк

Няколко месеца назад брат ми посети Япония и имаше истински магьоснически опит в света на магьосниците на Хари Потър в Universal Studios, станало възможно благодарение на технологията на Computer Vision.

В магьосническия свят на Хари Потър в Universal Studios туристите могат да изпълняват „истинска магия“на определени места (където е инсталирана системата за улавяне на движение), използвайки специално изработени пръчки със светлоотразителни мъниста на върха. Пръчките могат да бъдат закупени от истински магазин на Оливандър, които са точно като тези, показани във филмите за Хари Потър, но помнете: „Това е пръчката, която избира магьосника“: P

На тези определени места, ако лицето изпълнява определен жест с пръчка, системата за улавяне на движение разпознава жеста и всички жестове съответстват на определено заклинание, което причинява определени дейности в околността, като включване на фонтана и т.н.

Така че в тази инструкция ще покажа как можете да създадете евтина и ефективна система за улавяне на движение у дома, за да изпълнявате „истинска магия“, като отворите кутия с едно движение на пръчката си: D, използвайки само обикновена камера за нощно виждане, малко електроника, и малко код на python, използващ библиотеката OpenCV Computer Vision и машинно обучение !!!

Стъпка 1: Основната идея и необходимите части

Основната идея и необходимите части
Основната идея и необходимите части
Основната идея и необходимите части
Основната идея и необходимите части
Основната идея и необходимите части
Основната идея и необходимите части
Основната идея и необходимите части
Основната идея и необходимите части

Пръчките, които се купуват от магьосническия свят на Хари Потър в Universal Studios, имат на върха си светлоотразително мънисто. Тези светлоотразителни мъниста отразяват голямо количество инфрачервена светлина, която се отделя от камерата в системата за улавяне на движение. Така че това, което ние, хората, възприемаме като не толкова отличителен връх на пръчката, движещ се във въздуха, системата за улавяне на движение възприема като ярко петно, което може лесно да се изолира във видео потока и да се проследи, за да разпознае модела, нарисуван от лицето, и да изпълни необходимото действие. Цялата тази обработка се извършва в реално време и използва Computer Vision и Machine Learning.

Проста камера за нощно виждане може да се използва като наша камера за заснемане на движение, тъй като те също така излъчват инфрачервена светлина, която не се вижда от хората, но може да се види ясно с камера, която няма инфрачервен филтър. И така, видео потокът от камерата се подава в малинов пи, който има програма на python, изпълняваща OpenCV, която се използва за откриване, изолиране и проследяване на върха на пръчката. След това използваме алгоритъма SVM (Simple Vector Machine) на машинното обучение, за да разпознаем начертания модел и съответно да контролираме GPIO на малиновото пи за извършване на някои дейности.

Необходимите материали:

1) A Raspberry Pi 3 модел B и необходимите аксесоари като клавиатура и мишка

2) Модул за камера Raspberry Pi NoIR (без инфрачервена връзка)

3) Пръчка Хари Потър с ретроотражател на върха: Не се притеснявайте, ако нямате такъв. Може да се използва всичко със светлоотражател. Така че, можете да използвате всяка пръчка, подобна на пръчка, и да нанесете светлоотразителна лента, боя или мъниста на върха и тя трябва да работи, както е показано във видеото от Уилям Осман: Гледайте видеото

4) 10 инфрачервени светодиода

5) 3D принтер и PLA нишка по ваш избор

6) 12V - 1A стенен адаптер и DC жак

7) Серво мотор

8) Стара кутия и спица от колелото на цикъл

9) Пистолет за горещо лепило

10) Разпечатки на някои лога и изображения, свързани с Хари Потър, върху гланциран лист хартия

11) Зелени и жълти кадифени листове.

ЗАБЕЛЕЖКА: Също така се опитах да използвам стара обикновена уеб камера за нощно виждане, като премахнах нейния инфрачервен филтър, но в крайна сметка повредих/изместих обектива, което се отрази значително на качеството на видеото и не можах да го използвам. Но ако искате да опитате, можете да преминете през този чудесен инструктаж Щракнете тук

Стъпка 2: Инсталирайте модула OpenCV

Сега е време за първата и може би най -дългата стъпка от целия този проект: Инсталирането и изграждането на модула OpenCV във вашия Raspberry Pi.

Инсталирането на зависимостите за модула OpenCV не отнема много време, но процесът на изграждане може да отнеме до 2 до 3 часа !! Така че, закопчайте се !!: P

Има много уроци онлайн, които можете да следвате, за да инсталирате модула OpenCV 4.1.0. Ето връзката на тази, която последвах: Щракнете тук

ЗАБЕЛЕЖКА: Силно препоръчвам да инсталирате модула OpenCV във виртуална среда, както е показано в урока, тъй като това ще предотврати различни видове конфликти, които могат да възникнат поради инсталирането на зависимости от различни модули или по време на работа с различни версии на python.

Стъпка 3: Отпечатване на стойката за камера

Отпечатване на стойката на камерата
Отпечатване на стойката на камерата
Отпечатване на стойката на камерата
Отпечатване на стойката на камерата
Отпечатване на стойката на камерата
Отпечатване на стойката на камерата

Пикамерата NoIR няма инфрачервен филтър, поради което може да се използва като камера за нощно виждане, но все още няма източник на инфрачервена светлина. Всички камери за нощно виждане имат собствен източник на инфрачервена светлина, който излъчва инфрачервени лъчи в тъмното, които са невидими с невъоръжено око, но лъчите могат да се видят от камерата без инфрачервен филтър, след като се отразят от всеки обект.

Така че, ние основно се нуждаем от инфрачервен източник на светлина и нещо, на което да монтираме камерата. За целта проектирах прост 3D модел на обект, върху който можем да монтираме камерата, която ще заобиколим с 10 инфрачервени светодиода в кръг. Моделът е създаден с SketchUp и отпечатан с Black PLA за около 40 минути.

Стъпка 4: Завършване на монтажа на камерата

Завършване на монтажа на камерата
Завършване на монтажа на камерата
Завършване на монтажа на камерата
Завършване на монтажа на камерата
Завършване на монтажа на камерата
Завършване на монтажа на камерата

След отпечатване на модела първо го шлайфах с шкурка с шкурка 80 и след това започнах да поставям инфрачервените светодиоди в отворите им съгласно схемата, дадена по -горе.

Закрепих светодиодите на тяхно място с малко горещо лепило и след това съединих положителните и отрицателните проводници на два последователни светодиода заедно и след това ги запоявах, за да създам последователно свързване на светодиодите.

Положителният проводник на един проводник и отрицателният проводник на проводника до него в долната част бяха оставени не запоени, за да се свържат положителните и отрицателните краища от 12-волтовия адаптер за стена.

Стъпка 5: Обучен модел за машинно обучение

За целите на разпознаването на писмото, нарисувано от човек, обучих модел за машинно обучение, базиран на алгоритъма на Support Vector Machine (SVM), използвайки набор от данни от ръкописни английски азбуки, който намерих тук. SVM са много ефективни алгоритми за машинно обучение, които могат да дадат висока точност, около 99,2% в този случай !! Прочетете повече за SVM

Наборът от данни е под формата на.csv файл, който съдържа 785 колони и повече от 300 000 реда, където всеки ред представлява изображение 28 x 28 и всяка колона в този ред съдържа стойността на този пиксел за това изображение с допълнителна колона в началото, което съдържа етикета, число от 0 до 25, всяко съответстващо на английска буква. Чрез прост код на python нарязах данните, за да получа всички изображения само за 2 -те букви (A и C), които исках, и обучих модел за тях.

Прикачих обучения модел (alphabet_classifier.pkl), а също и кода за обучение не се колебайте да го преминете или да направите каквито и да било промени за обучение на модела с различни букви или да опитате различни алгоритми. След стартиране на програмата, тя автоматично записва обучения модел в същата директория, където е записан вашият код.

Стъпка 6: Кодът, който прави всичко това да се случи

Кодът, който прави всичко да се случи !!
Кодът, който прави всичко да се случи !!

След създаването на обучения модел, последната стъпка е да напишем програма за python за нашия Raspberry Pi, която ни позволява да направим следното:

  • Достъп до видео от камерата в реално време
  • Открийте и проследете бели петна (в този случай върхът на пръчката, който светва при нощно виждане) във видеото
  • Започнете да проследявате пътя на движещото се петно във видеото след някакво задействащо събитие (обяснено по -долу)
  • Спрете проследяването след друго задействащо събитие (обяснено по -долу)
  • Върнете последния кадър с шаблона, нарисуван от потребителя
  • Извършете предварителна обработка на рамката като прагове, премахване на шума, преоразмеряване и т.н.
  • Използвайте обработения последен кадър за прогнозиране.
  • Направете някаква магия, като контролирате GPIO на Raspberry Pi според предсказанието

За този проект създадох кутия на тема Хари Потър, която мога да отварям и затварям с помощта на серво мотор, който се управлява от GPIO на Raspberry Pi. Тъй като буквата „А“означава „Алохамора“(едно от най -известните заклинания от филмите за Хари Потър, което позволява на магьосника да отвори всяка ключалка !!), ако човек изтегли буква А с пръчката, пи командва серво към отворете кутията. Ако лицето нарисува буквата „C“, която означава затваряне (тъй като не можех да се сетя за подходящо заклинание, използвано за затваряне или заключване: P), pi командва серво за затваряне на кутията.

Цялата работа, свързана с обработка на изображения/видео, като откриване на петна, проследяване на пътя на блоба, предварителна обработка на последния кадър и т.н., се извършва чрез модула OpenCV.

За споменатите по-горе тригерни събития се създават два кръга във видеото в реално време, зелен и червен кръг. Когато петното влезе в региона в зеления кръг, програмата започва да проследява пътя, изминат от петното след този момент, което позволява на лицето да започне да създава буквата. Когато петното достигне червения кръг, видеоклипът спира и последният кадър се предава на функция, която извършва предварителната обработка на кадъра, за да го направи готов за предсказване.

Прикачих кодовите файлове в тази стъпка. Не се колебайте да преминете през него и да правите каквито и да е промени.

ЗАБЕЛЕЖКА: Трябваше да създам два отделни файла на python, работещи с различни версии на python, един, който импортира OpenCV модул (Python 2.7) и друг, който импортира модула sklearn (Python 3.5) за прогнозиране след зареждане на обучения модел, тъй като моят OpenCV беше инсталиран за версията на Python 2.7, докато sklearn е инсталиран за python 3.5. Така че, използвах модула на подпроцеса, за да стартирам файла HarryPotterWandsklearn.py (за предвиждане) от HarryPotterWandcv.py (за цялата работа с opencv и видео запис в реално време) и да получа неговия изход. По този начин трябва само да стартирам файла HarryPotterWandcv.py.

Стъпка 7: Механизъм за отваряне на кутията

Механизъм за отваряне на кутията
Механизъм за отваряне на кутията
Механизъм за отваряне на кутията
Механизъм за отваряне на кутията
Механизъм за отваряне на кутията
Механизъм за отваряне на кутията

Имах една стара червена кутия, която лежа около, която използвах за този проект.

За механизма за отваряне на кутията:

  1. Горещо залепих серво в близост до задния край на кутията върху парче картон близо до ръба на кутията.
  2. След това взех спица от колелото на цикъл и я залепих горещо към рамото на серво.
  3. Другият край на спицата беше прикрепен към капака на кутията с помощта на парче тел.
  4. Положителното на серво е свързано към +5V Pin 2 на Raspberry Pi.
  5. Отрицателното на серво е свързано към GND Pin 39.
  6. Сигналът на серво е свързан към Pin 12

Стъпка 8: Оформяне на кутията на тема Хари Потър

Осъществяване на кутията на тема Хари Потър
Осъществяване на кутията на тема Хари Потър
Осъществяване на кутията на тема Хари Потър
Осъществяване на кутията на тема Хари Потър
Осъществяване на кутията на тема Хари Потър
Осъществяване на кутията на тема Хари Потър

За да направя кутията с темата Хари Потър, отпечатах няколко цветни изображения на различни неща като логото на Хари Потър, гребена на Хогуортс, гребена на всяка от четирите къщи и т.н. върху гланциран лист с размер А4 и ги залепих върху кутията в различни места.

Използвах и кадифен лист с жълт цвят, за да изрежа ленти и ги залепих върху капака, за да им придам същия цвят като кутията на Грифиндорската къща. Покрих вътрешната страна на капака и картона за серво със зелен лист от кадифе. От вътрешната страна на капака поставих още символи и емблема, показваща животните, които представляват всяка къща от училището в Хогуортс.

После най -накрая пъхнах всичките си неща, свързани с Хари Потър, в кутията, включваща заглушител на Грифиндор, дневник с униформата на Хогуортс и пръчката на старейшината, използвани в този проект: D

Препоръчано: