Mündəricat:

Üz tanıma ilə qapı zəngi: 7 addım (şəkillərlə)
Üz tanıma ilə qapı zəngi: 7 addım (şəkillərlə)

Video: Üz tanıma ilə qapı zəngi: 7 addım (şəkillərlə)

Video: Üz tanıma ilə qapı zəngi: 7 addım (şəkillərlə)
Video: DUFU TAHIR BIYABIRCILIQ 😱😱 2024, Iyul
Anonim
Üz Tanıma ilə Qapı Zəngi
Üz Tanıma ilə Qapı Zəngi

Motivasiya

Son vaxtlar ölkəmdə yaşlı insanları öz evlərində hədəf alan soyğunçuluq dalğası yaşanır. Adətən, ziyarətçilər baxıcı/tibb bacısı olduqlarına inandırdıqları üçün giriş sakinlərin özləri tərəfindən verilir. Bu hekayələr məni nə qədər qəzəbləndirir və kədərləndirir, sözlə ifadə etmək olmur. Ev ilk təhlükəsiz sığınacağınız olmalıdır və buna görə də çöldə olarkən həssas bir vəziyyətdəsinizsə. Bunu nəzərə alaraq bu layihəyə başladım.

Ümumi məlumat

Qapı zəngi sistemi əsasən yaşlılar və ya görmə qüsurlu insanlar üçün nəzərdə tutulmuşdur və işlərində olduqca düzdür. Bir sözlə, qapı zəngi açarı kameranın görüntü əldə etməsinə səbəb olur. Sonra, görüntülərdəki üzlər aşkar edilir və ağ siyahı və qara siyahı ilə uyğunlaşdırılır. Sakin, aydın bir işıqfor ekranı ilə aydın vizual rəy alır. Bununla, yaşıl, sarı və ya qırmızı işıq, həmin şəxslərin sistem siyahısına uyğun olaraq ağ siyahıda olduğunu və ya qara siyahıda olduğunu göstərir. Sarı və ya qırmızı işıq yanarsa, şəkil bir qohumunu və ya gözətçisini xəbərdar etmək/xəbərdar etmək üçün Telegram botu tərəfindən göndərilir.

Təcrübə səviyyəsi

Layihə, kompüter görmə və süni intellektdən istifadə etməklə xüsusilə maraqlanan həvəskarlar üçün hazırlanmışdır. Bu təlimat yeni başlayanlar üçün hazırlanmışdır, buna görə təcrübəniz yoxdursa narahat olmayın! Bundan əlavə, layihə daha təcrübəli istehsalçılar üçün də maraqlı ola bilər, çünki boru kəməri öz kompüter vizyonunuzla genişləndirə biləcəyiniz və heç bir çətinlik çəkmədən üz tanıma fikirlərinizlə qurulacaq.

Addım 1: Materiallar

Materiallar
Materiallar

Minimum tələbləri olan məhsul siyahısı:

Məhsul Bağlantı Şərh
Moruq Pi 3b RPi Link, RPi 4 göstərir, çünki RPi 3b ilə müqayisədə daha yaxşı performansa və demək olar ki, bərabər qiymətə malikdir.
Mikro SD Amazon 16 GB və ya daha böyük bir micro SD kartı işi yerinə yetirəcək. Ancaq Amazon -da 16 GB kartlar indi 32 GB kartlarla eyni qiymətə bərabərdir.
Raspberry Pi kamera Amazon Kamera v1 daha ucuzdur, lakin v2 daha yaxşıdır və daha uzun müddət dəstəklənəcək.
15 pinli FPC çevik kabel Amazon Uzunluq əslində bu layihənin həyata keçirilməsinin şərtlərindən asılıdır. Yalnız bir prototip qurmaq istəyirsinizsə, orijinal flex kabel işi edəcək.
5V mikro usb enerji təchizatı Adafruit Bu, heç vaxt görüşməyə imkan vermədi! Əla keyfiyyət. (Şəkildə yox)
Daxili LED ilə arcade düymələri Amazon İstədiyiniz ölçünü seçin, ancaq CAD dizaynı 60 mm düymələrə əsaslanır
Rezistorlar Amazon Yalnız 1k və 100 ohm rezistorlara ehtiyacınız var. Normal 1/4W -lər yaxşıdır.
Kondansatörler 0.1 uF Amazon Üç kondansatör lazımdır. (Şəkildə yox)
Jumper Telləri / Şerit Kabeli Amazon Amazon Özünüzə bir neçə dollar qənaət etmək istəyirsinizsə, köhnə bir disket lent kabelindən də istifadə edə bilərsiniz (şəkilə bax).
Büzülən boru / Elektrik lenti Amazon Amazon

Lazım olan vasitələr:

Alət Əsas? Şərh
Lehimleme dəmir Bəli
Multimetr Bəli
Tel çıxarıcı Bəli Və ya bıçaq/qayçı istifadə edə bilərsiniz.
Lazer kəsici Yox
3D printer Yox
Kelepçeler Yox Test mərhələsində qutunu bir yerdə saxlamaq üçün faydalıdır.

Qeydlər:

Layihənin əlçatanlığını artırmaq üçün onu Raspberry Pi 3b istifadə edərək inkişaf etdirmək qərarına gəldim. Əlçatanlığı artırsa da, RPi -lər o qədər sürətli olmadığı üçün tətbiqin imkanlarını azaldır. Daha sürətli tək bir lövhəli kompüter axtarırsınızsa, NVIDIA Jetson Nano'ya baxmaq istəyə bilərsiniz

Addım 2: Kabel çəkmə

Kablolama
Kablolama
Kablolama
Kablolama
Kablolama
Kablolama

Sxematik diaqram bu addım üçün ən məlumatlıdır və kifayət qədər özünü izah edir. Elektronikaya yeni başlamısınızsa, əfsanə şəklindən istifadə edə bilərsiniz. Komponentin dəyəri (əgər varsa) sxematik diaqramda göstərilmişdir. Fotoşəkillər dövrəni necə qurduğumu görməyə kömək edə bilər. Əsasən, bütün komponentləri arcade düyməsinə mümkün qədər yaxın bağladım ki, bu da nələrin baş verdiyinə aydın bir baxış verir.

Qeydlər:

  • Şerit kabel bağlayıcılarından istifadə etməyi çox sevirəm, çünki onlar tək keçid tellərindən daha möhkəmdir.
  • Təklif edildiyi kimi, köhnə bir kompüterdən təmizlənmiş lent kabeli istifadə etdim. Kabelin konfiqurasiyasını əllə təsdiqləməli olduğunuz üçün bu bir az çətindir. Məsələn, bu layihədə bəzi deliklərin bir -biri ilə əlaqəli olduğunu öyrəndim (ehtimal ki, orijinal tətbiq üçün əsas kimi istifadə olunur). Buna görə də şəkillərdə gördüyünüz kimi daha sonra fərqli bir kabel almalı oldum.

Addım 3: Qutunun qurulması

Qutunun qurulması
Qutunun qurulması
Qutunun qurulması
Qutunun qurulması
Qutunun qurulması
Qutunun qurulması
Qutunun qurulması
Qutunun qurulması

Kamera korpusu

Pikamera üçün bir çox korpus internetdən sərbəst yüklənə bilər. Beləliklə, təkəri yenidən kəşf etməməyi və İnternetdən əsas, lakin gözəl bir korpus seçməməyi seçirəm: thingiverse.com - Raspberry pi kamera qutusu/korpusu. (Dizayner VGerə bağırın.)

Svetofor korpusu

Svetoforun korpusu üçün Autodesk Fusion 360 -da (sərbəst yüklənə bilən, Qeydlərə baxın) kiçik bir qutu hazırladım ki, bu da bütün qurğulara uyğundur. Əlavədə, yerli lazer kəsmə şirkətimə göndərdiyim faylı tapa bilərsiniz. Beləliklə, dizayn 6 mm lövhə qalınlığına əsaslanır. Ancaq hər şeyi tənzimləmək istəyirsinizsə, bu linkdən istifadə edərək hər cür fayl formatına daxil ola bilərsiniz. Şəkillərdə göstərildiyi kimi, lazer kəsici yoxdursa karton qutudan da istifadə edə bilərsiniz. Prototip üçün şəkildəki karton qutudan istifadə etdim və cazibədarlıq kimi işləyir.

Quraşdırma olduqca düzdür:

  1. Arcade açarlarını quraşdırın.
  2. Qapı zəngi üçün telləri boş saxladığınızdan əmin olun.
  3. Şerit kabelini RPi -yə qoşun.
  4. RPi'yi alt panelə vidalayın.
  5. Qapı zəngi tellərini tel bağlayıcıya qoşun və alt panelə də bağlayın.
  6. Picameranı RPi -yə qoşun.
  7. Yan panellərdən birində qapı zəngi keçid teli və RPi elektrik teli üçün bir delik açın.

Tel bağlayıcı, qapı zəngi tellərinin montaj nöqtəsi olaraq istifadə olunur, beləliklə daha sonra mövcud bir qapı zəngi ilə bərkidilə bilər. İndi hər şey yerindədir və bir -birinə yapışdırıla bilər. Bununla birlikdə, hər şeyin olduğu kimi işlədiyinə əmin olmaq üçün əvvəlcə növbəti addımları bitirmək istəyə bilərsiniz.

Qeydlər:

Autodesk Fusion 360 həvəskarlar üçün sərbəst şəkildə mövcuddur! Kopyanızı almaq istəyirsinizsə, bu linki ziyarət edin: autodesk.com - Fusion 360 Həvəskarlar üçün. Bəzi şərtlər var, buna görə də oxuduğunuzdan və tətbiq etdiyinizdən əmin olun. Fusion 360 ilə ilk layihəm idi və CAD proqramını istifadə etməkdə çox təcrübəm yoxdur, amma Fusion 360 ilə gələn proqramı və bütün əlavə vasitələri çox bəyəndiyimi söyləməliyəm

Addım 4: Kameranı konfiqurasiya edin

Kameranın konfiqurasiyası
Kameranın konfiqurasiyası
Kameranın konfiqurasiyası
Kameranın konfiqurasiyası
Kameranın konfiqurasiyası
Kameranın konfiqurasiyası

Raspbian quraşdırdığınız və GUI rejimində işlədiyi güman edilir. Hələ Raspbian yükləməmisinizsə, bu məqaləni izləyə bilərsiniz: raspberrypi.org - Əməliyyat sistemi şəkillərinin quraşdırılması. Raspbian yükləsəniz, şəkillərdə göstərildiyi kimi bir masa üstü görməlisiniz.

Kameranı RPi -də konfiqurasiya edək və işlədiyini görək! Burada təsvir olunan üsul birbaşa raspberrypi.org - Documentation -dan. Əvvəlcə terminal pəncərəsində aşağıdakı əmrləri yerinə yetirərək ən son paketləri (kamera firmware daxil olmaqla) yeniləyək (şəkillərə baxın):

sudo apt yeniləmə

sudo apt tam yeniləmə

Sonra, kamera aşağıdakı əmrdən istifadə edərək işə salınmalıdır:

sudo raspi-config

Menyuda 5 -ə keçin. Arayüz Seçimləri -> P1 Kamera. Kameranı işə salmaq və RPi -ni yenidən başlatmaq üçün seçin:

yenidən başladın

İndi kamera düzgün qurulmalıdır. Terminal pəncərəsini açaraq sınaya bilərsiniz:

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

Şəkil saxlanılır: /home /pi.

Addım 5: Docker qurmaq

Docker qurmaq
Docker qurmaq
Docker qurmaq
Docker qurmaq
Docker qurmaq
Docker qurmaq
Docker qurmaq
Docker qurmaq

Asılılıq və quraşdırma səhvlərinin qarşısını almaq üçün bu layihə üçün xüsusi bir Docker görüntüsü yaratmağa qərar verdim (bax wikipedia.org - Docker). Heç vaxt Docker -dən istifadə etməmisiniz və ya eşitməmisinizsə, narahat olmayın, bu layihədə necə istifadə edəcəyimi addım -addım izah edəcəyəm. Əslində çox asandır! Bu layihəni yerli bir qurğuda (Docker konteynerində deyil) yerinə yetirmək istəsəniz, sizə bəzi məsləhətlər verəcəyəm. Ancaq Docker görüntüsündən istifadə etmək çox tövsiyə olunur. Axı, bu layihəni idarə etməyinizi asanlaşdırmaq üçün qurdum!

Docker nədir?

Qeyd: bu hissədə yalnız kodu işə salmaq istəsəniz atlana biləcək Docker haqqında bəzi məlumatlar var.

Bu layihə Docker -dən ilk dəfə istifadə edirəm və sadəcə möhtəşəmdir! Bəlkə Python üçün virtualenv və ya Anaconda haqqında eşitmisiniz? Yaxşı, Docker, fərqli bir mühitdən (və ya Docker adlandığı konteynerdən) istifadə edərək paket versiyalarını asanlıqla idarə edə və fərqli bir Python versiyasını bir ana sistemdə işlədə biləcəyiniz mənasında olduqca oxşardır. Ancaq virtualenv və Anaconda ilə müqayisədə, Docker daha güclüdür, çünki yalnız Python paketləri ilə məhdudlaşmır. Həqiqətən, bir Docker konteynerində, istədiyiniz əməliyyat sisteminin paketlərini də quraşdıra və idarə edə bilərsiniz. Məsələn, bir verilənlər bazası olan Python veb çərçivəsini (məsələn, Django) işləyən, köçürmək istədiyiniz bir veb saytı (məsələn, MySQL) düşünün. Docker konteyner olmadan, bütün paketləri yeni serverə yükləməlisiniz, bu proses səhvlərə və səhvlərə çox meyllidir. Digər tərəfdən, veb saytınız Docker -də qurulduqda, köçürmə, görüntü faylını/fayllarını yeni serverə köçürmək və işə salmaq qədər asandır. Təsəvvür etdiyiniz kimi, Docker, Instructables üzərindəki layihələr üçün də çox faydalıdır;)! Docker haqqında daha çox bilmək istəyirsinizsə, veb saytlarına baxın: docker.org - Docker: Enterprise Container Platform. İndi Docker ilə birlikdə ayağa qalxaq!

Docker quraşdırılır

İcra edərək Docker qurun:

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

Daha sonra, istifadəçi Docker -in işləmə hüquqlarını təmin edən 'docker' istifadəçi qrupuna əlavə olunur. Bu edilir:

sudo usermod -aG docker $ USER

İndi Docker -i işə salmalısınız. Bu, salam dünya görüntüsünü işə salmaqla təsdiqlənə bilər:

docker run hello-world

Nəhayət, qapı zəngi Python skriptlərini işə salmaq üçün lazım olan bütün asılılıqları ehtiva edən Docker görüntüsünü çəkək. Görüntü olduqca böyük olduğundan (~ 1.5 GB) bu proses bir az vaxt ala bilər. İcra etmək:

docker erientes/qapı zəngini çəkin

Qeyd: Dockerfile Github -da qapı zəngi deposunda tapıla bilər. İndi hər şey növbəti addımda müzakirə ediləcək qapı zəngi skriptlərini işə salmağa hazırdır.

Yerli quraşdırma

Yenə də, yerli quraşdırma yerinə Docker görüntüsündən istifadə etməyi çox tövsiyə edərdim. Ancaq bu təlimatı tamamlamaq üçün indi yerli quraşdırma üçün atdığım bəzi addımları təsvir edəcəyəm.

Kodu işlədə bilmək üçün python versiyası> = 3.5 olmalıdır (python 3.5.3 istifadə etmişəm) və aşağıdakı paketlərin quraşdırılması lazımdır:

  • üz tanıma
  • pikamera
  • əsəbi
  • Yastıq
  • python-telegram-bot
  • RPi. GPIO

Bu bağlantı olduqca faydalıdır: Github - Raspberry Pi üzərində dlib və face_recognition qurun. Ancaq burada bəzi xəbərdarlıqlar var: 1) Yastığa bu metoddan sonra quraşdırılmayacaq ən az Python 3.5 lazımdır. 2) Həm də qapı zəngi layihəsində lazım olan bütün paketlər bu üsula riayət etməklə quraşdırılmayacaq. Bununla birlikdə, sadəcə pip3 istifadə edərək qura bilməlisiniz.

Addım 6: Qapı Zəngi Skriptlərini Çalışdırın

Qapı Zəngi Skriptlərinin Çalışması
Qapı Zəngi Skriptlərinin Çalışması
Qapı Zəngi Skriptlərinin Çalışması
Qapı Zəngi Skriptlərinin Çalışması
Qapı Zəngi Skriptlərinin Çalışması
Qapı Zəngi Skriptlərinin Çalışması

Skriptləri alın

Ssenariləri əl ilə yükləmək olar: github.com - Erientes/qapı zəngi. Və ya Git yüklü olsanız, icra edin:

git klonu

Ləqəblər yaradın

İndi həyatımızı bir az asanlaşdırmaq üçün, skriptləri işə salmaq üçün bir neçə ləqəb yaradaq. İcra etmək:

yarpaq paneli ~/.bashrc

Aşağıdakı sətirləri əlavə edin və faylı qeyd edin:

alias doorbell_run = 'docker run -imtiyazlı -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell python $ 1'

alias doorbell_login = 'docker run -imtiyazlı -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell bash'

Test skriptləri

Hər şeyin düzgün qurulduğunu yoxlamaq üçün yeni bir terminal açın və icra edin:

doorbell_run nümunələri/0_test_installation.py

Nəticə terminal pəncərəsində 'Qapı zəngi quraşdırılması uğurla başa çatdı!' Yazan bir mesaj olmalıdır. Kameraya Docker konteynerindən daxil olub -olmadığını yoxlamaq üçün aşağıdakıları edin:

doorbell_run nümunələri/1_test_camera.py

1_test_camera.py proqramını işə salmaqla bir şəkil çəkiləcək və/home/pi/doorbell -də tapıla bilən 'test.jpg' olaraq qeyd olunacaq. Nəhayət, LED sürücüləri aşağıdakıları yerinə yetirməklə sınaqdan keçirilə bilər:

doorbell_run nümunələri/2_test_voicehat_drivers.py

Bu skript işləyərkən, düymə basıldığında arcade açarındakı LED cavab verməlidir.

Qapı zəngi skriptlərinin işləməsi

Doorbell skriptlərini işə salmaq üçün əvvəlcə Telegram bot etimadnaməsini əldə etmək lazımdır. Telefonunuza Telegram qurun və telegram.me - Botfather -a daxil olun. Söhbətə başlayın və daxil olun:

/yeni bot

Bot üçün bir ad və istifadəçi adı daxil edin. Bundan sonra sizə giriş nişanı veriləcək. Bu dəyəri/home/pi/doorbell -də 'credentials_telegram_template.py' faylına kopyalayın və 'credentials_telegram.py' adlı yeni bir faylda qeyd edin. Nəhayət, Botfather -in sizə təqdim etdiyi linki tıklayaraq yeni yaratdığınız botla söhbətə başlayın.

Nəhayət, Üz Tanıma ilə Qapı Zəngini işə salaq:

qapı zəngi

Qeydlər:

Kodun necə işlədiyi haqqında daha çox bilmək istəyirsinizsə, skriptlərin özündəki şərhlərə baxın. Kod haqqında bir sualınız varsa, Github vasitəsilə mənimlə əlaqə saxlayın

Addım 7: Qapı zəngi istifadə edin

Image
Image
Qapı zəngindən istifadə
Qapı zəngindən istifadə
Qapı zəngindən istifadə
Qapı zəngindən istifadə

Qapı zəngi skriptini yerinə yetirərək çalışaq:

qapı zəngi Paketləri yüklədikdən sonra skriptlər boş qalır. Əsasən baş verə biləcək 2 şey var:

  1. Kimsə qapının zəngini çalır.
  2. Kimsə ağ siyahıya əlavə olunur.

Kimsə qapının zəngini çalır

Bu vəziyyətdə, skript bir üzün aşkarlandığı bir fotoşəkil çəkənə qədər fotoşəkil çəkməyə başlayacaq. Aşkarlandıqdan sonra, üzün 128 kodlamasını hesablamaq üçün 'face_recognition' python paketindən bəzi üsullar çağırılır. Sonra əldə edilən kodlaşdırma whitelist.csv və blacklist.csv kodlaşdırmaları ilə müqayisə olunur. Mümkün nəticələr aşağıdakı reaksiya ilə nəticələnir:

Ağ siyahıda? Qara siyahıda? Cavab
Bəli Yox Yaşıl işıq yanır.
Bəli Bəli Sarı işıq yanır. Qapı zəngi kamerası fotoşəkilləri narıncı işarəsi olan Telegram botuna göndərir. Hər iki siyahıya kimsə əlavə edildikdə bu vəziyyət baş verə bilər. Məsələn, kimsə əvvəlcə xoş qarşılansa da, sonradan qara siyahıya salındı.
Yox Yox Sarı işıq yanır. Qapı zəngi kamerası fotoşəkilləri narıncı işarəsi olan Telegram botuna göndərir.
Yox Bəli Qırmızı işıq yanır. Qapı zəngi kamerası fotoşəkilləri qırmızı işarəsi olan Telegram botuna göndərir.

Kimsə ağ siyahıya əlavə olunur

Kimisə ağ siyahıya əlavə etmək üçün qapı zəngi boş vəziyyətdə olarkən işıqforun sarı düyməsini basın. Əvvəlcə sarı işıq yanacaq. Yaşıl işıq 3 dəfə yanıb -sönərsə, həmin şəxsin üzü uğurla ağ siyahıya əlavə olunur. Yaşıl işıq 3 dəfə yanıb -sönməzsə, cəhd uğurlu alınmadı. Bu vəziyyətdə yenidən sarı düyməni basın. Uğurlu olub olmadığını qapı zəngini çalmaqla və yaşıl işığın keçib -keçmədiyini yoxlamaqla asanlıqla yoxlaya bilərsiniz.

Qara siyahıya birini necə əlavə etmək olar?

Aydındır ki, pis niyyətli insanlar bizə üzlərinin fotoşəkilini vermək üçün keçməzlər. Bunun əvəzinə, polisin img/qara siyahı qovluğuna yayımladığı bədnam insanların şəkillərini əlavə edə bilərsiniz. Hər saat bu qovluq yeni şəkillər üçün yoxlanılır. Yeni bir görüntü varsa, üz kodlaması hesablanır və blacklist.csv -ə əlavə olunur. Sonra şəklin adı dəyişdirilir və/img/blacklist/encoded qovluğuna köçürülür.

Qeydlər:

  • Skriptləri RPi -yə daxil olaraq idarə etmək daha çox nəzarət və məlumat verir, ancaq əsas nəzarət və məlumat yalnız svetofor ekranından istifadə etməklə əldə edilə bilər.
  • Üz tanıma, 'face_recognition' python paketindən istifadə etməklə həyata keçirilir. Bu paket, Vəhşi meyarında Etiketlənmiş Üzlərdə 99.38% dəqiqlik yerinə yetirən ən son texnologiyalı üz tanıma alqoritmini ehtiva edən Dlib-ə əsaslanır (mənbə: dlib.net-Dərin Metrik Öyrənmə ilə Yüksək keyfiyyətli Üz Tanıma)).
Köməkçi Texniki Müsabiqə
Köməkçi Texniki Müsabiqə
Köməkçi Texniki Müsabiqə
Köməkçi Texniki Müsabiqə

Köməkçi Texniki Müsabiqədə birinci mükafat

Tövsiyə: