Съдържание:

Звънец на вратата с разпознаване на лица: 7 стъпки (със снимки)
Звънец на вратата с разпознаване на лица: 7 стъпки (със снимки)

Видео: Звънец на вратата с разпознаване на лица: 7 стъпки (със снимки)

Видео: Звънец на вратата с разпознаване на лица: 7 стъпки (със снимки)
Видео: Детето ми се храни само със зеленчуци 2024, Юли
Anonim
Звънец на вратата с разпознаване на лица
Звънец на вратата с разпознаване на лица

Мотивация

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

Главна информация

Системата за звънене на врати е предназначена главно за възрастни хора или хора с увредено зрение и е доста пряма в работата си. Накратко, превключвателят на звънеца задейства камерата, за да получи кадри. След това лица в кадрите се откриват и съпоставят с бял и черен списък. Пътникът получава ясна визуална обратна връзка чрез ясен светофар. По този начин зелената, жълтата или червената светлина показват, че лицето (ите) са в белия списък, неизвестни съответно на системата или в черния списък. Ако се задейства жълтата или червената светлина, снимката се изпраща от бот на Telegram, за да информира/предупреди роднина или пазач.

Ниво на експертиза

Проектът е създаден за ентусиасти, които са особено любопитни за използването на компютърно зрение и изкуствен интелект. Тази инструкция е написана за аудитория от начинаещи, така че не се притеснявайте, ако нямате опит! Освен това проектът може да бъде интересен и за по -опитни производители, тъй като тръбопроводът е организиран по начин, по който можете да го разширите със собствена компютърна визия и идеи за разпознаване на лица без много проблеми.

Стъпка 1: Материали

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

Списък на продуктите с минимални изисквания:

Продукт Връзка Коментирайте
Малина Pi 3b RPi Връзката показва RPi 4, тъй като има много по -добра производителност и почти равна цена като RPi 3b.
Micro SD Amazon Микро SD карта от 16 GB или по -голяма ще свърши работа. Но 16 GB картите на Amazon сега са почти същата цена като 32 GB картите.
Камера Raspberry Pi Amazon Камера v1 е по -евтина, но v2 е по -добра и ще се поддържа по -дълго.
15 -пинов FPC гъвкав кабел Amazon Продължителността всъщност зависи от обстоятелствата при извършване на този проект. Ако просто искате да изградите прототип, оригиналният гъвкав кабел ще свърши работа.
Захранване 5v micro usb Адафрут Този никога не разочарова! Страхотно качество. (Не е на снимката)
Аркадни бутони с вграден светодиод Amazon Изберете желания от вас размер, но CAD дизайнът се основава на 60 мм бутони
Резистори Amazon Нуждаете се само от няколко резистора 1k и 100 ома. Редовните 1/4W са добре.
Кондензатори 0,1 uF Amazon Необходими са три кондензатора. (Не е на снимката)
Джъмперни проводници / лентов кабел AmazonAmazon Ако искате да си спестите пари, можете да използвате и стар лентов кабел за флопи устройство (вижте снимката).
Свиваща се тръба / Електрическа лента AmazonAmazon

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

Инструмент От съществено значение? Коментирайте
Поялник Да
Мултиметър Да
Машина за сваляне на тел Да Или можете да използвате нож/ножица.
Лазерен нож Не
3D принтер Не
Щипки Не Полезно за поддържане на кутията заедно във фазата на тестване.

Забележки:

За да увелича достъпността на проекта, реших да го разработя с помощта на Raspberry Pi 3b. Въпреки че увеличава достъпността, намалява възможностите на приложението, тъй като RPi не са толкова бързи. Ако търсите по -бърз компютър с един борд, може да искате да разгледате NVIDIA Jetson Nano

Стъпка 2: Окабеляване

Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации

Схематичната диаграма е най -информативна за тази стъпка и е напълно обяснима. В случай, че сте нов в електрониката, можете да използвате легендарното изображение. Стойността на компонента (ако има такава) е посочена в схематичната диаграма. Снимките може да ви помогнат да видите как изграждам веригата. По принцип свързах всички компоненти възможно най -близо до аркадния бутон, което води до ясен преглед на случващото се.

Забележки:

  • Много обичам да използвам конектори за лентов кабел, тъй като те са по -здрави от използването на единични джъмперни проводници.
  • Както беше предложено, използвах изтрит лентов кабел от стар компютър. Това обаче е малко сложно, тъй като ще трябва да потвърдите ръчно конфигурацията на кабела. В този проект например открих, че някои дупки са свързани помежду си (вероятно са използвани като основа за първоначалното приложение). Затова по -късно трябваше да взема различен кабел, както можете да видите на снимките.

Стъпка 3: Изграждане на корпуса

Изграждане на корпуса
Изграждане на корпуса
Изграждане на корпуса
Изграждане на корпуса
Изграждане на корпуса
Изграждане на корпуса
Изграждане на корпуса
Изграждане на корпуса

Корпус на камерата

Много обвивки за пикамера могат да бъдат свободно изтеглени от интернет. Така че, аз решавам да не изобретявам колелото и да избера основен, но хубав корпус от интернет: thingiverse.com - калъф/кутия за малина pi камера. (Извикайте към дизайнера VGer.)

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

За корпуса на светофара проектирах малка кутия в 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 и нямам много опит в използването на CAD софтуер, но трябва да кажа, че наистина харесвам софтуера и всички допълнителни инструменти, идващи с Fusion 360

Стъпка 4: Конфигуриране на камерата

Конфигуриране на камерата
Конфигуриране на камерата
Конфигуриране на камерата
Конфигуриране на камерата
Конфигуриране на камерата
Конфигуриране на камерата

Предполага се, че имате инсталиран Raspbian и той работи в режим GUI. Ако все още нямате инсталиран Raspbian, можете да следвате тази статия: raspberrypi.org - Инсталиране на образи на операционната система. Ако стартирате Raspbian, трябва да видите работен плот, както е показано на снимките.

Нека конфигурираме камерата на RPi и да видим дали работи! Описаният тук метод е директно от raspberrypi.org - Документация. Първо, нека актуализираме до най -новите пакети (включително фърмуера на камерата), като изпълним следните команди в терминален прозорец (вижте снимките):

sudo apt актуализация

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, която може да бъде пропусната, ако просто искате да стартирате кода.

Този проект използвам 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 докер $ USER

Сега трябва да можете да стартирате Docker. Това може да бъде потвърдено, като стартирате образа на hello-world:

docker run hello-world

И накрая, нека издърпаме изображението на Docker, което съдържа всички зависимости, необходими за изпълнение на скриптовете на Python на звънеца. Този процес може да отнеме известно време, тъй като изображението е доста голямо (~ 1,5 GB). Изпълни:

докер дръпнете erientes/звънец на вратата

Забележка: Dockerfile може да бъде намерен в хранилището на звънеца на Github. Сега всичко е готово за стартиране на скриптове на звънеца, които ще бъдат обсъдени в следващата стъпка.

Локална инсталация

Отново силно препоръчвам да използвате образа на Docker вместо локална инсталация. Но за да завърша този урок, сега ще опиша някои от стъпките, които предприех за локалната инсталация.

За да можете да стартирате кода, версията на python трябва да бъде> = 3.5 (използвах python 3.5.3) и трябва да бъдат инсталирани следните пакети:

  • разпознаване на лица
  • пикамера
  • буца
  • Възглавница
  • python-telegram-bot
  • RPi. GPIO

Тази връзка е доста полезна: Github - Инсталирайте dlib и face_recognition на Raspberry Pi. Тук обаче има някои предупреждения: 1) Възглавницата се нуждае от поне Python 3.5, който няма да бъде инсталиран по този метод. 2) Също така, не всички пакети, които са необходими в проекта на звънеца на вратата, ще бъдат инсталирани, като следвате този метод. Трябва обаче да можете да го инсталирате, като просто използвате pip3.

Стъпка 6: Изпълнение на скриптове на звънеца

Изпълнение на скриптове на звънеца
Изпълнение на скриптове на звънеца
Изпълнение на скриптове на звънеца
Изпълнение на скриптове на звънеца
Изпълнение на скриптове на звънеца
Изпълнение на скриптове на звънеца

Вземете скриптовете

Скриптовете могат да бъдат изтеглени ръчно от: github.com - Erientes/звънец. Или ако имате инсталиран Git, изпълнете:

git clone

Създайте псевдоними

Сега, за да улесним живота си, нека създадем някои псевдоними за изпълнение на скриптовете. Изпълни:

leafpad ~/.bashrc

Добавете следните редове и запишете файла:

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

псевдоним doorbell_login = 'докер бягане -привилегировано -v/home/pi/звънец на вратата:/звънец -w/звънец на вратата -it erientes/звънец на вратата'

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

За да проверите дали всичко е инсталирано правилно, отворете нов терминал и изпълнете:

Примери за звънене на вратата/0_test_installation.py

Резултатът трябва просто да бъде съобщение в прозореца на терминала, което казва „Инсталацията на звънеца завърши успешно!“. За да проверите дали камерата може да бъде достъпна от контейнера на Docker, изпълнете:

примери за звънец на вратата/1_test_camera.py

При стартиране на 1_test_camera.py снимка ще бъде направена и записана като 'test.jpg', която може да бъде намерена в/home/pi/звънец. И накрая, LED драйверите могат да бъдат тествани чрез изпълнение:

Примери за звънене на вратата/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-Висококачествено разпознаване на лица с дълбоко метрично обучение).
Състезание за помощни технологии
Състезание за помощни технологии
Състезание за помощни технологии
Състезание за помощни технологии

Първа награда в конкурса за помощни технологии

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