Serwisy partnerskie:
Close icon
Serwisy partnerskie

Inteligentny dron z rozpoznawaniem twarzy w czasie rzeczywistym

Article Image
Elmax
Co by było, gdybyś mógł stworzyć drona, który rozpoznawałby ludzi, śledził kogoś w tłumie i pomagał w odnajdywaniu przestępców? A gdyby ten dron mógł również wykrywać korki na drodze przed nami lub wykrywać ludzi, którzy utknęli w powodziach, trzęsieniach ziemi lub podobnych sytuacjach kryzysowych? Ten inteligentny dron z obsługą sztucznej inteligencji może wykonywać wszystkie te zadania. Może nagrywać wideo w czasie rzeczywistym, przetwarzać je, rozpoznawać ludzi oraz wykrywać ruch i tłum podczas publicznych wieców i zgromadzeń.

Jest to niedrogi dron typu quadcopter wykorzystujący ramę F450 i silniki bezszczotkowe 1000 kV. Jest on wyposażony w płytkę Raspberry Pi 4 (Rpi 4) do niezależnego przetwarzania obrazów bez wpływu na kontroler lotu.

Autorski prototyp został przedstawiony na fotografii powyżej. Obraz na żywo rejestrowany przez kamerę zamontowaną na dronie podczas testów pokazano na fotografii 1.

Fotografia 1. Obraz na żywo przechwytywany przez kamerę zamontowaną na dronie

Do wykonania drona potrzebne będą elementy wymienione w tabeli poniżej.

Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić
1
3C11.1V bateria lipo
Bateria 3300 mAh
8
Baterie alkaliczne AA
Bateria 1,5 V
1
Komputer
Raspberry Pi 4
1
Kamera
Kamera
1
Wzmacniacz audio
PAM8403
1
Przenośne głośniki
Przenośne głośniki

Szczegóły dotyczące budowy/montażu drona, śmigieł, obrotów silnika, nadajnika i odbiornika można znaleźć w artykule "Własny dron quadcopter".

Rozpoznawanie twarzy

Na początku wypróbowano moduł obliczeniowy RPi i płyty BalenaFin posiadające 1 GB RAM i 16 GB pamięci masowej, wraz z baterią LiPo. Okazało się jednak, że jest to trochę nieporęczne dla drona. Tak więc, Raspberry Pi 4 został użyty, ponieważ może być zasilany z jednego z czterech ESC użytych w dronie, co okazało się lepszym wyborem.

Do rozpoznawania twarzy należy zamontować RPi 4 oraz kamerę na ramie F450 drona (patrz fotografia 2). Powinny być one przymocowane za pomocą taśmy izolacyjnej, opasek zaciskowych lub spięte linką samoblokującą. Ponieważ płytka kontrolera lotu używa tylko pierwszego pinu ESC do zasilania, pozostałe trzy piny ESC są wolne. Użyj więc jednego z wolnych ESC do zasilania płytki RPi 4. Przetnij dodatni i ujemny przewód jednego z modułów ESC, które są podłączone do kontrolera lotu, a następnie podłącz je do RPi.

Fotografia 2. Płytka Raspberry Pi 4 zamontowana na ramie drona

Następnie zamontuj moduł kamery RPi na dronie, jak pokazano na fotografii 3.

Fotografia 3. Kamera RPi zamontowana na ramie drona

Kod (dronecode1.py) służący do rozpoznawania osoby (znanej lub nieznanej) znajdującej się przed dronem jest napisany w skrypcie Pythona. W kodzie tym musimy zaimportować trzy biblioteki/moduły: face_recognition, cv2, oraz numpy. Są one zdefiniowane w kodzie jak pokazano na rysunku 4. Musimy utworzyć różne tablice do rozpoznawania twarzy i odpowiadających im imion osób. Należy pamiętać o wpisaniu nazwy pliku z obrazem danej osoby, aby poprawnie rozpoznać jej twarz (patrz rysunek 5). Obraz na żywo osoby (z imieniem) przechwytywanej przez kamerę z drona jest pokazany na rysunku 6.

Rysunek 4. Biblioteki Pythona do rozpoznawania twarzy
Rysunek 5. Imiona znanych osób zawarte w kodzie
Rysunek 6. Obraz na żywo osoby uchwycony przez kamerę na dronie

Alarm dźwiękowy

W następnej części kodu program porównuje twarze przechwycone przez kamerę z tablicą znanych twarzy w bazie danych. Jeśli twarz pasuje, kod uruchamia funkcję syntezatora 'espeak.synth()', aby wywołać imię osoby przez głośnik podłączony do RPi. Może również zawierać komunikat typu "Witam, proszę się nie ruszać", na wypadek gdyby z jego pomocą miał zostać odnaleziony przestępca lub podejrzany. Kod z funkcją 'espeak.synth()' pokazany jest na rysunku 7.

Rysunek 7. Kod z funkcją espeak.synth()

Do RPi można podłączyć cyfrowy wzmacniacz mocy audio PAM8403 oraz głośniki do nadawania komunikatów. Schemat połączenia wzmacniacza audio z pinami GPIO, 5 V i GND RPi 4 pokazano na rysunku 8.

Rysunek 8. Połączenie wzmacniacza mocy audio z RPi 4 i głośnikami

Do wykrywania tłumu

Dron może być wykorzystywany do akcji poszukiwawczych i ratowniczych, szczególnie podczas powodzi lub trzęsienia ziemi. Można go również wykorzystać do monitorowania tłumu podczas publicznych wieców i zgromadzeń. W tym celu musimy zainstalować w Raspberry Pi kilka bibliotek, w tym TensorFlow.

Pierwszym krokiem jest aktualizacja i uaktualnienie systemu operacyjnego RPi 4 oraz instalacja wymaganych bibliotek z poziomu terminala poprzez wpisanie komend podanych poniżej:

sudo apt-get update
sudo apt-get upgrade
sudo nano /etc/dphys-swapfile

Następnie zmień linię CONF_SWAPSIZE=100 na CONF_SWAPSIZE=1024

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
sudo pip3 install opencv
sudo pip3 install numpy
wget https://bootstrap.pypa.io/get-pip.py
pip3 install dlib
pip3 install tensorflow

Następnie można przystąpić do klonowania modułów, przykładów i plików TensorFlow za pomocą poniższego polecenia:

git clone https://github.com/tensorflow/
tensorflow.git

Po udanym klonowaniu przejdź do katalogu → folder research → utwórz plik Pythona dronecrowd.py. Otwórz IDE Python3 i zaimportuj następujące moduły w kodzie:

  • os
  • cv2
  • numpy
  • tensorflow
  • argparse
  • sys
  • gpiozero
  • time

W przypadku wykrywania tłumu i monitorowania ruchu ulicznego, musimy dokonać pewnych ustawień przed rozpoczęciem kodowania. Po pierwsze, musimy stworzyć specjalny plik .pbtxt zawierający nazwy osób/obiektów, które mają być wykrywane. Ponieważ nasz dron ma wykrywać ludzi, więc utwórz plik crowd.pbtxt w folderze Tensorflow → models → research → object detection → data. W pliku crowd.pbtxt należy uwzględnić display_name jako 'people', jak pokazano na rysunku 9.

Rysunek 9. Lista nazw utworzonych w pliku .pbtxt

W pierwszej części kodu (dronecrowd.py) inicjalizowane są wymagane biblioteki (patrz rysunek 10). Wśród nich znajduje się moduł PiCamera, który jest wykorzystywany do pobierania obrazu na żywo i przetwarzania go klatka po klatce w celu wykrycia tłumu podczas publicznych wieców lub zgromadzeń.

Rysunek 10. Wymagane biblioteki w kodzie do detekcji tłumu

Następnie należy zdefiniować w kodzie nazwę pliku crowd.pbtxt, jak pokazano na rysunku 11. Następnie utwórz podłańcuch, który sprawdza liczbę wykrytych osób. Gdy program jest uruchomiony, wywołuje moduły TensorFlow do wykrywania i monitorowania. Oszacuje on liczbę osób i wyświetli na ekranie komputera obrazy osób obecnych w danym obszarze.

Rysunek 11. Zdefiniowany w kodzie plik .pbtxt tłum

Wykrywanie ruchu ulicznego

Ten sam dron może być wykorzystany do monitorowania ruchu samochodowego na ulicach miasta (patrz rysunek 12). W tym celu należy utworzyć plik traffic.pbtxt w folderze projektu i dodać do niego listę obiektów, czyli display_names, takich jak samochód, autobus, ludzie, szyld, ciężarówka itp.

Rysunek 12. Detekcja ruchu na ulicy

Kiedy program dronetraffic.py jest uruchamiany, najpierw sprawdza plik traffic.pbtxt, aby rozpocząć wykrywanie liczby samochodów, autobusów, rowerów itp. na drodze. Program zapisuje obrazy samochodów i inne szczegóły w pliku tekstowym w folderze. Jeśli wykryje zbyt wiele pojazdów lub ludzi na drodze/ulicy, zaalarmuje władze poprzez wyświetlenie komunikatów takich jak "Duży ruch" w przypadku pojazdów lub "Zbyt wiele osób" w przypadku osób dojeżdżających do pracy na drodze.

Projekt może być rozszerzony do wykorzystania w badaniach lasów i wykrywaniu zwierząt przy użyciu tego samego kodu, ale z innym plikiem .pbtxt. W przypadku wykrywania zwierząt należy utworzyć plik .pbtxt z listą zwierząt, które mają być wykryte, a następnie zmienić podłańcuchy w kodzie, aby wyświetlić wyniki na ekranie komputera.

Testowanie

Należy uruchomić każdy kod (dronecode1.py, dronecrowd.py i dronetraffic.py) osobno w różnych momentach dla różnych zastosowań. Na przykład, gdy droncode1.py jest gotowy i uruchomiony, zamontuj go na dronie. Na ekranie komputera można zobaczyć obrazy na żywo przechwytywane przez kamerę. Możesz wysłać drona z kamerą do wyznaczonego obszaru w celu wykrycia i monitorowania. Odległość, na jaką może polecieć dron, zależy od zasięgu sieci Wi-Fi.

Do pobrania
Download icon Inteligentny dron z rozpoznawaniem twarzy w czasie rzeczywistym - kod źródłowy
Firma:
AUTOR
Źródło
www.electronicsforu.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"