Inteligentna kamera w tym projekcie wykorzystuje kod Pythona, który posiada wstępnie wytrenowane modele TensorFlow do monitorowania i badania lasów. Modele te pomagają nam w dopasowaniu i mapowaniu obrazu z wyszkolonymi danymi modelu, a tym samym w identyfikacji tych zwierząt.
Obrazy słoni wykrywane za pomocą autorskiego prototypu pokazane są na rysunku 1. Prototyp układu, który wykorzystuje Raspberry Pi (lub RPi) z modułem kamery jest pokazany na fotografii otwierającej artykuł.
Raspberry Pi przechwytuje obraz wideo za pomocą kamery, następnie za pomocą modułu OpenCV tnie wideo na klatki. Następnie, przy użyciu OpenCV i innych modułów, przetwarza obraz wykrytych gatunków i mapuje go z kategorią i wytrenowanym wcześniej modelem detekcji. Jeśli wykryty gatunek zwierzęcia nie znajduje się na liście kategorii, podaje wynik jako "brak" i zapisuje obraz z danymi i znacznikiem czasu w folderze bazy danych, aby można go było później zbadać.
Jeśli wykryty gatunek zwierzęcia pasuje do któregoś ze zwierząt wymienionych w bazie danych new.pbtxt, identyfikuje nazwę zwierzęcia i zapisuje ją w pliku tekstowym forestdb.txt wraz z czasem i datą. Zapisuje również obraz tego zwierzęcia ze znacznikiem czasu w innym folderze, aby móc go później wykorzystać w przyszłości.
W ten sposób inteligentna kamera śledzi i tworzy bazę danych ze zdjęciami zwierząt występujących w lesie. Może to również pomóc w badaniu zachowań zwierząt oraz obecności i rozwoju flory i fauny w lesie.
Kodowanie
Wymagane jest Raspberry Pi (RPi) z systemem operacyjnym Raspbian i Python IDE oraz dostęp do pulpitu RPi albo z VNC albo z wyświetlaczem opartym na HDMI. (Uwaga. W niniejszym projekcie używany jest Python3 i kod kompatybilny tylko z wersjami Python3 i wyżej). Należy zacząć od instalacji modułów i bibliotek dla tego projektu.
Otwórz terminal Linux na swoim Raspberry Pi i zainstaluj wymagane biblioteki używając następujących poleceń:
sudo apt-get update
sudo apt-get upgrade
sudo nano /etc/dphys-swapfile
Zmień linię CONF_SWAPSIZE=100 na CONF_SWAPSIZE=1024
Kontynuuj z następującymi poleceniami:
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
Po zainstalowaniu bibliotek za pomocą wyżej wymienionych poleceń, można przystąpić do klonowania modułów TF, przykładów i plików za pomocą następujących poleceń:
git clone https://github.com/tensorflow/tensorflow.git
git clone https://github.com/tensorflow/models
Po pomyślnym sklonowaniu przejdź do pliku katalog → research → object_detection → detect.py w Python IDE (patrz rysunek 2). Spróbuj przeanalizować kod.
W pierwszej części kodu znajdują się wymagane biblioteki i moduły, jak pokazano na rysunku 3. Musimy ustawić ścieżkę do pliku tekstowego, który zawiera nazwy kategorii gatunków/zwierząt do wykrycia. W projekcie ustawiono etykiety kategorii w pliku New.pbtx, jak pokazano na rysunku 4. Kolejna część kodu przechowuje wynik detekcji w zmiennej łańcuchowej o nazwie 'name' Następnie mamy kod, który oznacza nazwę wykrytego obrazu z datą i godziną.
Następnie mamy instrukcję warunkową, która sprawdza wynik detekcji. Jeśli warunek wyniku detekcji nie jest równy '[]' to zapisuje wynik wraz z datą i czasem do pliku tekstowego. Kolejna część kodu zapisuje wykryty obraz w folderze 'databasefolder'. W tym miejscu można zmienić ścieżkę zapisu obrazu według własnego uznania (patrz rysunek 5), a następnie zapisać kod.
Przejdź do folderu z danymi i utwórz plik o nazwie New.pbtxt (patrz rysunek 6) i opatrz go etykietami z identyfikatorami różnych gatunków zwierząt do wykrywania i wyświetlania (patrz rysunek 7).
Testowanie
Po zakończeniu części kodującej, podłącz moduł kamery do portu kamery Raspberry Pi za pomocą kabla taśmowego, jak pokazano w prototypie. Otwórz kod w IDE i uruchom skrypt forestsurvayfinal2.py, po czym poczekaj kilka minut, aby mógł on załadować wszystkie moduły tensor flow. Otworzy to nowe okno z wyjściem wideo z kamery.
Przesuń kamerę przed zwierzę, takie jak krowa, owca, itp, które ma być zidentyfikowane. Za każdym razem, gdy zwierzę pojawi się w kadrze kamery, wykryty obraz zostanie przetworzony przez komputer i zapisany w pliku tekstowym. Program zapisze tę ramkę w folderze bazy danych z datą i znacznikiem czasu. Zwierzęta uchwycone przez kamerę w ramce zdjęcia są pokazane na rysunku 8.
Otwórz plik forestdb.txt, aby zobaczyć listę wykrytych gatunków/zwierząt wraz z czasem i datą (patrz rysunek 9). Jeśli chcesz zobaczyć obrazy/zdjęcia wykrytych zwierząt, otwórz folder databasefolder i kliknij na każdy plik z datą i godziną wykonania zdjęcia (patrz rysunek 10).