Оглавление:

Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения: 8 шагов (с изображениями)
Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения: 8 шагов (с изображениями)

Видео: Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения: 8 шагов (с изображениями)

Видео: Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения: 8 шагов (с изображениями)
Видео: «Вонка» без «Оскара», «Люди-Икс» от Кинопоиска и беллетристический Halo. Новости и впечатления 2024, Ноябрь
Anonim
Image
Image
Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения
Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения
Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения
Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения
Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения
Настоящая рабочая палочка Гарри Поттера с использованием компьютерного зрения

«Любая достаточно продвинутая технология неотличима от магии» - Артур Кларк

Несколько месяцев назад мой брат посетил Японию и получил настоящий волшебный опыт в Волшебном мире Гарри Поттера в Universal Studios, что стало возможным благодаря технологии компьютерного зрения.

В «Волшебном мире Гарри Поттера» в Universal Studios туристы могут творить «настоящую магию» в определенных местах (где установлена система захвата движения), используя специально сделанные палочки со светоотражающими бусинами на конце. Палочки можно купить в настоящей лавке Олливандера, они точно такие же, как те, что показаны в фильмах о Гарри Поттере, но помните: «Это палочка выбирает волшебника»: P

В этих определенных местах, если человек выполняет определенный жест с палочкой, система захвата движения распознает этот жест, и все жесты соответствуют определенному заклинанию, которое вызывает определенные действия в окружающей области, такие как включение фонтана и т. Д.

Итак, в этом руководстве я покажу, как вы можете создать дешевую и эффективную систему захвата движения дома, чтобы творить «настоящую магию», открыв коробку одним движением палочки: D, используя обычную камеру ночного видения, немного электроники, и некоторый код Python с использованием библиотеки компьютерного зрения OpenCV и машинного обучения !!!

Шаг 1. Основная идея и необходимые детали

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

Жезлы, купленные в Волшебном мире Гарри Поттера в Universal Studios, имеют на конце световозвращающую бусинку. Эти световозвращающие бусины отражают большое количество инфракрасного света, который излучается камерой в системе захвата движения, и система захвата движения воспринимает то, что мы, люди, воспринимаем как не очень характерный кончик жезла, движущегося в воздухе. в виде яркой капли, которую можно легко изолировать в видеопотоке и отслеживать, чтобы распознать рисунок, нарисованный человеком, и выполнить необходимое действие. Вся эта обработка происходит в режиме реального времени с использованием компьютерного зрения и машинного обучения.

Простую камеру ночного видения можно использовать в качестве нашей камеры для захвата движения, поскольку они также излучают инфракрасный свет, который не виден людям, но может быть четко виден с помощью камеры без инфракрасного фильтра. Таким образом, видеопоток с камеры подается на Raspberry Pi, в котором есть программа Python, работающая под управлением OpenCV, которая используется для обнаружения, изоляции и отслеживания кончика палочки. Затем мы используем алгоритм машинного обучения SVM (Simple Vector Machine) для распознавания нарисованного шаблона и, соответственно, управления GPIO Raspberry Pi для выполнения некоторых действий.

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

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

2) Модуль камеры Raspberry Pi NoIR (без инфракрасного порта)

3) Палочка Гарри Поттера со световозвращателем на конце: не волнуйтесь, если у вас его нет. Можно использовать все, что оснащено световозвращателем. Итак, вы можете использовать любую палочку, похожую на палочку, и нанести на ее кончик световозвращающую ленту, краску или бусинки, и все должно работать, как показано в видео Уильяма Османа: Смотреть видео

4) 10 инфракрасных светодиодов

5) 3D-принтер и PLA-нить по вашему выбору

6) Настенный адаптер 12 В - 1 А и разъем постоянного тока

7) Серводвигатель

8) Старая коробка и спица от колеса велосипеда

9) Горячий клеевой пистолет

10) Распечатки некоторых логотипов и изображений, связанных с Гарри Поттером, на глянцевом листе бумаги.

11) Зеленые и желтые бархатные простыни.

ПРИМЕЧАНИЕ. Я также пытался использовать старую обычную веб-камеру для ночного видения, удалив ее инфракрасный фильтр, но в итоге повредил / сместил ее линзу, что сильно повлияло на качество видео, и я не мог ее использовать. Но если вы хотите попробовать, вы можете пройти через это отличное руководство. Нажмите здесь.

Шаг 2: Установите модуль OpenCV

Теперь пришло время для первого и, вероятно, самого длинного шага всего этого проекта: установка и сборка модуля OpenCV в вашем Raspberry Pi.

Установка зависимостей для модуля OpenCV не занимает много времени, но процесс сборки может занять от 2 до 3 часов !! Итак, пристегнитесь !!:П

В Интернете есть множество руководств, которым вы можете следовать, чтобы установить модуль OpenCV 4.1.0. Вот ссылка на ту, по которой я перешел: Нажмите здесь

ПРИМЕЧАНИЕ. Я настоятельно рекомендую установить модуль OpenCV в виртуальной среде, как показано в руководстве, поскольку это предотвратит различные конфликты, которые могут возникнуть из-за установки зависимостей разных модулей или при работе с разными версиями python.

Шаг 3. Печать крепления камеры

Печать крепления камеры
Печать крепления камеры
Печать крепления камеры
Печать крепления камеры
Печать крепления камеры
Печать крепления камеры

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

Итак, нам в основном нужен инфракрасный источник света и что-то, на что можно установить камеру. Для этого я разработал простую 3D-модель объекта, на котором мы могли бы установить камеру, которую мы окружим 10 ИК-светодиодами по кругу. Модель была создана с помощью SketchUp и напечатана из черного PLA примерно за 40 минут.

Шаг 4: Завершение монтажа камеры

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

После распечатки модели я сначала отшлифовал ее наждачной бумагой с зернистостью 80, а затем начал вставлять ИК-светодиоды в их отверстия в соответствии со схемой, приведенной выше.

Я закрепил светодиоды на их месте с помощью небольшого количества горячего клея, а затем соединил положительный и отрицательный выводы двух последовательных светодиодов вместе, а затем спаял их, чтобы создать последовательное соединение светодиодов.

Положительный вывод одного светодиода и отрицательный вывод светодиода рядом с ним внизу были оставлены непаянными, чтобы подключить положительный и отрицательный концы 12-вольтного настенного адаптера.

Шаг 5: обученная модель машинного обучения

Чтобы распознать букву, нарисованную человеком, я обучил модель машинного обучения, основанную на алгоритме машины опорных векторов (SVM), используя набор данных рукописных английских алфавитов, который я нашел здесь. SVM - это очень эффективные алгоритмы машинного обучения, которые могут дать высокую точность, в данном случае около 99,2% !! Узнать больше о SVM

Набор данных имеет форму файла.csv, который содержит 785 столбцов и более 300000 строк, где каждая строка представляет изображение 28 x 28, а каждый столбец в этой строке содержит значение этого пикселя для этого изображения с дополнительным столбцом в начало, которое содержит метку, число от 0 до 25, каждое из которых соответствует английской букве. С помощью простого кода на Python я разрезал данные, чтобы получить все изображения только для двух букв (A и C), которые мне нужны, и обучил модель для них.

Я прикрепил обученную модель (алфавит_классификатор.pkl), а также обучающий код, не стесняйтесь проходить его или вносить какие-либо изменения для обучения модели с разными буквами или пробовать разные алгоритмы. После запуска программа автоматически сохраняет обученную модель в том же каталоге, где сохранен ваш код.

Шаг 6: Код, благодаря которому все происходит

Код, благодаря которому все происходит !!
Код, благодаря которому все происходит !!

После создания обученной модели последним шагом будет написание программы на Python для нашей Raspberry Pi, которая позволяет нам делать следующее:

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

Для этого проекта я создал коробку в стиле Гарри Поттера, которую я могу открывать и закрывать с помощью серводвигателя, который управляется GPIO Raspberry Pi. Поскольку буква «А» означает «Алохамора» (одно из самых известных заклинаний из фильмов о Гарри Поттере, которое позволяет волшебнику открыть любой замок !!), если человек рисует букву А с помощью палочки, пи дает сервоприводу команду откройте Коробку. Если человек рисует букву «C», которая означает «закрыть» (поскольку я не мог придумать никакого подходящего заклинания, используемого для закрытия или запирания: P), «пи» приказывает сервоприводу закрыть коробку.

Вся работа, связанная с обработкой изображения / видео, такая как обнаружение blob, отслеживание пути к blob, предварительная обработка последнего кадра и т. Д., Выполняется через модуль 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. Минус сервопривода был подключен к контакту 39 GND.
  6. Сигнал сервопривода был подключен к выводу 12.

Шаг 8: создание коробки с тематикой Гарри Поттера

Оформление коробки в тематике Гарри Поттера
Оформление коробки в тематике Гарри Поттера
Оформление коробки в тематике Гарри Поттера
Оформление коробки в тематике Гарри Поттера
Оформление коробки в тематике Гарри Поттера
Оформление коробки в тематике Гарри Поттера

Чтобы сделать коробку с тематикой Гарри Поттера, я распечатал несколько цветных изображений различных вещей, таких как логотип Гарри Поттера, герб Хогвартса, герб каждого из четырех домов и т. Д., На глянцевом листе формата А4 и наклеил их на коробку в разных местах. места.

Я также использовал бархатный лист желтого цвета, чтобы вырезать полоски и наклеить их на крышку, чтобы коробка была того же цвета, что и дом Гриффиндора. Я покрыл внутреннюю часть крышки и картон сервопривода зеленым бархатным листом. На внутренней стороне крышки я наклеил еще символы и эмблему с изображением животных, которые представляют каждый дом школы Хогвартс.

Затем, наконец, я запихнул все свои вещи, связанные с Гарри Поттером, в коробку, включая глушитель Гриффиндора, дневник с униформой Хогвартса и Бузинную палочку, используемую в этом проекте: D

Рекомендуемые: