Spisu treści:

Dzwonek z rozpoznawaniem twarzy: 7 kroków (ze zdjęciami)
Dzwonek z rozpoznawaniem twarzy: 7 kroków (ze zdjęciami)

Wideo: Dzwonek z rozpoznawaniem twarzy: 7 kroków (ze zdjęciami)

Wideo: Dzwonek z rozpoznawaniem twarzy: 7 kroków (ze zdjęciami)
Wideo: 11 ustawień w iPhonie, które POWINIENEŚ OD RAZU ZMIENIĆ 📲 2024, Lipiec
Anonim
Dzwonek do drzwi z rozpoznawaniem twarzy
Dzwonek do drzwi z rozpoznawaniem twarzy

Motywacja

Ostatnio w moim kraju nastąpiła fala napadów na osoby starsze w ich własnych domach. Zazwyczaj dostęp jest przyznawany przez samych mieszkańców, ponieważ odwiedzający przekonują ich, że są opiekunami/pielęgniarkami. Nie da się opisać słowami, jak wściekłe i smutne te historie sprawiają, że się czuję. Dom powinien być twoją pierwszą bezpieczną przystanią, a tym bardziej, jeśli jesteś już w trudnej sytuacji, gdy jesteś na zewnątrz. Mając to na uwadze, rozpocząłem ten projekt.

Informacje ogólne

System dzwonka do drzwi jest przeznaczony głównie dla osób starszych lub niedowidzących i jest dość prosty w działaniu. Krótko mówiąc, przełącznik dzwonka uruchamia kamerę, aby uzyskać materiał filmowy. Następnie twarze w nagraniu są wykrywane i dopasowywane do białej i czarnej listy. Pasażer otrzymuje wyraźną wizualną informację zwrotną dzięki wyraźnemu wyświetlaczowi sygnalizacji świetlnej. Tym samym zielone, żółte lub czerwone światło oznacza, że osoba(y) znajduje się na białej liście, odpowiednio nieznana systemowi lub na czarnej liście. Jeśli włączy się żółte lub czerwone światło, zdjęcie zostanie wysłane przez bota Telegrama, aby poinformować/ostrzeżć krewnego lub opiekuna.

Poziom wiedzy

Projekt powstał z myślą o entuzjastach szczególnie zainteresowanych wykorzystaniem wizji komputerowej i sztucznej inteligencji. Ta instrukcja jest napisana dla początkujących odbiorców, więc nie martw się, jeśli nie masz doświadczenia! Co więcej, projekt może być interesujący również dla bardziej doświadczonych twórców, ponieważ potok jest zorganizowany w taki sposób, że można go rozszerzyć o własną wizję komputerową i pomysły na rozpoznawanie twarzy bez większych problemów.

Krok 1: Materiały

Materiały
Materiały

Lista produktów z minimalnymi wymaganiami:

Produkt Połączyć Komentarz
Raspberry Pi 3b RPi Link pokazuje RPi 4, ponieważ ma znacznie lepszą wydajność i prawie taką samą cenę jak RPi 3b.
Micro SD Amazonka Wystarczy karta micro SD o pojemności 16 GB lub większej. Ale karty 16 GB na Amazon są teraz w tej samej cenie, co karty 32 GB.
Kamera Raspberry Pi Amazonka Kamera v1 jest tańsza, ale v2 jest lepsza i będzie dłużej obsługiwana.
15-pinowy elastyczny kabel FPC Amazonka Długość faktycznie zależy od okoliczności wykonania tego projektu. Jeśli chcesz po prostu zbudować prototyp, oryginalny kabel elastyczny wykona zadanie.
Zasilanie 5 v micro usb Adafruit Ten nigdy nie zawiódł! Świetna jakość. (Nie na zdjęciu)
Przyciski Arcade z wbudowaną diodą LED Amazonka Wybierz żądany rozmiar, ale projekt CAD opiera się na przyciskach 60 mm
Rezystory Amazonka Potrzebujesz tylko kilku rezystorów 1k i 100 omów. Zwykłe moce 1/4W są w porządku.
Kondensatory 0,1 uF Amazonka Potrzebne są trzy kondensatory. (Nie na zdjęciu)
Przewody połączeniowe / kabel taśmowy AmazonAmazonia Jeśli chcesz zaoszczędzić trochę pieniędzy, możesz również użyć starego kabla taśmowego do stacji dyskietek (patrz zdjęcie).
Rurka termokurczliwa / Taśma elektryczna AmazonAmazonia

Potrzebne narzędzia:

Narzędzie Niezbędny? Komentarz
Lutownica tak
Multimetr tak
Ściągacz izolacji tak Możesz też użyć noża/nożyczek.
Wycinarka laserowa Nie
drukarka 3d Nie
Zaciski Nie Przydatne do trzymania pudełka razem w fazie testowania.

Uwagi:

Aby zwiększyć dostępność projektu, zdecydowałem się rozwijać go przy użyciu Raspberry Pi 3b. Chociaż zwiększa to dostępność, zmniejsza możliwości aplikacji, ponieważ RPi nie są tak szybkie. Jeśli szukasz szybszego komputera jednopłytkowego, możesz rzucić okiem na NVIDIA Jetson Nano

Krok 2: Okablowanie

Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie
Okablowanie

Schemat ideowy jest najbardziej pouczający dla tego kroku i jest dość oczywisty. Jeśli jesteś nowy w elektronice, możesz użyć obrazu legendy. Wartość składnika (jeśli dotyczy) jest podana na schemacie ideowym. Zdjęcia mogą pomóc zobaczyć, jak buduję tor. Zasadniczo podłączyłem wszystkie komponenty jak najbliżej przycisku arcade, co daje jasny obraz tego, co się dzieje.

Uwagi:

  • Bardzo lubię używać złączy kabli taśmowych, ponieważ są one o wiele mocniejsze niż używanie pojedynczych przewodów połączeniowych.
  • Zgodnie z sugestią, użyłem oczyszczonego kabla taśmowego ze starego komputera. Jest to jednak trochę skomplikowane, ponieważ będziesz musiał ręcznie potwierdzić konfigurację kabla. W tym projekcie na przykład dowiedziałem się, że niektóre otwory są ze sobą połączone (prawdopodobnie używane jako uziemienie dla oryginalnej aplikacji). Dlatego musiałem później dokupić inny kabel, jak widać na zdjęciach.

Krok 3: Budowanie obudowy

Budowanie obudowy
Budowanie obudowy
Budowanie obudowy
Budowanie obudowy
Budowanie obudowy
Budowanie obudowy
Budowanie obudowy
Budowanie obudowy

Obudowa kamery

Wiele obudów do picamery można bezpłatnie pobrać z Internetu. Postanowiłem więc nie wymyślać koła na nowo i wybrać podstawową, ale ładną obudowę z Internetu: thingiverse.com - obudowa/obudowa do kamery Raspberry pi. (Pozdrawiam projektanta VGer.)

Obudowa sygnalizacji świetlnej

W przypadku obudowy sygnalizacji świetlnej zaprojektowałem małe pudełko w Autodesk Fusion 360 (które można bezpłatnie pobrać, patrz Uwagi), które pasuje do całego sprzętu. W załączniku plik, który wysłałem do mojej lokalnej firmy zajmującej się cięciem laserowym. Niniejszym projekt oparty jest na płycie o grubości 6 mm. Jeśli jednak chcesz coś zmienić, możesz uzyskać dostęp do wszystkich rodzajów formatów plików, korzystając z tego linku. Jak pokazano na zdjęciach, możesz również użyć kartonowego pudełka, jeśli nie masz dostępu do wycinarki laserowej. Użyłem kartonowego pudełka na zdjęciu do prototypowania i działa jak urok.

Montaż jest dość prosty:

  1. Zamontuj przełączniki Arcade.
  2. Upewnij się, że przewody dzwonka są wolne.
  3. Podłącz kabel taśmowy do RPi.
  4. Przykręć RPi do dolnego panelu.
  5. Podłącz przewody dzwonka do złącza przewodu i zamontuj go również na dolnym panelu.
  6. Podłącz Picamerę do RPi.
  7. Wywierć otwór w jednym z paneli bocznych na przewód przełączający dzwonek i przewód zasilający RPi.

Złącze przewodu służy jako punkt mocowania przewodów przełącznika dzwonka, dzięki czemu można go później przymocować do istniejącego dzwonka. Wszystko jest teraz na swoim miejscu i można je skleić. Jednak najpierw możesz chcieć dokończyć kolejne kroki, aby upewnić się, że wszystko działa tak, jak powinno.

Uwagi:

Autodesk Fusion 360 jest bezpłatnie dostępny dla hobbystów! Jeśli chcesz otrzymać kopię, odwiedź ten link: autodesk.com - Fusion 360 dla hobbystów. Istnieje kilka terminów, więc koniecznie je przeczytaj i zastosuj. To był mój pierwszy projekt z Fusion 360 i nie mam dużego doświadczenia w korzystaniu z oprogramowania CAD, ale muszę powiedzieć, że bardzo podoba mi się oprogramowanie i wszystkie dodatkowe narzędzia, które są dostępne w Fusion 360

Krok 4: Konfiguracja kamery

Konfiguracja kamery
Konfiguracja kamery
Konfiguracja kamery
Konfiguracja kamery
Konfiguracja kamery
Konfiguracja kamery

Zakłada się, że masz zainstalowany Raspbian i że działa on w trybie GUI. Jeśli nie masz jeszcze zainstalowanego Raspbian, możesz śledzić ten artykuł: raspberrypi.org - Instalowanie obrazów systemu operacyjnego. Jeśli uruchomisz Raspbian, powinieneś zobaczyć pulpit, jak pokazano na zdjęciach.

Skonfigurujmy kamerę na RPi i zobaczmy, czy działa! Opisana tutaj metoda pochodzi bezpośrednio z raspberrypi.org - Dokumentacja. Najpierw zaktualizujmy do najnowszych pakietów (w tym oprogramowania aparatu) wykonując następujące polecenia w oknie terminala (patrz zdjęcia):

aktualizacja sudo apt

sudo apt pełna aktualizacja

Następnie kamerę należy włączyć za pomocą następującego polecenia:

sudo raspi-config

W menu przejdź do 5. Opcje interfejsu -> Kamera P1. Wybierz, aby włączyć kamerę i ponownie uruchomić RPi, wykonując:

restart

Kamera powinna być teraz poprawnie skonfigurowana. Można to przetestować, otwierając okno terminala i wykonując:

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

Obraz jest zapisywany do: /home/pi.

Krok 5: Konfiguracja Dockera

Konfigurowanie Dockera
Konfigurowanie Dockera
Konfigurowanie Dockera
Konfigurowanie Dockera
Konfigurowanie Dockera
Konfigurowanie Dockera
Konfigurowanie Dockera
Konfigurowanie Dockera

Aby uniknąć błędów zależności i instalacji, zdecydowałem się zbudować niestandardowy obraz Dockera dla tego projektu (patrz wikipedia.org - Docker). Jeśli nigdy nie korzystałeś lub nie słyszałeś o Dockerze, nie martw się, wyjaśnię krok po kroku, jak go wykorzystać w tym projekcie. W rzeczywistości jest to bardzo proste! Jeśli chcesz uruchomić ten projekt na lokalnej instalacji (zamiast w kontenerze Dockera), dam ci kilka wskazówek. Jednak zdecydowanie zaleca się użycie obrazu Docker. W końcu buduję go, aby ułatwić Ci prowadzenie tego projektu!

Co to jest Docker?

Uwaga: ta część zawiera podstawowe informacje o Dockerze, które można pominąć, jeśli chcesz tylko uruchomić kod.

W tym projekcie po raz pierwszy użyłem Dockera i jest po prostu niesamowity! Może słyszałeś o virtualenv lub Anacondzie dla Pythona? Cóż, Docker jest dość podobny w tym sensie, że możesz łatwo zarządzać wersjami pakietów i uruchamiać różne wersje Pythona na jednym systemie hosta, używając innego środowiska (lub kontenera, jak to się nazywa w Docker). Ale w porównaniu do virtualenv i Anacondy, Docker jest znacznie potężniejszy, ponieważ nie ogranicza się do zawierania tylko pakietów Pythona. Rzeczywiście, w kontenerze Docker możesz zainstalować i zarządzać również pakietami żądanego systemu operacyjnego. Rozważmy na przykład witrynę, którą chcesz migrować, która uruchamia framework webowy Pythona (np. Django) z bazą danych (np. MySQL). Bez kontenera Docker musiałbyś zainstalować wszystkie pakiety na nowym serwerze, co jest bardzo podatne na błędy i błędy. Z drugiej strony, gdy Twoja witryna została zbudowana w Dockerze, migracja jest w zasadzie tak prosta, jak przeniesienie pliku/plików obrazu na nowy serwer i uruchomienie go/ich. Jak możesz sobie wyobrazić, Docker jest bardzo przydatny również w projektach na Instructables;)! Jeśli chcesz dowiedzieć się więcej o Dockerze, zajrzyj na ich stronę internetową: docker.org - Docker: Enterprise Container Platform. Teraz zacznijmy korzystać z Dockera!

Instalowanie Dockera

Zainstaluj Docker, wykonując:

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

Następnie użytkownik zostaje dodany do grupy użytkowników „docker”, która zapewnia uprawnienia do uruchomienia Dockera. Odbywa się to poprzez:

sudo usermod -aG okno dokowane $USER

Teraz powinieneś być w stanie uruchomić Dockera. Można to sprawdzić, uruchamiając obraz hello-world:

Docker run hello-world

Na koniec wyciągnijmy obraz Dockera, który zawiera wszystkie zależności potrzebne do uruchomienia skryptów Pythona dzwonka. Ten proces może trochę potrwać, ponieważ obraz jest dość duży (~1,5 GB). Wykonać:

Docker pull erientes/dzwonek do drzwi

Uwaga: plik Dockerfile można znaleźć w repozytorium dzwonków na Github. Teraz wszystko jest gotowe do uruchomienia skryptów dzwonka, które zostaną omówione w następnym kroku.

Instalacja lokalna

Ponownie, gorąco polecam użycie obrazu Dockera zamiast lokalnej instalacji. Aby jednak ten samouczek był kompletny, opiszę teraz niektóre kroki, które wykonałem podczas lokalnej instalacji.

Aby móc uruchomić kod, wersja Pythona powinna być >= 3.5 (użyłem Pythona 3.5.3) i muszą być zainstalowane następujące pakiety:

  • rozpoznawanie twarzy
  • pikamera
  • numpy
  • Poduszka
  • python-telegram-bot
  • RPi. GPIO

Ten link jest bardzo pomocny: Github - Zainstaluj dlib i face_recognition na Raspberry Pi. Istnieje jednak kilka zastrzeżeń: 1) Pillow wymaga co najmniej Pythona 3.5, który nie zostanie zainstalowany tą metodą. 2) Ponadto nie wszystkie pakiety potrzebne w projekcie dzwonka zostaną zainstalowane zgodnie z tą metodą. Jednak powinieneś być w stanie zainstalować go po prostu za pomocą pip3.

Krok 6: Uruchamianie skryptów dzwonka

Uruchamianie skryptów dzwonka
Uruchamianie skryptów dzwonka
Uruchamianie skryptów dzwonka
Uruchamianie skryptów dzwonka
Uruchamianie skryptów dzwonka
Uruchamianie skryptów dzwonka

Pobierz skrypty

Skrypty można pobrać ręcznie ze strony: github.com - Erientes/doorbell. Lub jeśli masz zainstalowany Git, wykonaj:

klon git

Utwórz aliasy

Teraz, aby nieco ułatwić nam życie, stwórzmy kilka aliasów do uruchamiania skryptów. Wykonać:

liść ~/.bashrc

Dodaj następujące wiersze i zapisz plik:

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

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

Skrypty testowe

Aby sprawdzić, czy wszystko jest poprawnie zainstalowane, otwórz nowy terminal i wykonaj:

doorbell_run przykłady/0_test_installation.py

Rezultatem powinien być po prostu komunikat w oknie terminala z napisem „Instalacja dzwonka zakończyła się pomyślnie!”. Aby sprawdzić, czy do kamery można uzyskać dostęp z kontenera Docker, uruchom:

dzwonek_run przykłady/1_test_camera.py

Po uruchomieniu 1_test_camera.py zdjęcie zostanie zrobione i zapisane jako 'test.jpg', które można znaleźć w /home/pi/doorbell. Na koniec sterowniki LED można przetestować, wykonując:

dzwonek_run przykłady/2_test_voicehat_drivers.py

Gdy ten skrypt jest uruchomiony, dioda LED w przełączniku arkadowym powinna reagować na naciśnięcie przycisku.

Uruchamianie skryptów dzwonka

Aby uruchomić skrypty dzwonka, najpierw należy uzyskać poświadczenia bota Telegrama. Zainstaluj Telegram na swoim telefonie i przejdź do telegram.me - Botfather. Rozpocznij rozmowę i wpisz:

/nowybot

Wpisz imię i nazwę użytkownika bota. Następnie otrzymasz token dostępu. Skopiuj tę wartość do pliku „credentials_telegram_template.py” w katalogu /home/pi/doorbell i zapisz ją w nowym pliku o nazwie „credentials_telegram.py”. Na koniec rozpocznij rozmowę z właśnie utworzonym botem, klikając link, który zapewnia Botfather.

Na koniec uruchommy dzwonek do drzwi z rozpoznawaniem twarzy:

doorbell_run main.py

Uwagi:

Jeśli chcesz dowiedzieć się więcej o tym, jak działa kod, zapoznaj się z komentarzami w samych skryptach. Jeśli masz pytanie dotyczące kodu, skontaktuj się ze mną przez Github

Krok 7: Korzystanie z dzwonka

Image
Image
Korzystanie z dzwonka
Korzystanie z dzwonka
Korzystanie z dzwonka
Korzystanie z dzwonka

Uruchommy skrypt dzwonka, wykonując:

doorbell_run main.py Po załadowaniu pakietów skrypty przechodzą w stan bezczynności. Zasadniczo mogą się zdarzyć 2 rzeczy:

  1. Ktoś dzwoni do drzwi.
  2. Ktoś został dodany do białej listy.

Ktoś dzwoni do drzwi

W takim przypadku skrypt zacznie robić zdjęcia, dopóki nie zrobi zdjęcia, na którym wykryta zostanie twarz. Po wykryciu niektóre metody z pakietu Pythona „face_recognition” są wywoływane w celu obliczenia 128 kodowania twarzy. Następnie uzyskane kodowanie jest porównywane z kodowaniami w whitelist.csv i blacklist.csv. Możliwe wyniki skutkują następującą odpowiedzią:

Na białej liście? Na czarnej liście? Odpowiedź
tak Nie Włącza się zielone światło.
tak tak Włącza się żółte światło. Kamera dzwonka wysyła zdjęcia do bota Telegram z pomarańczową ikoną. Ten stan może wystąpić, jeśli ktoś został dodany do obu list. Na przykład, gdy ktoś był na początku mile widziany, ale później został umieszczony na czarnej liście.
Nie Nie Włącza się żółte światło. Kamera dzwonka wysyła zdjęcia do bota Telegram z pomarańczową ikoną.
Nie tak Zapala się czerwone światło. Kamera dzwonka wysyła zdjęcia do bota Telegrama z czerwoną ikoną.

Ktoś został dodany do białej listy

Aby dodać kogoś do białej listy, naciśnij żółty przycisk sygnalizacji świetlnej, gdy dzwonek jest w stanie bezczynności. Najpierw włączy się żółte światło. Jeśli zielone światło mignie 3 razy, twarz osoby została pomyślnie dodana do białej listy. Jeśli zielone światło nie zamiga 3 razy, próba nie powiodła się. W takim przypadku ponownie naciśnij żółty przycisk. Możesz łatwo zweryfikować, czy się udało, dzwoniąc dzwonkiem do drzwi i sprawdzając, czy zielone światło zgasło.

Jak dodać kogoś do czarnej listy?

Oczywiście ludzie o złych intencjach nie przejdą obok, aby dać nam zdjęcie swojej twarzy. Zamiast tego możesz dodać zdjęcia znanych osób, które (na przykład) policja opublikowała w folderze img/blacklist. Co godzinę ten folder jest sprawdzany pod kątem nowych obrazów. Jeśli pojawi się nowy obraz, kodowanie twarzy jest obliczane i dodawane do blacklist.csv. Obraz jest następnie zmieniany i przenoszony do folderu /img/blacklist/encoded.

Uwagi:

  • Obsługa skryptów poprzez zalogowanie się do RPi zapewnia znacznie większą kontrolę i informacje, ale podstawową kontrolę i informacje można uzyskać wyłącznie za pomocą wyświetlacza sygnalizacji świetlnej.
  • Rozpoznawanie twarzy jest realizowane za pomocą pakietu Pythona „face_recognition”. Ten pakiet jest oparty na Dlib, który zawiera najnowocześniejszy algorytm rozpoznawania twarzy, który zapewnia dokładność 99,38% w teście Labeled Faces in the Wild (źródło: dlib.net - High Quality Face Recognition with Deep Metric Learning).
Pomocniczy konkurs techniczny
Pomocniczy konkurs techniczny
Pomocniczy konkurs techniczny
Pomocniczy konkurs techniczny

Pierwsza nagroda w konkursie technologii wspomagających

Zalecana: