Оглавление:

Дверной звонок с распознаванием лиц: 7 шагов (с изображениями)
Дверной звонок с распознаванием лиц: 7 шагов (с изображениями)

Видео: Дверной звонок с распознаванием лиц: 7 шагов (с изображениями)

Видео: Дверной звонок с распознаванием лиц: 7 шагов (с изображениями)
Видео: Умный видеозвонок Aqara G4 SVD-KIT1 Smart Video Doorbell G4 с распознаванием лиц Apple Homekit 2024, Июль
Anonim
Дверной звонок с распознаванием лиц
Дверной звонок с распознаванием лиц

Мотивация

В последнее время в моей стране прокатилась волна ограблений, нацеленных на пожилых людей в их собственных домах. Обычно доступ предоставляется самими жильцами, поскольку посетители убеждают их, что они сиделки / медсестры. Невозможно передать словами, насколько злой и грустной я чувствую эти истории. Дом должен быть вашим первым убежищем, тем более, если вы уже находитесь в уязвимом положении, находясь на улице. Имея это в виду, я начал этот проект.

Общая информация

Система дверного звонка в основном предназначена для пожилых людей или людей с ослабленным зрением и довольно проста в своей работе. Короче говоря, переключатель дверного звонка запускает камеру для получения отснятого материала. Затем лица в кадре обнаруживаются и сопоставляются с белым списком и черным списком. Житель получает четкую визуальную обратную связь с четким индикатором светофора. Таким образом, зеленый, желтый или красный свет указывают на то, что человек (а) находится в белом списке, неизвестен системе или в черном списке соответственно. Если загорается желтый или красный свет, фотография отправляется ботом Telegram, чтобы проинформировать / предупредить родственника или опекуна.

Уровень экспертизы

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

Шаг 1: материалы

Материалы
Материалы

Список продуктов с минимальными требованиями:

Продукт Ссылка Комментарий
Малина Pi 3b RPi Link показывает RPi 4, так как он имеет лучшую производительность и почти такую же цену, как RPi 3b.
Micro SD Амазонка Для этого подойдет карта micro SD объемом 16 ГБ или больше. Но карты на 16 ГБ на Amazon сейчас примерно такие же, как и карты на 32 ГБ.
Камера Raspberry Pi Амазонка Камера v1 дешевле, но v2 лучше и будет дольше поддерживаться.
15-контактный гибкий кабель FPC Амазонка Длина фактически зависит от обстоятельств выполнения этого проекта. Если вы просто хотите создать прототип, вам подойдет оригинальный гибкий кабель.
Блок питания 5v micro usb Адафрут Этот ни разу не подводил! Отличное качество. (Нет на фото)
Аркадные кнопки со встроенным светодиодом Амазонка Выберите нужный размер, но дизайн САПР основан на кнопках 60 мм.
Резисторы Амазонка Вам просто понадобится пара резисторов 1 кОм и 100 Ом. Обычные 1/4 Вт вполне подойдут.
Конденсаторы 0,1 мкФ Амазонка Требуются три конденсатора. (Нет на фото)
Провода-перемычки / ленточный кабель AmazonAmazon Если вы хотите сэкономить немного денег, вы также можете использовать старый ленточный кабель дисковода гибких дисков (см. Фото).
Термоусадочная трубка / изолента AmazonAmazon

Необходимые инструменты:

Орудие труда Существенный? Комментарий
Паяльник да
Мультиметр да
Инструмент для зачистки проводов да Или вы можете использовать нож / ножницы.
Лазерный резак Нет
3д принтер Нет
Зажимы Нет Полезно для хранения коробки на этапе тестирования.

Примечания:

Чтобы повысить доступность проекта, я решил разработать его на Raspberry Pi 3b. Хотя это увеличивает доступность, это снижает возможности приложения, поскольку RPi не такие быстрые. Если вы ищете более быстрый одноплатный компьютер, возможно, вам стоит обратить внимание на NVIDIA Jetson Nano

Шаг 2: Подключение

Проводка
Проводка
Проводка
Проводка
Проводка
Проводка

Принципиальная схема является наиболее информативной для этого шага и не требует пояснений. Если вы новичок в электронике, вы можете использовать изображение легенды. Стоимость компонента (если применимо) указана на принципиальной схеме. Фотографии могут помочь увидеть, как я строю схему. По сути, я подключил все компоненты как можно ближе к кнопке аркады, что дает четкое представление о том, что происходит.

Примечания:

  • Мне очень нравится использовать разъемы для ленточных кабелей, поскольку они намного прочнее, чем при использовании одинарных перемычек.
  • Как и предполагалось, я использовал очищенный ленточный кабель от старого компьютера. Это немного сложно, так как вам придется вручную подтвердить конфигурацию кабеля. Например, в этом проекте я обнаружил, что некоторые дыры соединены друг с другом (вероятно, использовались в качестве заземления для исходного приложения). Поэтому позже мне пришлось купить другой кабель, как вы можете видеть на фотографиях.

Шаг 3: Сборка обсадной колонны

Сборка корпуса
Сборка корпуса
Сборка корпуса
Сборка корпуса
Сборка корпуса
Сборка корпуса
Сборка корпуса
Сборка корпуса

Корпус камеры

Многие корпуса для фотоаппарата можно бесплатно скачать в Интернете. Итак, я решил не изобретать велосипед и выбрал простой, но красивый корпус из Интернета: thingiverse.com - корпус / корпус для камеры Raspberry pi. (Крик дизайнеру В. Геру.)

Корпус светофора

Для корпуса светофора я разработал небольшую коробку в Autodesk Fusion 360 (которую можно бесплатно загрузить, см. Примечания), которая подходит для всего оборудования. Во вложении вы можете найти файл, который я отправил в местную компанию по лазерной резке. Таким образом, конструкция основана на толщине пластины 6 мм. Однако, если вы хотите что-то изменить, вы можете получить доступ ко всем форматам файлов по этой ссылке. Как показано на рисунках, вы также можете использовать картонную коробку, если у вас нет доступа к лазерному резаку. Я использовал картонную коробку на картинке для прототипа, и она работает как шарм.

Сборка довольно проста:

  1. Установите переключатели Arcade.
  2. Убедитесь, что провода дверного звонка оставлены свободными.
  3. Подключите ленточный кабель к RPi.
  4. Прикрутите RPi к нижней панели.
  5. Подключите провода дверного звонка к разъему для проводов и также прикрепите его к нижней панели.
  6. Подключите Picamera к RPi.
  7. Просверлите отверстие в одной из боковых панелей для провода переключения дверного звонка и провода питания RPi.

Разъем для проводов используется в качестве точки крепления проводов переключателя дверного звонка, так что позже его можно прикрепить к существующему дверному звонку. Теперь все на месте и можно склеить. Однако вы можете сначала завершить следующие шаги, чтобы убедиться, что все работает так, как должно быть.

Примечания:

Autodesk Fusion 360 бесплатно доступен для любителей! Если вы хотите получить свою копию, перейдите по этой ссылке: autodesk.com - Fusion 360 для любителей. Есть некоторые условия, поэтому обязательно прочтите и примените их. Это был мой первый проект с Fusion 360, и у меня нет большого опыта в использовании программного обеспечения САПР, но я должен сказать, что мне очень нравится программное обеспечение и все дополнительные инструменты, поставляемые с Fusion 360

Шаг 4: настройка камеры

Настройка камеры
Настройка камеры
Настройка камеры
Настройка камеры
Настройка камеры
Настройка камеры

Предполагается, что у вас установлен Raspbian и он работает в режиме графического интерфейса. Если у вас еще не установлен Raspbian, вы можете прочитать эту статью: raspberrypi.org - Установка образов операционной системы. Если вы загружаете Raspbian, вы должны увидеть рабочий стол, как показано на рисунках.

Давайте настроим камеру на RPi и посмотрим, работает ли она! Описанный здесь метод взят непосредственно из документации raspberrypi.org. Во-первых, давайте обновимся до последних пакетов (включая прошивку камеры), выполнив следующие команды в окне терминала (см. Рисунки):

sudo apt update

sudo apt полное обновление

Затем камеру необходимо включить с помощью следующей команды:

sudo raspi-config

В меню выберите 5. Параметры интерфейса -> Камера P1. Выберите включение камеры и перезагрузите RPi, выполнив:

перезагружать

Теперь камера должна быть правильно настроена. Его можно проверить, открыв окно терминала и выполнив:

raspistill -v -o /home/pi/test.jpg

Изображение сохраняется в: / home / pi.

Шаг 5: Настройка Docker

Настройка Docker
Настройка Docker
Настройка Docker
Настройка Docker
Настройка Docker
Настройка Docker
Настройка Docker
Настройка Docker

Чтобы избежать зависимостей и ошибок установки, я решил создать собственный образ Docker для этого проекта (см. Wikipedia.org - Docker). Если вы никогда не использовали и не слышали о Docker, не беспокойтесь, я пошагово объясню, как использовать его в этом проекте. На самом деле это очень просто! Если вы хотите запустить этот проект на локальной установке (а не в контейнере Docker), я дам вам несколько советов. Но настоятельно рекомендуется использовать образ Docker. В конце концов, я создаю его, чтобы вам было проще запускать этот проект!

Что такое докер?

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

В этом проекте я впервые использовал Docker, и это просто потрясающе! Может быть, вы слышали о virtualenv или Anaconda для Python? Что ж, Docker очень похож в том смысле, что вы можете легко управлять версиями пакетов и запускать разные версии Python на одной хост-системе, используя другую среду (или контейнер, как он называется в Docker). Но по сравнению с virtualenv и Anaconda Docker намного мощнее, поскольку он не ограничивается только пакетами Python. Действительно, в контейнере Docker вы можете также устанавливать и управлять пакетами желаемой операционной системы. Например, рассмотрим веб-сайт, который вы хотите перенести, на котором работает веб-фреймворк Python (например, Django) с базой данных (например, MySQL). Без контейнера Docker вам пришлось бы устанавливать все пакеты на новый сервер, а этот процесс очень подвержен ошибкам и ошибкам. С другой стороны, когда ваш веб-сайт построен в Docker, миграция в основном так же проста, как перемещение файла / файлов изображения на новый сервер и их запуск. Как вы понимаете, Docker очень полезен и для проектов на Instructables;)! Если вы хотите узнать больше о Docker, посетите их веб-сайт: docker.org - Docker: Enterprise Container Platform. Теперь приступим к работе с Docker!

Установка Docker

Установите Docker, выполнив:

curl -sSL https://get.docker.com | ш

Затем пользователь добавляется в группу пользователей «docker», которая предоставляет права на запуск Docker. Это делают:

sudo usermod -aG docker $ ПОЛЬЗОВАТЕЛЬ

Теперь у вас должна быть возможность запускать Docker. Это можно проверить, запустив образ hello-world:

Докер запускает привет-мир

Наконец, давайте извлечем образ Docker, который содержит все зависимости, необходимые для запуска скриптов Python дверного звонка. Этот процесс может занять некоторое время, так как образ довольно большой (~ 1,5 ГБ). Выполнять:

докер тянуть erientes / дверной звонок

Примечание: файл Dockerfile можно найти в репозитории дверных звонков на Github. Теперь все готово для запуска скриптов дверного звонка, которые мы обсудим на следующем шаге.

Локальная установка

Опять же, я настоятельно рекомендую использовать образ Docker вместо локальной установки. Но чтобы завершить это руководство, я опишу некоторые шаги, которые я предпринял для локальной установки.

Чтобы иметь возможность запускать код, версия python должна быть> = 3.5 (я использовал python 3.5.3), и должны быть установлены следующие пакеты:

  • распознавание лица
  • пикамера
  • тупой
  • Подушка
  • Python-Telegram-бот
  • RPi. GPIO

Эта ссылка очень полезна: Github - Установите dlib и face_recognition на Raspberry Pi. Однако здесь есть некоторые предостережения: 1) Pillow требуется как минимум Python 3.5, который не будет установлен после этого метода. 2) Кроме того, с помощью этого метода не будут установлены все пакеты, необходимые для проекта дверного звонка. Однако вы сможете установить его, просто используя pip3.

Шаг 6: Запуск скриптов дверного звонка

Запуск скриптов дверного звонка
Запуск скриптов дверного звонка
Запуск скриптов дверного звонка
Запуск скриптов дверного звонка
Запуск скриптов дверного звонка
Запуск скриптов дверного звонка

Получите скрипты

Скрипты можно скачать вручную с: github.com - Erientes / doorbell. Или, если у вас установлен Git, выполните:

git clone

Создать псевдонимы

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

листовая панель ~ /.bashrc

Добавьте следующие строки и сохраните файл:

псевдоним doorbell_run = 'docker run --privileged -v / home / pi / doorbell: / doorbell -w / doorbell -it erientes / doorbell python $ 1'

псевдоним doorbell_login = 'docker run --privileged -v / home / pi / doorbell: / doorbell -w / doorbell -it erientes / doorbell bash'

Тестовые скрипты

Чтобы проверить, все ли установлено правильно, откройте новый терминал и выполните:

doorbell_run примеры / 0_test_installation.py

Результатом должно быть просто сообщение в окне терминала с надписью «Установка дверного звонка успешно завершена!». Чтобы проверить, может ли контейнер Docker получить доступ к камере, запустите:

doorbell_run примеры / 1_test_camera.py

При запуске 1_test_camera.py фотография будет сделана и сохранена как test.jpg, которую можно найти в / home / pi / doorbell. Наконец, драйверы светодиодов можно протестировать, выполнив:

doorbell_run примеры / 2_test_voicehat_drivers.py

Когда этот сценарий запущен, светодиод в переключателе аркады должен реагировать на нажатие кнопки.

Запуск скриптов дверного звонка

Чтобы запустить скрипты дверного звонка, сначала необходимо получить учетные данные бота Telegram. Установите Telegram на свой телефон и перейдите на telegram.me - Botfather. Начните разговор и введите:

/ newbot

Введите имя и логин для бота. После этого вам будет предоставлен токен доступа. Скопируйте это значение в файл credentials_telegram_template.py в / home / pi / doorbell и сохраните его в новом файле с именем credentials_telegram.py. Наконец, начните разговор с ботом, которого вы только что создали, щелкнув ссылку, которую предоставляет вам Botfather.

Наконец, давайте запустим дверной звонок с распознаванием лиц:

doorbell_run main.py

Примечания:

Если вы хотите узнать больше о том, как работает код, ознакомьтесь с комментариями в самих скриптах. Если у вас есть вопросы по коду, свяжитесь со мной через Github

Шаг 7: Использование дверного звонка

Image
Image
Использование дверного звонка
Использование дверного звонка
Использование дверного звонка
Использование дверного звонка

Запустим скрипт дверного звонка, выполнив:

doorbell_run main.py После загрузки пакетов скрипты простаивают. В основном могут произойти 2 вещи:

  1. Кто-то звонит в дверь.
  2. Кто-то добавлен в белый список.

Кто-то звонит в дверной звонок

В этом случае скрипт будет снимать фотографии, пока не сделает снимок, на котором будет обнаружено лицо. После обнаружения вызываются некоторые методы из пакета python face_recognition для вычисления 128 кодировки лица. Далее полученная кодировка сравнивается с кодировками в whitelist.csv и blacklist.csv. Возможные результаты приводят к следующему ответу:

В белый список? В черный список? Ответ
да Нет Загорится зеленый свет.
да да Загорится желтый свет. Камера дверного звонка отправляет фотографии боту Telegram с оранжевым значком. Это состояние может произойти, если кто-то был добавлен в оба списка. Например, когда кого-то сначала приветствовали, а потом занесли в черный список.
Нет Нет Загорится желтый свет. Камера дверного звонка отправляет фотографии боту Telegram с оранжевым значком.
Нет да Загорится красный свет. Камера дверного звонка отправляет фотографии боту Telegram с красным значком.

Кто-то добавлен в белый список

Чтобы добавить кого-либо в белый список, нажмите желтую кнопку светофора, когда дверной звонок находится в состоянии ожидания. Сначала загорится желтый свет. Если зеленый свет мигнет 3 раза, лицо человека успешно добавлено в белый список. Если зеленый индикатор не мигает 3 раза, попытка не удалась. В этом случае снова нажмите желтую кнопку. Вы можете легко проверить, удалось ли это сделать, позвонив в дверной звонок и проверив, прошел ли зеленый свет.

Как добавить кого-нибудь в черный список?

Очевидно, что люди с плохими намерениями не пройдут мимо, чтобы сфотографировать свое лицо. Вместо этого вы можете добавить изображения известных людей, которые (например) опубликовала полиция, в папку img / blacklist. Каждый час эта папка проверяется на наличие новых изображений. Если есть новое изображение, кодировка лица рассчитывается и добавляется в blacklist.csv. Затем изображение переименовывается и перемещается в папку / img / blacklist / encoded.

Примечания:

  • Работа со сценариями при входе в RPi обеспечивает гораздо больше контроля и информации, но базовый контроль и информацию можно получить, используя только дисплей светофора.
  • Распознавание лиц реализовано с помощью пакета python face_recognition. Этот пакет основан на Dlib, который содержит современный алгоритм распознавания лиц, который обеспечивает точность 99,38% на тесте Labeled Faces in the Wild (источник: dlib.net - High Quality Face Recognition with Deep Metric Learning).).
Конкурс вспомогательных технологий
Конкурс вспомогательных технологий
Конкурс вспомогательных технологий
Конкурс вспомогательных технологий

Первый приз в конкурсе Assistive Tech.

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