Оглавление:

Умная сова, обнаруживающая зомби (глубокое обучение): 10 шагов (с изображениями)
Умная сова, обнаруживающая зомби (глубокое обучение): 10 шагов (с изображениями)

Видео: Умная сова, обнаруживающая зомби (глубокое обучение): 10 шагов (с изображениями)

Видео: Умная сова, обнаруживающая зомби (глубокое обучение): 10 шагов (с изображениями)
Видео: Independent – обнаруживающий препятствия 2024, Июль
Anonim

Всем привет, добро пожаловать в T3chFlicks! В этом уроке на Хэллоуин мы покажем вам, как мы добавили жуткий поворот в бытовую классику: камеру наблюдения.

Как?! Мы создали сову ночного видения, которая использует обработку изображений для отслеживания людей. Ох, и он гудит, совсем как настоящий!

Мы были в восторге от этого проекта и ждали его с тех пор, как выпустили новый Raspberry Pi 4. У него 4 ГБ оперативной памяти, что открывает двери для множества действительно интересных возможностей, включая обработку изображений с помощью моделей глубокого обучения в реальном времени.

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

Запасы

Для этой сборки вам понадобятся:

  • Raspberry Pi 4 (4 ГБ ОЗУ) Amazon
  • Камера ночного видения Amazon
  • Микро Сервопривод Amazon
  • Поддельная Амазонка Сова
  • Клей амазонка
  • Раскрась Амазонку
  • Винты Amazon
  • USB-динамик Amazon
  • Большой (5v +) портативный блок питания Amazon
  • 3D-принтер Amazon

Шаг 1: Шаг 1: обезглавить

Шаг 1: обезглавить
Шаг 1: обезглавить
Шаг 1: обезглавить
Шаг 1: обезглавить
Шаг 1: обезглавить
Шаг 1: обезглавить

а. Снимите с совы голову (иногда просто необходимо проявить жестокость), сильно потянув ее за голову в том месте, где она прикреплена к пружине.

б. Голова совы соединяется с телом цилиндром, который находится на большой пружине. Снимите этот цилиндр, вывернув винт.

c. Цилиндр, который вы только что сняли, состоит из двух частей: пластикового стакана и подшипника, который находится внутри него. Снимите подшипник с цилиндра с помощью отвертки (или аналогичного инструмента).

d. Используя винт, соединяющий цилиндр с пружиной, прикрепите сервопривод к цилиндру.

е. Снимите пружину, открутив три винта, которыми она крепится к корпусу.

f. Сделайте отверстие в верхней части туловища совы, достаточно большое, чтобы в него поместились несколько проводов и кабель камеры. Для этого мы использовали безупречное сочетание дрели и отвертки.

Шаг 2: Шаг 2: Добавьте Smart

Шаг 2. Добавьте Smart
Шаг 2. Добавьте Smart
Шаг 2. Добавьте Smart
Шаг 2. Добавьте Smart
Шаг 2. Добавьте Smart
Шаг 2. Добавьте Smart

а. Напечатайте на 3D-принтере корпус камеры и раскрасьте его под сову - мы использовали дешевые акриловые краски. Рисование - не важный шаг, но он значительно улучшает общий вид!

б. Перевернув голову совы, ввинтите верхнюю часть корпуса камеры во внутреннюю часть ее головы, где выступает клюв.

c. Поместите камеру в чехол и подсоедините кабель камеры.

d. Приклейте сервопривод к верхней панели пружины.

е. Подключите длинные провода к контактам сервопривода (5V, Gnd, сигнал)

f. Пропустите кабель камеры и провода сервопривода через пружину и через отверстие, которое вы сделали в верхней части корпуса, так, чтобы они оказались внутри полого тела совы.

Шаг 3: Шаг 3: Наполните ее

Шаг 3: Наполни ее
Шаг 3: Наполни ее
Шаг 3: Наполни ее
Шаг 3: Наполни ее
Шаг 3: Наполни ее
Шаг 3: Наполни ее
Шаг 3: Наполни ее
Шаг 3: Наполни ее

а. Снимите заглушку с нижней части совы и увеличьте размер этого отверстия, разрезав пластик. Продолжайте увеличивать размер, пока Raspberry Pi и динамик не войдут в тело совы.

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

c. Точно так же протяните провода сервопривода и подключите их к Raspberry Pi:

  • + 5В на сервоприводе => + 5В на Pi
  • Gnd сервопривод => gnd Pi
  • Сервопривод сигнала => контакт 12 Pi

d. Подключите USB-динамик к Pi.

е. Вставьте SD-карту в Pi.

f. Power Pi с использованием портативного блока питания.

грамм. Вставьте Pi, блок питания и динамик в сову через отверстие в основании.

Шаг 4: Шаг 4: Настройте Pi

Шаг 4: Настройте Pi
Шаг 4: Настройте Pi

ВСЕ КОДЫ МОЖНО НАЙТИ НА

а. Загрузите Raspian и загрузите его на свою SD-карту с помощью Balena Etcher.

б. Для удаленного доступа к вашему пи

  • Добавьте файл с именем ssh на загрузочную SD-карту
  • Добавьте файл с именем wpa_supplicant.conf и введите свои учетные данные Wi-Fi в

    ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1

    сеть = {ssid = "MySSID" psk = "MyPassword"}

c. Вставьте SD-карту в пи и попробуйте доступ по ssh.

Шаг 5: Шаг 5: Перемещение головы

Шаг 5: Перемещение головы
Шаг 5: Перемещение головы

Руководство по коду для перемещения головы (управление сервоприводом с помощью raspberry pi)

Чтобы управлять сервоприводом, работающим на Pi, мы собираемся создать скрипт, который управляет выводами GPIO, к которым подключен сервопривод.

а. Подключите сервопривод к Pi:

  • + 5В на сервоприводе => + 5В на Pi
  • Gnd сервопривод => земля на Pi
  • Сервопривод сигнала => контакт 12 на Pi

б. Вы должны сначала настроить контакты gpio для использования ШИМ на сигнальном контакте сервопривода.

c. Затем достаточно просто выбрать рабочий цикл (объясняется здесь) сигнального вывода, чтобы переместить сервопривод от 90 градусов с рабочим циклом от 7,5 до 0 градусов, когда рабочий цикл равен 2,5, и до 180 градусов с рабочим циклом 12,5

импортировать RPi. GPIO как GPIO

время импорта GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) GPIO.setup (12, GPIO. OUT) p = GPIO. PWM (12, 50) p.start (7.5) try: while True: p. ChangeDutyCycle (7.5) # 90 градусов time.sleep (1) p. ChangeDutyCycle (2.5) # 0 градусов time.sleep (1) p. ChangeDutyCycle (12.5) # 180 градусов time.sleep (1) за исключением KeyboardInterrupt: p.stop () GPIO.cleanup ()

Шаг 6: Шаг 6: заставляем гудеть

Шаг 6: заставляем гудеть
Шаг 6: заставляем гудеть
Шаг 6: заставляем гудеть
Шаг 6: заставляем гудеть

Руководство по коду для совиного улюлюка (воспроизведение звука с помощью raspberry pi)

а. Подключите USB-динамик.

б. Скачиваем звук - мы выбрали жуткое улюлюканье.

c. Включите звук, выполнив эту команду: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[d. Если это не сработает, проверьте, какой вывод использует ваш Pi и на какой громкости, с помощью команды alsamixer - вы увидите экран микшера, на котором вы можете изменить громкость и выбрать мультимедийное устройство. Чтобы увеличить громкость звука, выполните команду вида omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 Чтобы воспроизвести этот звук с помощью Python, ознакомьтесь с нашим тестовым скриптом.]

подпроцесс импорта

command = "omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500" player = subprocess. Popen (command.split (''), stdin = subprocess. PIPE, stdout = subprocess. PIPE, stderr = subprocess. ТРУБКА)

Шаг 7: Шаг 7: потоковое видео с Pi

Шаг 7: потоковое видео с Pi
Шаг 7: потоковое видео с Pi
Шаг 7: потоковое видео с Pi
Шаг 7: потоковое видео с Pi

Руководство по коду создания потока камеры raspberry pi

а. Запустите python app.py и просмотрите в своей локальной сети https://raspberrypi.local: 5000.

б. Этот код был взят и немного адаптирован у Мигеля Гринберга https://blog.miguelgrinberg.com/post/flask-video-… он прекрасно объясняет, как это делается, и его уроки великолепны - deffo проверьте его! Основная концепция заключается в том, что мы используем потоки и генераторы для повышения скорости потоковой передачи.

Шаг 8: Шаг 8: Обнаружение тела

Шаг 8: Обнаружение тела
Шаг 8: Обнаружение тела

Код для обнаружения тела (ImageNetSSD в видеопотоке с raspberry pi)

а. Поскольку мы используем Raspberry Pi 4, мы подумали, что лучше всего опробовать на нем некоторые модели глубокого обучения вместо базового метода HaarCascade, которым мы пока ограничивались.

б. Мы посмотрели на некоторых предварительно обученных моделей, таких как YOLOv3, который выглядит супер круто. Крошечные веса YOLOv3, которые идеально подошли бы для Pi, но мы не могли заставить его работать:(c. Вместо этого мы выбрали модель MobileSSD, которую мы можем запустить с помощью модуля openCVs DNN (глубокая нейронная сеть), как мы узнали из этого кода: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 и от героя руководств по обработке изображений Адриана Роузброка: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv /

d. Однако, поскольку мы пытаемся транслировать этот контент и запускать модели для каждого кадра, это приводит к задержке и фрагментированному видео. Мы снова узнали от Адриана Роузброка https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ и использовали модуль многопроцессорной обработки Python, чтобы поместить наши изображения в очереди. где их можно обрабатывать, не блокируя так сильно поток камеры.

е. Попробуйте запустить код самостоятельно:)

Шаг 9: Шаг 9: Отправка уведомлений о зомби

Шаг 9: отправка уведомлений о зомби
Шаг 9: отправка уведомлений о зомби
Шаг 9: отправка уведомлений о зомби
Шаг 9: отправка уведомлений о зомби

Код для отправки уведомления (python на телефон)

а. Мы решили использовать службу уведомлений

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

запросы на импорт

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Сова обнаружила зомби." } r = requests.post ("https://api.pasted.co/1/push", данные = полезная нагрузка)

Это очень просто, и вы можете настроить свое имя для уведомления!

Шаг 10: Что за крик

Что за ухо!
Что за ухо!

Надеемся, вам понравился наш проект Smart Security Owl! Это было очень весело, и я чувствую себя намного безопаснее, зная, что мой дом охраняет наша верная сова.

Если вы думаете, что это будет сказочное дополнение к Хэллоуину для вашего умного дома, проголосуйте за нас в конкурсе Instructables Halloween и, как обычно, не забудьте поставить лайки, комментировать и подписаться!

Подпишитесь на нашу рассылку!

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