Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Сундучок на базе Raspberry Pi, который распознает ваше лицо

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

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

Программная часть данного проекта основывается на алгоритме, который представлен в библиотеке OpenCV computer vision library. Raspberry Pi является идеальной платформой для данного проекта, поскольку обладает достаточной вычислительной мощностью для запуска OpenCV и имеет небольшие габаритные размеры, позволяющие вместится в любом месте.

Данный проект средний по сложности. В нем выполняется компилирование и установка программного обеспечения на микрокомпьютере Raspberry Pi. Если у вас есть опыт создания подобных вещей, и вы не имеете проблем при использовании командной строки, тогда вы полностью готовы пройти все этапы данного проекта. Вы также можете обратиться к справочным материалам Adafruit learning system при возникновении каких-либо проблем.

Шаг #1: Подготовка сундучка

  • Просверлите отверстие диаметром 7/16 дюйма в верхней части сундучка для вставки камеры Pi.
  • Просверлите отверстие большего диаметра сзади сундучка для вставки нажимной кнопки и силовых кабелей.

Шаг #2: Изготовления защелки

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

Шаг #3: Завершение работы с сундучком

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

Шаг #4: Подключение электронных компонентов

  • Подключите сигнальную линию сервопривода к выводу GPIO 18 на Raspberry Pi. Питание и земля для сервопривода должны подключаться к питающим выводам аккумулятора.
  • Подключите один вывод нажимной кнопки к выводу Pi GPIO 25, и через резистор 10 кОм к выводу напряжения питания 3.3 В Pi. Подключите второй вывод нажимной кнопки к земляному выводу Pi.
  • Соедините вместе земляные выводы аккумулятора и Pi.
  • Установите Pi камеру через отверстие в верхней части сундучка и подсоедините кабель к микрокомпьютеру Pi.

Шаг #5: Компилирование OpenCV

  • На данном этапе необходимо установить последнюю версию OpenCV на Raspberry Pi. К сожалению, сначала нужно скомпилировать OpenCV из исходного кода, поскольку старая двоичная версия не содержит алгоритмы распознавания лица, используемые в проекте. Компилирование OpenCV на Pi занимает около 5 часов.
  • Подайте питание на микрокомпьютер Pi и подключитесь к нему через сеанс работы с терминалом.
  • Выполните следующие команды для установки взаимозависимостей OpenCV:

sudo apt-get update && sudo apt-get install build-essential cmake pkg-config python-dev libgtk2.0-dev libgtk2.0 zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libjasper-dev libavcodec-dev swig

  • Выполните следующие команды для загрузки и разархивирования исходного кода для последней версии OpenCV:

wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.7/opencv-2.4.7.tar.gz && tar zxvf opencv-2.4.7.tar.gz

  • Выполните следующие команды для подготовки компиляции исходного кода OpenCV:

cd opencv-2.4.7 && cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_PERF_TESTS=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_ocl=OFF

  • Выполните данную команду для запуска компиляции OpenCV (примите во внимание, что компиляция занимает около 5 часов):

make

  • После завершения компиляции OpenCV, выполните данную команду для установки Pi:

sudo make install

  • Далее с помощью следующих команд установите взаимозависимости Python:

sudo apt-get install python-pip && sudo pip install picamera && sudo pip install rpio

Шаг #6: Пробное распознавание лица

  • На данном этапе мы опробуем алгоритмы распознавания лица, которые позволят открывать сундучок.
  • Загрузите программное обеспечение для данного проекта с депозитария github repository (сноска: https://github.com/tdicola/pi-facerec-box).
  • Разархивируйте архив и скопируйте содержимое в директорий на Pi.
  • Во время сеанса работы с терминалом на Pi просмотрите директорий и выполните следующую команду для запуска пробного скрипта:

sudo python capture-positives.py

  • Во время работы скрипта вы можете нажать кнопку, располагаемую на сундучке, для фотографирования с помощью камеры Pi. Скрипт попытается определить одно лицо в захваченном изображении и сохранить его как правильно отснятый кадр в поддиректории ./training/positive.
  • Каждый раз при захвате изображения, кадр записывается в файл capture.pgm. Вы можете просмотреть его в графическом редакторе, чтобы определить, как камера Pi выполняет захват и определяет изображение вашего лица.
  • Используйте кнопку для захвата 5 или более изображений вашего лица для получения правильных результатов. Попытайтесь получить изображения с разных углов, при различном освещении и т.д. На фотографиях вы видите полученные мной изображения лица.
  • Если вам интересно, вы можете просмотреть директорий ./training/negative, в котором размещаются изображения из базы данных распознавания лиц AT&T, которые можно использовать как примеры людей, которые не должны иметь доступ к открытию сундучка.
  • После получения правильных изображений запустите следующие команды для обработки правильных и неправильных пробных изображений, и для проверки алгоритма распознавания лица (примите во внимание, что данная пробная операция занимает около 10 минут):

python train.py

Шаг #7: Конфигурирование сервопривода

  • На данном этапе необходимо определить значения ширины импульсов сервопривода для запирания и отпирания защелки.
  • При подаче питания на микрокомпьютер Raspberry Pi и сервопривод защелки, подключитесь к Pi в сессии работы с терминалом. Убедитесь в том, что сундучок открыт так, что вы можете видеть перемещение сервопривода без заклинивания.
  • Выполните следующую команду для запуска интерактивной сессии Python как суперпользователь (необходимо иметь доступ к выводам GPIO и возможность перемещения сервопривода):

sudo python

  • В командной строке Python >>>, введите данную команду для загрузки библиотеки RPIO servo library:

from RPIO import PWM

  • Далее введите следующую команду:

servo = PWM.Servo()

  • В заключении выполните данную команду для перемещения защелки сервопривода в центральное положение:

servo.set_servo(18, 1500)

  • Параметр 1500 для установки функции set_servo определяет ширину импульса для привода в микросекундах. Крайние значения находятся в диапазоне от 1000 до 2000.
  • Попытайтесь выполнить функцию set_servo с различными значениями ширины импульса, пока не получите значения, при которых происходит правильное закрытие и открытие защелки, как показано на фотографиях.
  • Не забывайте, что вы можете снять качалку сервопривода и прикрепить повторно для надлежащей ориентации защелки на сервоприводе.
  • Как только значения будут подобраны, откройте config.py в текстовом редакторе с правами суперпользователя и измените следующие значения:
  • Установите LOCK_SERVO_UNLOCKED равным значению ширины импульса для разблокировки положения защелки – отпирание. На моем железе надлежащее значение 2000.
  • Установите LOCK_SERVO_LOCKED для определения блокировки положения защелки – запирание. В моем случае это значение 1100.

Шаг #8: Запуск программного обеспечения

  • После проверки распознавания лица и калибровки сервопривода, можно запустить программный код!
  • При подаче питания на микрокомпьютер Raspberry Pi и сервопривод защелки, подключитесь к Pi в сессии работы с терминалом и просмотрите корневой директорий проекта.
  • Выполните следующую команду для запуска программного кода (будьте внимательны, поскольку сразу произойдет запирание сундучка):

sudo python box.py

  • После загрузки пробных данных (это занимает несколько минут), направьте камеру на ваше лицо и нажмите кнопку для попытки распознавания лица.
  • Если сундучок распознает ваше лицо, сработает сервопривод и отопрет защелку. Если ваше лицо не распознано, на терминале отобразится сообщение, насколько ваше лицо было близко к пробному изображению.
  • Для распознавания лица необходимо, чтобы захваченное изображение совпало с пробным, с достоверностью 2000 или менее. Если ваше лицо совпадает с данными пробного изображения, но достоверность невысокая, вы можете изменить порог достоверности в config.py (под настройкой POSITIVE_THRESHOLD). Если распознавание все еще не достоверное, тогда загрузите больше надлежащих захваченных изображений и запустите пробное распознавание еще раз. Алгоритм распознавания лица в данном проекте сильно зависит от освещения лица, поэтому попытайтесь иметь тот же источник освещения, что и при пробных попытках (или добавьте несколько дополнительных изображений при различных условиях освещенности).
  • После раскрытия сундучка повторно нажмите кнопку для его закрытия. Для этого операция распознавания лица не требуется.
  • Если сундучок плохо открывается и не распознает ваше лицо, тогда выполните шаги конфигурации сервопривода для ручного перемещения сервопривода в положение отпирания с помощью команды set_servo.

Оригинал статьи

Теги:

Опубликована: 0 2
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (2) | Я собрал (0) | Подписаться

0
Леонид #
Можно ли для данного проекта использовать не Pi камеру, а веб камеру?
Ответить
0
Никита #
Веб камера может быть использована?!
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
ELM327 OBD II — адаптер с поддержкой CAN USB осциллограф DSO-2090
вверх