İçindekiler:
- Adım 1: Malzemeler
- Adım 2: Kablolama
- Adım 3: Kasayı İnşa Etme
- 4. Adım: Kamerayı Yapılandırma
- Adım 5: Docker'ı Ayarlama
- Adım 6: Kapı Zili Komut Dosyalarını Çalıştırma
- Adım 7: Kapı Zilini Kullanma
Video: Yüz Tanıma ile Kapı Zili: 7 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Motivasyon
Son zamanlarda, ülkemde yaşlıları kendi evlerinde hedef alan bir soygun dalgası var. Ziyaretçiler onları bakıcı/hemşire olduklarına ikna ettiğinden, genellikle erişim, yolcuların kendileri tarafından verilir. Bu hikayelerin beni ne kadar kızdırdığı ve üzdüğü kelimelerin ötesinde. Ev, ilk güvenli sığınağınız olmalı ve hatta dışarıdayken zaten savunmasız bir durumdaysanız, daha da fazlası olmalıdır. Bu düşünceyle bu projeye başladım.
Genel bilgi
Kapı zili sistemi esas olarak yaşlı veya görme engelli kişiler için tasarlanmıştır ve işleyişinde oldukça basittir. Kısacası, kapı zili anahtarı, kamerayı görüntü elde etmek için tetikler. Ardından, görüntüdeki yüzler algılanır ve bir beyaz liste ve kara liste ile eşleştirilir. Yolcu, net bir trafik ışığı ekranıyla net görsel geri bildirim alır. Burada yeşil, sarı veya kırmızı ışık, kişi(ler)in sırasıyla beyaz listede, sistem tarafından bilinmeyen veya kara listede olduğunu gösterir. Sarı veya kırmızı ışık tetiklenirse, bir akraba veya bakıcıyı bilgilendirmek/uyarmak için fotoğraf bir Telegram botu tarafından gönderilir.
uzmanlık düzeyi
Proje, özellikle bilgisayarlı görme ve yapay zeka kullanımına meraklı meraklılar için kuruldu. Bu talimat, yeni başlayanlar için yazılmıştır, bu nedenle deneyiminiz yoksa endişelenmeyin! Ayrıca, proje daha deneyimli yapımcılar için de ilgi çekici olabilir, çünkü boru hattı kendi bilgisayar vizyonunuzla genişletebileceğiniz ve çok fazla güçlük çekmeden yüz tanıma fikirlerinizle genişletebileceğiniz şekilde organize edilmiştir.
Adım 1: Malzemeler
Minimum gereksinimleri içeren ürün listesi:
Ürün | Bağlantı | Yorum Yap |
---|---|---|
Ahududu Pi 3b | RPi | Link, RPi 4'ü gösteriyor çünkü çok daha iyi performansa ve RPi 3b ile neredeyse eşit fiyata sahip. |
Mikro SD | Amazon | 16 GB veya daha büyük bir mikro SD kart işi yapacak. Ancak Amazon'daki 16 GB kartlar şimdi 32 GB kartlarla hemen hemen aynı fiyatta. |
Ahududu Pi kamera | Amazon | Kamera v1 daha ucuzdur, ancak v2 daha iyidir ve daha uzun süre desteklenecektir. |
15 pinli FPC esnek kablo | Amazon | Uzunluk aslında bu projeyi yapma koşullarına bağlıdır. Sadece bir prototip oluşturmak istiyorsanız, orijinal esnek kablo işi yapacaktır. |
Güç Kaynağı 5v mikro usb | Ada meyvesi | Bu asla bir araya gelmedi! Mükemmel kalite. (fotoğrafta yok) |
Dahili LED'li arcade düğmeleri | Amazon | İstediğiniz boyutu seçin, ancak CAD tasarımı 60 mm düğmelere dayanmaktadır. |
dirençler | Amazon | Sadece birkaç 1k ve 100 ohm dirence ihtiyacınız var. Normal 1/4W'lar iyidir. |
Kapasitörler 0.1 uF | Amazon | Üç kapasitör gereklidir. (fotoğrafta yok) |
Jumper Telleri / Şerit Kablo | AmazonAmazon | Kendinize biraz para kazandırmak istiyorsanız, eski bir disket sürücü şerit kablosu da kullanabilirsiniz (fotoğrafa bakın). |
Daralan tüp / Elektrik bandı | AmazonAmazon |
Gerekli olan araçlar:
Alet | Gerekli? | Yorum Yap |
---|---|---|
Havya | Evet | |
multimetre | Evet | |
tel striptizci | Evet | Veya bir bıçak/makas kullanabilirsiniz. |
Lazer Kesici | Numara | |
3 boyutlu yazıcı | Numara | |
Kelepçeler | Numara | Test aşamasında kutuyu bir arada tutmak için kullanışlıdır. |
Uyarılar:
Projenin erişilebilirliğini artırmak için bir Raspberry Pi 3b kullanarak geliştirmeye karar verdim. Erişilebilirliği artırırken, RPi'ler o kadar hızlı olmadığı için uygulamanın yeteneklerini azaltır. Daha hızlı tek kartlı bir bilgisayar arıyorsanız, NVIDIA Jetson Nano'ya bir göz atmak isteyebilirsiniz
Adım 2: Kablolama
Şematik diyagram bu adım için en bilgilendiricidir ve oldukça açıklayıcıdır. Elektronikte yeniyseniz, efsane görseli kullanabilirsiniz. Bileşenin değeri (eğer varsa) şematik diyagramda belirtilmiştir. Fotoğraflar devreyi nasıl kurduğumu görmeme yardımcı olabilir. Temel olarak, tüm bileşenleri arcade düğmesine mümkün olduğunca yakın bağladım, bu da neler olup bittiğine dair net bir genel bakışla sonuçlandı.
Uyarılar:
- Tek atlama telleri kullanmaktan çok daha sağlam oldukları için şerit kablo konektörlerini kullanmayı gerçekten seviyorum.
- Önerildiği gibi, eski bir bilgisayardan alınmış bir şerit kablo kullandım. Bu biraz zor olsa da, kablonun yapılandırmasını manuel olarak belirtmeniz gerekeceğinden. Örneğin bu projede bazı deliklerin birbiriyle bağlantılı olduğunu öğrendim (muhtemelen orijinal uygulama için zemin olarak kullanılmış). Bu yüzden resimlerde de göreceğiniz gibi sonradan farklı bir kablo almak zorunda kaldım.
Adım 3: Kasayı İnşa Etme
Kamera kasası
Pikamera için birçok kılıf internetten ücretsiz olarak indirilebilir. Bu yüzden, tekerleği yeniden icat etmemeyi ve internetten basit ama güzel bir kasa seçmeyi seçiyorum:thingiverse.com - Raspberry pi kamera kasası/muhafazası. (Tasarımcı VGer'e sesleniyorum.)
Trafik ışığı muhafazası
Trafik ışığı kasası için, Autodesk Fusion 360'ta (ücretsiz indirilebilir, bkz. Açıklamalar) tüm donanıma uyan küçük bir kutu tasarladım. Yerel lazer kesim şirketime gönderdiğim dosyayı ekte bulabilirsiniz. Burada tasarım 6 mm plaka kalınlığına dayanmaktadır. Ancak, bir şeyleri ayarlamak isterseniz, bu bağlantıyı kullanarak her türlü dosya formatına erişebilirsiniz. Resimlerde görüldüğü gibi, lazer kesiciye erişiminiz yoksa karton kutu da kullanabilirsiniz. Prototipleme için resimdeki karton kutuyu kullandım ve bir cazibe gibi çalışıyor.
Montaj oldukça yalındır:
- Arcade anahtarlarını monte edin.
- Kapı zili için kabloları serbest bıraktığınızdan emin olun.
- Şerit kabloyu RPI'ye bağlayın.
- RPi'yi alt panele vidalayın.
- Kapı zili kablolarını bir kablo konektörüne bağlayın ve alt panele de monte edin.
- Picamera'yı RPi'ye bağlayın.
- Kapı zili anahtarlama kablosu ve RPi güç kablosu için yan panellerden birinde bir delik açın.
Kablo konektörü, daha sonra mevcut bir kapı ziline sabitlenebilmesi için kapı zili anahtarı kabloları için bir montaj noktası olarak kullanılır. Artık her şey yerinde ve birbirine yapıştırılabilir. Ancak, her şeyin olması gerektiği gibi çalıştığından emin olmak için önce sonraki adımları tamamlamak isteyebilirsiniz.
Uyarılar:
Autodesk Fusion 360, hobiler için ücretsiz! Kopyanızı almak istiyorsanız şu bağlantıyı ziyaret edin: autodesk.com - Fusion 360 For Hobbyists. Bazı terimler vardır, bu yüzden onları okuduğunuzdan ve uyguladığınızdan emin olun. Bu benim Fusion 360 ile ilk projemdi ve CAD yazılımını kullanma konusunda fazla tecrübem yok, ancak yazılımı ve Fusion 360 ile gelen tüm ek araçları gerçekten sevdiğimi söylemeliyim
4. Adım: Kamerayı Yapılandırma
Raspbian'ın kurulu olduğu ve GUI modunda çalıştığı varsayılmaktadır. Henüz Raspbian yüklemediyseniz, bu makaleyi takip edebilirsiniz: raspberrypi.org - İşletim sistemi imajlarını yükleme. Raspbian'ı başlatırsanız, resimlerde gösterildiği gibi bir masaüstü görmelisiniz.
Kamerayı RPi'de yapılandıralım ve çalışıp çalışmadığını görelim! Burada açıklanan yöntem doğrudan raspberrypi.org - Documentation'dan alınmıştır. İlk olarak, bir terminal penceresinde aşağıdaki komutları yürüterek en son paketlere (kamera üretici yazılımı dahil) güncelleyelim (resimlere bakın):
sudo uygun güncelleme
sudo apt tam yükseltme
Ardından, aşağıdaki komut kullanılarak kamera etkinleştirilmelidir:
sudo raspi yapılandırması
Menüde 5. Arayüz Seçenekleri -> P1 Kamera seçeneğine gidin. Aşağıdakileri gerçekleştirerek kamerayı etkinleştirmeyi ve RPi'yi yeniden başlatmayı seçin:
yeniden başlat
Kamera şimdi doğru şekilde yapılandırılmalıdır. Bir terminal penceresi açarak test edilebilir ve yürütülebilir:
raspistill -v -o /home/pi/test.jpg
Görüntü şuraya kaydedilir: /home/pi.
Adım 5: Docker'ı Ayarlama
Bağımlılık ve kurulum hatalarından kaçınmak için bu proje için özel bir Docker görüntüsü oluşturmaya karar verdim (bkz. wikipedia.org - Docker). Docker'ı hiç kullanmadıysanız veya duymadıysanız merak etmeyin bu projede nasıl kullanılacağını adım adım anlatacağım. Aslında, süper kolay! Bu projeyi yerel bir kurulumda (bir Docker konteyneri yerine) çalıştırmak isterseniz, size bazı ipuçları vereceğim. Ancak Docker imajını kullanmanız şiddetle tavsiye edilir. Sonuçta, bu projeyi yürütmenizi kolaylaştırmak için yapıyorum!
Docker nedir?
Not: Bu bölüm, yalnızca kodu çalıştırmak istiyorsanız atlanabilecek Docker hakkında bazı arka plan bilgileri sağlar.
Bu proje Docker'ı ilk kullanışım ve tek kelimeyle harika! Belki Python için virtualenv veya Anaconda'yı duymuşsunuzdur? Docker, paket sürümlerini kolayca yönetebilmeniz ve farklı bir ortam (veya Docker'da adlandırıldığı gibi kapsayıcı) kullanarak bir ana bilgisayar sisteminde farklı Python sürümlerini çalıştırabilmeniz açısından oldukça benzerdir. Ancak virtualenv ve Anaconda ile karşılaştırıldığında Docker, yalnızca Python paketlerini içermekle sınırlı olmadığı için çok daha güçlüdür. Aslında bir Docker kapsayıcısında, istediğiniz işletim sisteminin paketlerini de kurabilir ve yönetebilirsiniz. Örneğin, bir veritabanı (ör. MySQL) ile bir Python web çerçevesi (ör. Django) çalıştıran, taşımak istediğiniz bir web sitesini düşünün. Docker kapsayıcısı olmadan, tüm paketleri yeni sunucuya yüklemeniz gerekir; bu, hatalara ve hatalara çok açık bir işlemdir. Öte yandan, web siteniz Docker'da oluşturulduğunda, geçiş temelde görüntü dosyasını/dosyalarını yeni sunucuya taşımak ve çalıştırmak kadar kolaydır. Tahmin edebileceğiniz gibi Docker, Instructables üzerindeki projeler için de çok kullanışlıdır;)! Docker hakkında daha fazla bilgi edinmek istiyorsanız web sitelerine göz atın: docker.org - Docker: Enterprise Container Platform. Şimdi, Docker ile çalışmaya başlayalım!
Docker'ı Yükleme
Yürüterek Docker'ı yükleyin:
curl -sSL https://get.docker.com | NS
Daha sonra kullanıcı, Docker'ı çalıştırma haklarını sağlayan 'docker' kullanıcı grubuna eklenir. Bu şu şekilde yapılır:
sudo usermod -aG liman işçisi $ KULLANICI
Artık Docker'ı çalıştırabiliyor olmalısınız. Bu, merhaba dünya görüntüsünü çalıştırarak doğrulanabilir:
liman işçisi merhaba dünya koşusu
Son olarak, kapı zili Python komut dosyalarını çalıştırmak için gereken tüm bağımlılıkları içeren Docker görüntüsünü çekelim. Görüntü oldukça büyük olduğundan (~1,5 GB) bu işlem biraz zaman alabilir. Uygulamak:
liman işçisi çekme erientes/kapı zili
Not: Dockerfile, Github'daki kapı zili deposunda bulunabilir. Şimdi, bir sonraki adımda tartışılacak olan kapı zili komut dosyalarını çalıştırmak için her şey hazır.
Yerel kurulum
Yine, yerel bir kurulum yerine Docker imajını kullanmanızı şiddetle tavsiye ederim. Ancak bu öğreticiyi tamamlamak için şimdi yerel kurulum için attığım bazı adımları anlatacağım.
Kodu çalıştırabilmek için python sürümü >= 3.5 olmalıdır (python 3.5.3 kullandım) ve aşağıdaki paketlerin yüklenmesi gerekir:
- yüz tanıma
- fotoğraf makinesi
- dizi
- Yastık
- piton-telgraf-bot
- RPi. GPIO
Bu bağlantı oldukça faydalıdır: Github - Bir Raspberry Pi'ye dlib ve face_recognition yükleyin. Ancak, burada bazı uyarılar var: 1) Yastık, bu yöntemle kurulmayacak olan en az Python 3.5'e ihtiyaç duyar. 2) Ayrıca bu yöntem izlenerek kapı zili projesinde ihtiyaç duyulan tüm paketler kurulmayacaktır. Ancak, sadece pip3 kullanarak kurabilmelisiniz.
Adım 6: Kapı Zili Komut Dosyalarını Çalıştırma
Komut dosyalarını alın
Komut dosyaları şu adresten manuel olarak indirilebilir: github.com - Erientes/doorbell. Veya Git'i yüklediyseniz, yürütün:
git klonuTakma ad oluştur
Şimdi hayatımızı biraz daha kolaylaştırmak için komut dosyalarını çalıştırmak için bazı takma adlar oluşturalım. Uygulamak:
yaprak defteri ~/.bashrc
Aşağıdaki satırları ekleyin ve dosyayı kaydedin:
takma ad doorbell_run='docker run --privileged -v /home/pi/kapı zili:/kapı zili -w /kapı zili -it erientes/kapı zili python $1'
takma ad doorbell_login='docker run --privileged -v /home/pi/kapı zili:/kapı zili -w /kapı zili -it erientes/kapı zili bash'
Test komut dosyaları
Her şeyin doğru kurulup kurulmadığını test etmek için yeni bir terminal açın ve şunu çalıştırın:
kapı zili_run örnekleri/0_test_installation.py
Sonuç, terminal penceresinde 'Kapı zili kurulumu başarıyla sona erdi!' yazan bir mesaj olmalıdır. Kameraya Docker kapsayıcı tarafından erişilip erişilemeyeceğini test etmek için şunu çalıştırın:
kapı zili_run örnekleri/1_test_camera.py
1_test_camera.py çalıştırıldığında bir fotoğraf çekilecek ve /home/pi/doorbell içinde bulunabilecek 'test.jpg' olarak kaydedilecektir. Son olarak, LED sürücüleri aşağıdakiler yürütülerek test edilebilir:
kapı zili_run örnekleri/2_test_voicehat_drivers.py
Bu komut dosyası çalışırken, arcade anahtarındaki LED, düğmeye basıldığında yanıt vermelidir.
Kapı zili komut dosyalarını çalıştırma
Doorbell komut dosyalarını çalıştırmak için önce Telegram bot kimlik bilgilerinin alınması gerekir. Telefonunuza Telegram'ı yükleyin ve telegram.me - Botfather'a gidin. Bir konuşma başlatın ve şunu girin:
/newbot
Bot için bir ad ve kullanıcı adı girin. Bundan sonra, erişim belirteci size sağlanacaktır. Bu değeri /home/pi/doorbell içindeki 'credentials_telegram_template.py' dosyasına kopyalayın ve 'credentials_telegram.py' adlı yeni bir dosyaya kaydedin. Son olarak, Botfather'ın size sağladığı bağlantıya tıklayarak az önce oluşturduğunuz bot ile bir sohbet başlatın.
Son olarak, Kapı Zilini Yüz Tanıma ile çalıştıralım:
kapı zili_run main.py
Uyarılar:
Kodun nasıl çalıştığı hakkında daha fazla bilgi edinmek istiyorsanız, komut dosyalarının kendisindeki yorumlara göz atın. Kodla ilgili bir sorunuz varsa, lütfen bana Github üzerinden ulaşın
Adım 7: Kapı Zilini Kullanma
Kapı zili komut dosyasını çalıştırarak çalıştıralım:
kapı zili_run main.py Paketleri yükledikten sonra betikler boşta kalır. Temelde olabilecek 2 şey var:
- Biri kapı zilini çalıyor.
- Beyaz listeye biri eklendi.
Biri kapı zilini çalıyor
Bu durumda komut dosyası, içinde bir yüz algılanan bir fotoğraf çekene kadar fotoğraf çekmeye başlayacaktır. Algılamadan sonra, yüzün 128 kodlamasını hesaplamak için 'face_recognition' python paketinden bazı yöntemler çağrılır. Daha sonra elde edilen kodlama, whitelist.csv ve blacklist.csv'deki kodlamalarla karşılaştırılır. Olası sonuçlar aşağıdaki yanıtla sonuçlanır:
Beyaz listede mi? | Kara listede mi? | Cevap |
---|---|---|
Evet | Numara | Yeşil ışık yanar. |
Evet | Evet | Sarı ışık yanar. Kapı zili kamerası, fotoğrafları turuncu simgeli Telegram botuna gönderir. Bu durum, her iki listeye de biri eklenmişse gerçekleşebilir. Örneğin, biri ilk başta hoş karşılanırken daha sonra kara listeye alındığında. |
Numara | Numara | Sarı ışık yanar. Kapı zili kamerası, fotoğrafları turuncu simgeli Telegram botuna gönderir. |
Numara | Evet | Kırmızı ışık yanar. Kapı zili kamerası, fotoğrafları kırmızı simgeyle Telegram botuna gönderir. |
Beyaz listeye biri eklendi
Beyaz listeye birini eklemek için kapı zili boştayken trafik ışığının sarı düğmesine basın. İlk olarak, sarı ışık yanacaktır. Yeşil ışık 3 kez yanıp sönerse, kişinin yüzü beyaz listeye başarıyla eklenir. Yeşil ışık 3 kez yanıp sönmezse, deneme başarılı olmamıştır. Bu durumda sarı düğmeye tekrar basın. Kapı zilini çalarak ve yeşil ışığın geçip geçmediğini kontrol ederek başarılı olup olmadığını kolayca doğrulayabilirsiniz.
Kara listeye biri nasıl eklenir?
Açıkçası, kötü niyetli insanlar bize yüzlerinin fotoğrafını vermek için geçmeyecekler. Bunun yerine, (örneğin) polisin img/kara liste klasörüne yayınladığı kötü şöhretli kişilerin resimlerini ekleyebilirsiniz. Her saat, bu klasör yeni görüntüler için kontrol edilir. Yeni bir resim varsa, yüz kodlaması hesaplanır ve blacklist.csv'ye eklenir. Görüntü daha sonra yeniden adlandırılır ve /img/blacklist/encoding klasörüne taşınır.
Uyarılar:
- Komut dosyalarını RPi'de oturum açarak çalıştırmak çok daha fazla kontrol ve bilgi sağlar, ancak temel kontrol ve bilgiler yalnızca trafik ışığı ekranı kullanılarak elde edilebilir.
- Yüz tanıma, 'face_recognition' python paketi kullanılarak gerçekleştirilir. Bu paket, Labeled Faces in the Wild karşılaştırmasında %99,38 doğruluk sağlayan son teknoloji bir yüz tanıma algoritması içeren Dlib'e dayanmaktadır (kaynak: dlib.net - Deep Metric Learning ile Yüksek Kaliteli Yüz Tanıma).
Yardımcı Teknoloji Yarışmasında Birincilik Ödülü
Önerilen:
Abellcadabra (Yüz Tanıma Kapı Kilit Sistemi): 9 Adım
Abellcadabra (Yüz Tanıma Kapı Kilit Sistemi): Karantina sırasında etrafta yatarak, ev kapısı için yüz tanıma sistemi kurarak zamanı öldürmenin bir yolunu bulmaya çalıştım. Ben ona Abellcadabra adını verdim - bu, sadece zili aldığım kapı zili ile sihirli bir ifade olan Abracadabra'nın birleşimidir. ÇOK KOMİK
Yüz Tanıma Kapı Kilidi: 8 Adım
Yüz Tanıma Kapı Kilidi: Yapımı yaklaşık bir aydır, yüz tanıma kapı kilidini sunuyorum! Elimden geldiğince düzgün görünmesini sağlamaya çalıştım ama 13 yaşında ancak bu kadarını yapabilirim. Bu yüz tanımalı kapı kilidi, özel bir taşınabilir keçeye sahip bir Raspberry Pi 4 tarafından çalıştırılır
LTE Pi HAT ile Yüz Tanıma Akıllı Kilit: 4 Adım
LTE Pi HAT ile Yüz Tanıma Akıllı Kilit: Yüz tanıma giderek daha yaygın bir şekilde kullanılıyor, bunu akıllı bir kilit yapmak için kullanabiliriz
Kapı Zili ile Aktive Edilen İskelet Hologramı…: 4 Adım
Kapı Zili ile Etkinleştirilen İskelet Hologramı…: Holo-ween'e Hoş Geldiniz! İşte Cadılar Bayramı için uzun zamandır yapmayı planladığımız ve aslında beklediğimizden çok daha kolay olduğu ortaya çıkan eğlenceli bir hologram projesi. Bu, tabuttaki bir iskeletin 4"x5" hologramı. Lazer h için
Gerçek Zamanlı Yüz Tanıma: Uçtan Uca Bir Proje: 8 Adım (Resimlerle)
Gerçek Zamanlı Yüz Tanıma: Uçtan Uca Bir Proje: OpenCV'yi keşfeden son eğitimimde OTOMATİK GÖRÜŞ NESNE İZLEME'yi öğrendik. Şimdi, aşağıda görebileceğiniz gibi, yüzleri gerçek zamanlı olarak tanımak için PiCam'imizi kullanacağız: Bu proje, bu harika "Açık Kaynak Bilgisayar Görme Kitaplığı" ile yapıldı