Мазмуну:

Жүз таануу менен эшик коңгуроосу: 7 кадам (сүрөттөр менен)
Жүз таануу менен эшик коңгуроосу: 7 кадам (сүрөттөр менен)

Video: Жүз таануу менен эшик коңгуроосу: 7 кадам (сүрөттөр менен)

Video: Жүз таануу менен эшик коңгуроосу: 7 кадам (сүрөттөр менен)
Video: Аял кантсе, эркекти тошокто кандырат? 2024, Июль
Anonim
Жүз таануу менен эшик коңгуроосу
Жүз таануу менен эшик коңгуроосу

Мотивация

Жакында менин өлкөмдө карыларды өз үйлөрүндө бутага алган тоноолордун толкуну болду. Адатта, кирүүчүлөрдүн өздөрү тарабынан берилет, анткени келгендер аларды кароочу/медайым экенине ишендиришет. Бул жөн эле сөз эмес, бул окуялар мени кандай ачуулуу жана кайгылуу сезет. Үй сиздин биринчи коопсуз башпаанегиңиз болушу керек, андан тышкары, эгер сиз сыртта жүргөндө аялуу абалда болсоңуз. Ушуну эске алып, мен бул долбоорду баштадым.

Жалпы маалымат

Эшиктин коңгуроо системасы негизинен улгайган же көрүүсү начар адамдар үчүн иштелип чыккан жана иштөөдө абдан түз. Кыскача айтканда, эшиктин коңгуроосу камераны кадрларды тартуу үчүн иштетет. Андан кийин, кадрлардагы жүздөр аныкталып, ак тизмеге жана кара тизмеге дал келет. Жолоочу светофордун так дисплейи аркылуу так визуалдык пикир алат. Муну менен, жашыл, сары же кызыл жарык, бул кишилердин ак тизмеде, системага белгисиз же кара тизмеде экенин көрсөтөт. Эгерде сары же кызыл жарык күйгүзүлсө, сүрөт Telegram бот тарабынан тууганына же кароолчусуна кабарлоо/эскертүү үчүн жөнөтүлөт.

Экспертизанын деңгээли

Долбоор компьютердин көрүүсүн жана жасалма интеллектти колдонууга өзгөчө кызыккан ышкыбоздор үчүн түзүлгөн. Бул үйрөткүч башталгыч аудитория үчүн жазылган, андыктан тажрыйбаңыз жок болсо кабатыр болбоңуз! Мындан тышкары, долбоор тажрыйбалуу өндүрүүчүлөр үчүн кызыктуу болушу мүмкүн, анткени мунай кууру аны өзүңүздүн компьютериңиздин көз карашы менен кеңейтүү жана эч кандай кыйынчылыксыз жүздү таануу идеялары менен уюштурулган.

1 -кадам: материалдар

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

Минималдуу талаптар менен продукт тизмеси:

Продукт Шилтеме Комментарий
Raspberry Pi 3b RPi Шилтеме RPi 4 көрсөтөт, анткени ал RPi 3b менен салыштырмалуу жакшыраак иштейт жана бирдей баага ээ.
Micro SD Amazon 16 ГБ же андан чоңураак микро SD карта бул ишти аткарат. Бирок Амазонкадагы 16 ГБ карталар азыр 32 ГБ карталар менен дээрлик бирдей.
Raspberry Pi камерасы Amazon Камера v1 арзаныраак, бирок v2 жакшыраак жана узакка колдоого алынат.
15 пин FPC ийкемдүү кабели Amazon Узундугу чындыгында бул долбоорду ишке ашыруунун шарттарына жараша болот. Эгерде сиз жөн гана прототип түзгүңүз келсе, оригиналдуу ийкемдүү кабель бул ишти аткарат.
Power Supply 5v micro usb Adafruit Бул эч качан жолуккан эмес! Улуу сапат. (Сүрөттө жок)
Камтылган LED менен аркада баскычтары Amazon Каалаган өлчөмдү тандаңыз, бирок CAD дизайны 60 мм баскычтарга негизделген
Резисторлор Amazon Сизге 1к жана 100 Ом резисторлор керек. Кадимки 1/4 Вт жакшы.
Конденсатор 0.1 uF Amazon Үч конденсатор керек. (Сүрөттө жок)
Jumper Wires / Тасма Кабели AmazonAmazon Эгерде сиз өзүңүзгө бир аз акча короткуңуз келсе, эски дискетанын лента кабелин колдонсоңуз болот (сүрөттү караңыз).
Кыскартуучу түтүк / Электр лента AmazonAmazon

Керектүү шаймандар:

Курал Негизги? Комментарий
Кандооч Ооба
Мультиметр Ооба
Зым чечүүчү Ооба Же бычак/кайчы колдонсоңуз болот.
Лазердик кескич Жок
3D принтер Жок
Кыскычтар Жок Тестирлөө баскычында кутучаны бирге кармоо үчүн пайдалуу.

Эскертүүлөр:

Долбоордун жеткиликтүүлүгүн жогорулатуу үчүн мен аны Raspberry Pi 3b менен иштеп чыгууну чечтим. Бул жеткиликтүүлүктү жогорулатат, бирок бул колдонмонун мүмкүнчүлүктөрүн азайтат, анткени RPi тез эмес. Эгерде сиз тезирээк бир тактай компьютерин издесеңиз, анда NVIDIA Jetson Nanoго кайрылгыңыз келиши мүмкүн

2 -кадам: Кабелдөө

Электр өткөргүчтөрү
Электр өткөргүчтөрү
Электр өткөргүчтөрү
Электр өткөргүчтөрү
Электр өткөргүчтөрү
Электр өткөргүчтөрү

Схемалык диаграмма бул кадам үчүн эң маалыматтуу жана абдан түшүнүктүү. Эгерде сиз электроникада жаңы болсоңуз, анда легендадагы сүрөттү колдоно аласыз. Компоненттин мааниси (эгер болсо) схемалык диаграммада айтылган. Сүрөттөр схеманы кантип түзөөрүмдү түшүнүүгө жардам берет. Негизинен, мен бардык компоненттерди аркадалык баскычка мүмкүн болушунча жакыныраак туташтырдым, бул эмне болуп жатканын так карап чыгууга алып келет.

Эскертүүлөр:

  • Мен чындыгында ленталуу кабелдик туташтыргычтарды колдонгонду жакшы көрөм, анткени алар бир секирүүчү зымдарга караганда бышык.
  • Сунушталгандай, мен эски компьютерден тазаланган лента кабелин колдондум. Бул бир аз татаал, бирок сиз кабелдин конфигурациясын кол менен ырасташыңыз керек болот. Бул долбоордо, мисалы, мен кээ бир тешиктер бири -бири менен байланышта экенин билдим (кыязы, түп колдонмо үчүн жер катары колдонулат). Ошондуктан, кийинчерээк сүрөттөрдө көрүнүп тургандай, башка кабель алууга туура келди.

3 -кадам: Корпусту куруу

Корпусту куруу
Корпусту куруу
Корпусту куруу
Корпусту куруу
Корпусту куруу
Корпусту куруу
Корпусту куруу
Корпусту куруу

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

Пикамеранын көптөгөн корпустарын интернеттен бекер көчүрүп алса болот. Ошентип, мен дөңгөлөктү кайра ойлоп табууну эмес, интернеттен негизги, бирок жакшы корпусту тандап алууну чечтим: thingiverse.com - Raspberry pi camera case/enclosure. (Дизайнер В. Герге кыйкырык.)

Светофордун корпусу

Светофордун корпусу үчүн мен Autodesk Fusion 360та бардык жабдууларга туура келген кичинекей кутучаны ойлоп таптым (ал бекер жүктөлөт, эскертүүлөрдү караңыз). Тиркемеде сиз менин жергиликтүү лазер кесүүчү компанияма жөнөткөн файлды таба аласыз. Ошентип, дизайн 6мм табактын калыңдыгына негизделген. Бирок, эгер сиз нерселерди тууралоону кааласаңыз, бул шилтеме аркылуу файлдын бардык түрлөрүнө кире аласыз. Сүрөттөрдө көрүнүп тургандай, лазер кескичке мүмкүнчүлүгүңүз жок болсо, картон кутуну да колдонсоңуз болот. Мен сүрөттөгү картон кутуну прототиптөө үчүн колдондум жана ал тумар сыяктуу иштейт.

Ассамблея абдан алдыга жылат:

  1. Аркада өчүргүчтөрүн орнотуңуз.
  2. Эшиктин коңгуроосунун зымдарын бекер кармагыла.
  3. Тасма кабелин RPiге туташтырыңыз.
  4. RPi'ни астынкы панелге бурап коюңуз.
  5. Эшик коңгуроосунун зымдарын зым туташтыргычына туташтырып, аны астыңкы панелге да орнотуңуз.
  6. Пикамераны RPiге туташтырыңыз.
  7. Эшиктин коңгуроосун алмаштыруучу зым менен RPi электр зымы үчүн каптал панелдердин биринде тешик жасаңыз.

Зым туташтыргычы эшиктин коңгуроосунун зымдарын орнотуу чекити катары колдонулат, андыктан ал кийинчерээк учурдагы коңгуроого бекитилет. Баары азыр ордунда жана аларды жабыштырууга болот. Бирок, адегенде кийинки кадамдарды бүтүрүп, баары ойдогудай иштегенине ынанууңуз мүмкүн.

Эскертүүлөр:

Autodesk Fusion 360 хоббистер үчүн бекер жеткиликтүү! Эгерде сиз көчүрмөсүн алууну кааласаңыз, бул шилтемеге баш багыңыз: autodesk.com - Fusion 360 for Hobbyists. Кээ бир терминдер бар, андыктан аларды окуп, колдонууну унутпаңыз. Бул менин Fusion 360 менен болгон биринчи долбоорум жана менде CAD программасын колдонуу боюнча көп тажрыйба жок, бирок мен программалык камсыздоону жана Fusion 360 менен келген бардык кошумча куралдарды абдан жакшы көрөрүмдү айтышым керек

4 -кадам: Камераны конфигурациялоо

Камераны конфигурациялоо
Камераны конфигурациялоо
Камераны конфигурациялоо
Камераны конфигурациялоо
Камераны конфигурациялоо
Камераны конфигурациялоо

Сизде Raspbian орнотулган жана ал GUI режиминде иштейт деп болжолдонууда. Эгерде сизде Raspbian орнотула элек болсо, анда бул макаланы ээрчип алсаңыз болот: raspberrypi.org - Операциялык системанын сүрөттөрүн орнотуу. Эгерде сиз Raspbianди жүктөсөңүз, анда сүрөттөрдө көрсөтүлгөндөй рабочий столун көрүшүңүз керек.

Келгиле, камераны RPiде конфигурациялап, анын иштээрин көрөлү! Бул жерде сүрөттөлгөн ыкма түз raspberrypi.org - Documentation. Биринчиден, терминалдар терезесинде төмөнкү буйруктарды аткаруу менен акыркы пакеттерге (анын ичинде камера камтылган программасына) жаңыралы (сүрөттөрдү караңыз):

sudo apt update

sudo apt толук жаңыртуу

Андан кийин, камера төмөнкү буйрукту колдонуу менен иштетилиши керек:

sudo raspi-config

Менюда 5ке өтүңүз. Interfacing Options -> P1 Camera. Камераны иштетүүнү жана RPiди кайра иштетүүнү тандаңыз:

кайра жүктөө

Эми камера туура конфигурацияланышы керек. Бул терминалдык терезени ачуу менен текшерилип, аткарылышы мүмкүн:

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

Сүрөт сакталат: /home /pi.

5 -кадам: Докерди орнотуу

Docker орнотулууда
Docker орнотулууда
Docker орнотулууда
Docker орнотулууда
Docker орнотулууда
Docker орнотулууда
Docker орнотулууда
Docker орнотулууда

Көз карандылыкты жана орнотуу каталарын болтурбоо үчүн, мен бул долбоор үчүн ыңгайлаштырылган Docker сүрөтүн түзүүнү чечтим (wikipedia.org - Docker караңыз). Эгерде сиз Docker жөнүндө эч качан колдонбосоңуз же укпасаңыз, кабатыр болбоңуз, мен аны бул долбоордо кантип колдонууну этап -этабы менен түшүндүрөм. Чынында, бул супер оңой! Эгерде сиз бул долбоорду жергиликтүү орнотууда иштетүүнү кааласаңыз (Docker контейнеринде эмес), мен сизге кээ бир кеңештерди берем. Бирок Docker сүрөтүн колдонуу сунушталат. Кантсе да, мен бул долбоорду иштетүүңүздү жеңилдетүү үчүн куруп жатам!

Docker деген эмне?

Эскертүү: бул бөлүк жөн эле кодду иштеткиңиз келсе, өткөрүп жиберүүгө мүмкүн болгон Docker жөнүндө кээ бир маалымат менен камсыз кылат.

Бул долбоор мен Dockerди биринчи жолу колдондум жана бул укмуш! Балким, Python үчүн virtualenv же Anaconda жөнүндө уккандырсыз? Ооба, 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 $ USER

Эми сиз Dockerди иштете алышыңыз керек. Бул салам дүйнөсүнүн сүрөтүн иштетүү аркылуу ырасталышы мүмкүн:

docker run hello-world

Акырында, коңгуроо Python скрипттерин иштетүү үчүн зарыл болгон бардык көз карандылыктарды камтыган Docker сүрөтүн тарталы. Сүрөт абдан чоң болгондуктан (~ 1,5 ГБ) бул процесс бир аз убакытты алышы мүмкүн. Аткаруу:

docker pull erientes/эшиктин коңгуроосу

Эскертүү: Dockerfile Githubдагы коңгуроо кампасынан табылышы мүмкүн. Эми, баары кийинки этапта талкуулана турган эшик коңгуроосунун скрипттерин иштетүүгө даяр.

Жергиликтүү орнотуу

Дагы, мен жергиликтүү орнотуунун ордуна Docker сүрөтүн колдонууну сунуштаар элем. Бирок бул окуу куралын аягына чыгаруу үчүн, мен азыр жергиликтүү орнотуу үчүн жасаган кээ бир кадамдарды сүрөттөп берем.

Кодду иштетүү үчүн, python версиясы> = 3.5 болушу керек (мен python 3.5.3 колдонгом) жана төмөнкү пакеттер орнотулушу керек:

  • face_recognition
  • пикамера
  • numpy
  • Жаздык
  • python-telegram-бот
  • RPi. GPIO

Бул шилтеме абдан пайдалуу: Github - Raspberry Piге dlib жана face_recognition орнотуңуз. Бирок, бул жерде кээ бир эскертүүлөр бар: 1) Жаздыкка бул ыкма боюнча орнотулбай турган Python 3.5 жок дегенде керек. 2) Ошондой эле, эшик коңгуроосунун долбоорунда керектүү болгон бардык пакеттер бул ыкманы колдонуу менен орнотулбайт. Бирок, аны жөн эле pip3 аркылуу орното алышыңыз керек.

6 -кадам: эшиктин коңгуроосун иштетүү

Doorbell скрипттерин иштетүү
Doorbell скрипттерин иштетүү
Doorbell скрипттерин иштетүү
Doorbell скрипттерин иштетүү
Doorbell скрипттерин иштетүү
Doorbell скрипттерин иштетүү

Скрипттерди алыңыз

Скрипттерди кол менен түшүрсө болот: github.com - Erientes/doorbell. Же эгер сизде Git орнотулган болсо, аткарыңыз:

git clone

Лакап аттарды түзүү

Эми, жашообузду бир аз жеңилдетүү үчүн, скрипттерди иштетүү үчүн кээ бир лакап аттарды түзөлү. Аткаруу:

баракча ~/.bashrc

Төмөнкү саптарды кошуп, файлды сактаңыз:

alias doorbell_run = 'докердик чуркоо -артыкчылыктуу -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell python $ 1'

alias doorbell_login = 'докердик чуркоо -артыкчылыктуу -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell bash'

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

Баары туура орнотулганын текшерүү үчүн, жаңы терминалды ачыңыз жана аткарыңыз:

doorbell_run мисалдары/0_test_installation.py

Жыйынтык терминалдын терезесинде "Doorbell орнотуу ийгиликтүү аяктады!" Деген билдирүү болушу керек. Камерага Docker контейнери аркылуу кирүүгө болорун текшерүү үчүн:

doorbell_run мисалдары/1_test_camera.py

1_test_camera.py иштетүү менен сүрөт алынат жана 'test.jpg' катары сакталат, аны/home/pi/doorbellден тапса болот. Акырында, LED драйверлерин аткаруу менен текшерүүгө болот:

эшик коңгуроосунун мисалдары/2_test_voicehat_drivers.py

Бул скрипт иштеп жатканда, баскыч басылганда, аркада которгучундагы LED жооп бериши керек.

Doorbell скрипттерин иштетүү

Doorbell скрипттерин иштетүү үчүн, адегенде Telegram ботунун ишеним грамоталарын алуу керек. Телефонуңузга Telegram орнотуп, telegram.me дарегине өтүңүз - Ботата. Сүйлөшүүнү баштаңыз жана киргизиңиз:

/newbot

Боттун атын жана колдонуучу атын толтуруңуз. Андан кийин, сизге жетүү белгиси берилет. Бул маанини/home/pi/doorbell'деги 'credentials_telegram_template.py' файлына көчүрүп, 'credentials_telegram.py' аттуу жаңы файлга сактаңыз. Акырында, Botfather сизге берген шилтемени чыкылдатып, өзүңүз түзгөн бот менен сүйлөшүүнү баштаңыз.

Акыр -аягы, эшик коңгуроосун жүз таануу менен иштетели:

doorbr_run main.py

Эскертүүлөр:

Эгерде сиз коддун кандай иштээри жөнүндө көбүрөөк билгиңиз келсе, сценарийлердеги комментарийлерди текшериңиз. Эгерде код боюнча суроолоруңуз болсо, Github аркылуу мага кайрылыңыз

7 -кадам: эшик коңгуроосун колдонуу

Image
Image
Эшиктин коңгуроосун колдонуу
Эшиктин коңгуроосун колдонуу
Эшиктин коңгуроосун колдонуу
Эшиктин коңгуроосун колдонуу

Келгиле, эшиктин коңгуроосун аткаралы:

doorbr_run main.py Пакеттер жүктөлгөндөн кийин, скрипттер иштебей калат. Негизинен 2 нерсе болушу мүмкүн:

  1. Кимдир бирөө эшиктин коңгуроосун басат.
  2. Кимдир бирөө ак тизмеге кошулат.

Кимдир бирөө эшиктин коңгуроосун басат

Бул учурда, сценарий жүзү аныкталган сүрөттү тартмайынча сүрөт тарта баштайт. Аныкталгандан кийин, жүздүн 128 кодун эсептөө үчүн python 'face_recognition' айрым ыкмалары чакырылат. Андан кийин, алынган коддоо whitelist.csv жана blacklist.csv коддору менен салыштырылат. Мүмкүн болгон натыйжалар төмөнкү жоопту алып келет:

Ак тизмедеби? Кара тизмедеби? Жооп
Ооба Жок Жашыл жарык күйөт.
Ооба Ооба Сары жарык күйөт. Эшиктин коңгуроосунун камерасы апельсин сүрөтчөсү бар сүрөттөрдү Telegram ботуна жөнөтөт. Эгер кимдир бирөө эки тизмеге кошулган болсо, бул абал болушу мүмкүн. Мисалы, кимдир бирөө алгач тосуп алса, кийин кара тизмеге киргенде.
Жок Жок Сары жарык күйөт. Эшиктин коңгуроосунун камерасы апельсин сүрөтчөсү бар сүрөттөрдү Telegram ботуна жөнөтөт.
Жок Ооба Кызыл жарык күйөт. Эшиктин коңгуроо камерасы сүрөттөрдү Telegram ботуна кызыл белгиси менен жөнөтөт.

Кимдир бирөө ак тизмеге кошулат

Кимдир бирөөнү ак тизмеге кошуу үчүн эшиктин коңгуроосу бош турганда светофордун сары баскычын басыңыз. Биринчиден, сары жарык күйөт. Жашыл жарык 3 ирет өчсө, адамдын жүзү ак тизмеге ийгиликтүү кошулат. Жашыл жарык 3 ирет өчпөсө, аракет ийгиликтүү болгон жок. Мындай учурда, сары баскычты кайра басыңыз. Ийгиликтүү болгонун эшиктин коңгуроосун басып, жашыл жарыктын өтүшүн текшерүү менен оңой эле текшере аласыз.

Кантип бирөөнү кара тизмеге кошуу керек?

Албетте, жаман ниети бар адамдар бизге жүзүнүн сүрөтүн берүү үчүн өтпөйт. Демек, анын ордуна, мисалы, полиция имг/кара тизме папкасына жарыялаган белгилүү адамдардын сүрөттөрүн кошо аласыз. Ар бир саат сайын бул папка жаңы сүрөттөр үчүн текшерилет. Эгерде жаңы сүрөт бар болсо, жүздүн коддолушу эсептелет жана blacklist.csvге кошулат. Андан кийин сүрөттүн аталышы өзгөртүлүп, папкага/img/blacklist/encoded которулат.

Эскертүүлөр:

  • Скрипттерди RPiге кирүү менен иштетүү көбүрөөк көзөмөлдү жана маалыматты камсыз кылат, бирок негизги көзөмөлдү жана маалыматты светофордун дисплейинин жардамы менен гана алууга болот.
  • Жүздү таануу "face_recognition" python пакети аркылуу ишке ашырылат. Бул пакет Dlibге негизделген, ал заманбап жүздү таануу алгоритмин камтыйт, ал жапайы эталондордо 99.38% тактыкты аткарат (булак: dlib.net-Deep Metric Learning менен жогорку сапаттагы жүз таануу).).
Жардамчы техникалар сынагы
Жардамчы техникалар сынагы
Жардамчы техникалар сынагы
Жардамчы техникалар сынагы

Жардамчы технологиялар конкурсунда биринчи сыйлык

Сунушталууда: