Serwisy partnerskie:
Close icon
Serwisy partnerskie

Klasyfikacja zwierząt za pomocą kamery RPi do badań i monitoringu

Article Image
Elmax
Polowania nadal powodują wyginięcie wielu gatunków zwierząt, a rządy nie są w stanie zrobić wiele poza wprowadzeniem pewnych przepisów i prowadzeniem regularnych badań. Ale prowadzenie badań nie jest łatwym zadaniem, zwłaszcza bez pomocy technologii.

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ł.

Rysunek 1. Zdjęcie słonia zrobione przez prototyp układu

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.

Rysunek 2. Katalog object_detection

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ą.

Rysunek 3. Kod z modułami i bibliotekami
Rysunek 4. Definicja ścieżki z nową nazwą pliku

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.

Rysunek 5. Zapisywanie pliku wykrytego obrazu w zdefiniowanym katalogu

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).

Rysunek 6. Tworzenie pliku o nazwie New.pbtxt w folderze data
Rysunek 7. Tworzenie kategorii zwierząt/gatunków do wyświetlania w New.pbtxt
Rysunek 7. Tworzenie kategorii zwierząt/gatunków do wyświetlania w New.pbtxt

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.

Rysunek 8. Wykryte zwierzęta

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).

Rysunek 9. Zawartość pliku forestdb.txt
Rysunek 10. Obrazy wykrytych zwierząt zapisane w folderze databasefolder
Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić
Do pobrania
Download icon Klasyfikacja zwierząt za pomocą kamery RPi do badań i monitoringu - 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"