Tworzenie modelu ML
W tym projekcie będziemy potrzebować Raspberry Pi do uruchomienia modelu ML. Za pomocą przetwarzania obrazu, będzie on wykrywał obecność maseczki na twarzy. Po stworzeniu modelu ML, wytrenuj go używając Edge Impulse.
Dlatego najpierw stwórz nowy projekt i zainstaluj Edge Impulse na Raspberry Pi.
Następnie otwórz terminal Raspberry Pi i zainstaluj zależności, uruchamiając następujący kod w terminalu.
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt install -y gcc g++ make build-essential nodejs sox gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps
npm config set user root && sudo npm install edge-impulse-linux -g -unsafe-perm
Po instalacji, uruchom go używając edge-impulse-linux
Następnie zostaniesz poproszony o podanie swojego identyfikatora e-mail i hasła do Edge Impulse. Po prostu wprowadź te dane i zaloguj się (patrz rysunek 2).
W kolejnym kroku zostaniesz poproszony o wybranie projektu, z którym urządzenie ma być połączone. Wprowadź nazwę projektu (np. Covid-Mask-Detector) (patrz rysunek 3).
Przygotowanie zestawów danych
Aby przygotować zbiory danych dla modelu ML i później zaimplementować je do treningu wykrywania maseczki, należy użyć kamery Raspberry Pi do przechwycenia obrazu twarzy. Następnie w terminalu Raspberry Pi należy uruchomić komendę edge-impulse-linux.
Po wybraniu nazwy projektu, otrzymasz adres URL w terminalu, który należy otworzyć w przeglądarce internetowej, takiej jak Chrome lub Firefox. Po otwarciu adresu URL pojawia się interfejs użytkownika (UI), w którym wyświetlany jest strumień wideo na żywo z kamery Raspberry Pi. Po przechwyceniu kilku obrazów siebie bez noszenia maseczki oznacz je jako "bez maseczki". Powtórz ten sam proces, ale tym razem podczas noszenia maseczki i oznacz je jako "maseczka" (patrz rysunki 4, 5, 6). Następnie kliknij na przycisk "testowanie" i powtórz ten sam proces, jak poprzednio w fazie treningu. Teraz zbiory danych są gotowe do treningu i testów modelu ML wykrywającego maseczki.
Trening i testowanie modelu ML
W menu Edge Impulse ustawiamy blok przetwarzania i uczenia. W bloku przetwarzania widzimy opcje dla czujnika, obrazu i innych danych. Ponieważ obraz musi zostać przetworzony, należy wybrać tutaj opcję image.
W bloku uczenia się, pierwsza opcja, czyli "Transfer Learning (Images)" jest odpowiednia do klasyfikacji obrazu. Należy więc ją wybrać.
Następnie wprowadź parametry obrazu, a następnie przejdź do uczenia transferowego tak, aby uczenie modelu ML zostało zakończone (patrz rysunki 7, 8, 9, 10).
Testowanie modelu ML
Aby sprawdzić dokładność modelu ML, przejdź do testowania i kliknij "Classify all". Model ML sklasyfikuje wszystkie obrazy we wcześniej utworzonych testowych zbiorach danych i poda wyniki na podstawie ich dokładności. Jeśli nie jesteś zadowolony z poziomu dokładności, możesz dodać jeszcze więcej obrazów z odpowiednią etykietą i przekazać je do modelu ML. Ponadto, podczas tworzenia modelu ML, zwiększ liczbę cykli treningowych, aby zapewnić większą dokładność. Po uzyskaniu zadowalającej dokładności wytrenowanego i przetestowanego modelu ML, możesz go przetestować za pomocą opcji "Klasyfikacja na żywo". W klasyfikacji na żywo, otrzymujesz obraz na żywo z kamery Raspberry Pi. Wystarczy kliknąć na 'Classify t= ', a kamera przechwyci obraz twarzy. Następnie poda wynik określający, czy masz na sobie maseczkę, czy nie.
Wdrażanie modelu ML na Raspberry PI
Teraz wybierz płytkę, na której chcesz wdrożyć model ML. Ponieważ używasz Raspberry Pi z kamerą, wybierz płytkę linuksową i uruchom polecenie Edge-impulse-runner-linex w terminalu Raspberry Pi. W terminalu pojawi się adres URL. Otwórz go w przeglądarce, gdzie można zobaczyć na żywo strumień wideo pochodzący z kamery Raspberry Pi. Teraz za każdym razem, gdy pojawi się przed kamerą, Twoja twarz zostanie wykryta, a wynik zostanie wyświetlony na ekranie (czy masz na sobie maseczkę, czy nie).
Jeśli chcesz, aby po wykryciu maseczki były wykonywane inne zadania, takie jak odtwarzanie dźwięku lub otwieranie i zamykanie bramy, możesz wyeksportować model ML i zaprogramować zadania w Pythonie za pomocą SDK. Sprawdź dokumentację SDK, aby dowiedzieć się więcej.