OtwórzMV
Tarcze
Obiektyw
Robotyka
Książka
Wideo
Pobierać
Dokumenty
Forum
OpenMV.io
GitHubW kwietniu ubiegłego roku wprowadziliśmy na rynek nasz nowy produkt – OpenMV4 H7 Plus. Dzisiaj chciałbym przedstawić jego nową funkcję – samodzielne trenowanie sieci neuronowych za pomocą platformy online EdgeImpulse w celu klasyfikacji i rozpoznawania.
W tym samouczku wykorzystasz uczenie maszynowe do zbudowania systemu rozpoznawania, który za pomocą inteligentnej kamery OpenMV4 H7 Plus będzie identyfikował, czy osoba na zdjęciu nosi maseczkę, czyli zrealizuje klasyfikację obrazu.

EdgeImpulse to witryna internetowa oferująca usługi szkolenia modeli sieci neuronowych online dla urządzeń wbudowanych. Jest partnerem naszej firmy SingTown, a także oficjalnym partnerem STMicroelectronics. Obecnie EdgeImpulse jest bezpłatnie dostępny dla użytkowników SingTown, którzy mogą bezpłatnie korzystać z platformy do trenowania modeli sieci neuronowych online przeznaczonych dla SingTown.
Dodanie sieci neuronowej do urządzenia wbudowanego OpenMV umożliwia rozróżnianie kłusowników i słoni, kontrolę jakości na liniach produkcyjnych w fabrykach oraz samodzielne prowadzenie zdalnie sterowanych modeli samochodów.
W tym samouczku nauczysz się, jak zbierać obrazy w celu stworzenia wysokiej jakości zbioru danych, jak zastosować transfer uczenia do trenowania sieci neuronowej oraz jak wdrożyć system na platformie OpenMV.
Ponadto udostępniliśmy samouczek wideo, który można obejrzeć na oficjalnej stronie internetowej, wyszukując "OpenMV4 Plus: Trenowanie sieci neuronowej do rozpoznawania maseczek".
Możesz zapoznać się z całą zawartością projektu pod poniższym adresem, obejmującym wszystkie kody i modele: https://book.openmv.cc/project/mask.html
Użycie EdgeImpulse do trenowania modeli sieci neuronowych online, przeznaczonych dla OpenMV, obejmuje głównie cztery kroki: zbieranie danych, przesyłanie, trenowanie oraz wdrożenie.
01. Zbieranie zbioru danych
W tym samouczku zbudujemy model, który będzie w stanie rozróżnić, czy na twarzy znajduje się maseczka. Oczywiście możesz również wybrać klasyfikację innych przedmiotów. Aby umożliwić działanie modelu uczenia maszynowego, musisz zebrać dużą liczbę przykładowych obrazów twarzy zarówno w maseczkach, jak i bez nich. Podczas treningu te przykładowe obrazy służą do ćwiczenia rozróżniania przez model.
Musimy wykorzystać OpenMV IDE do zebrania naszego zbioru danych. Kroki do zbierania obrazów są następujące:
Utwórz dwie kategorie:
Otwórz menu "Narzędzia" w OpenMV IDE, wybierz "Edytor zestawu danych", kliknij "Nowy zestaw danych", następnie utwórz nowy folder i otwórz go. Wewnątrz zestawu danych utwórz dwa kolejne foldery, nazywając je odpowiednio "mask" (do przechowywania zdjęć twarzy w maseczkach) i "face" (do przechowywania zdjęć twarzy bez maseczek).


Zbieranie obrazów za pomocą OpenMV
Najpierw łączymy OpenMV, klikamy "Połącz" w IDE, następnie "Uruchom". W buforze klatek Framebuffer widzimy obraz na żywo z OpenMV. Klikając przycisk zdjęcia w lewym menu paskowym, OpenMV automatycznie zapisuje to zdjęcie, co stanowi jeden z elementów zbioru danych.
Najpierw musimy zapisać twarz osoby w masce. Kliknij przycisk zdjęcia, a IDE zrobi zdjęcie w dolnej części, automatycznie nazywając je 00000, następne będzie 00001 i tak dalej.
Zbierz 200 zdjęć twarzy osób w maseczkach (po 100 kobiet i mężczyzn) oraz 200 zdjęć twarzy osób bez maseczek (po 100 kobiet i mężczyzn) za pomocą OpenMV.


* Uwaga: Należy upewnić się, że zdjęcia są zbierane z różnych kątów, aby zapewnić różnorodność naszego treningu i uczenia się.
Jeśli podczas zbierania danych okaże się, że jakieś zdjęcie nie jest wystarczająco doskonałe, można kliknąć na nie prawym przyciskiem myszy i wybrać opcję usunięcia.
02. Przesyłanie
Po zebraniu obrazów za pomocą OpenMV, musisz zarejestrować konto i zalogować się na oficjalnej stronie EdgeImpulse (https://edgeimpulse.com/), aby rozpocząć przesyłanie obrazów. Kroki przesyłania obrazów:
Utwórz nowy projekt na EdgeImpulse, kliknij "keys", wybierz "API Key" i skopiuj "API Key". Za pomocą klucza API połącz OpenMV IDE z Edge Impulse.

Wybierz z górnego paska menu w OpenMV IDE opcję "Narzędzia" – "Edytor danych" – "Eksportuj" – "Prześlij" – "Prześlij za pomocą klucza API", skopiuj "Klucz API" i prześlij.
Dane zostaną automatycznie podzielone na zbiór treningowy i testowy podczas przesyłania. Domyślnie wybieramy proporcję "80% i 20%". Zebraliśmy ponad 400 zdjęć twarzy, z czego 80% danych w Training Date jest domyślnie wykorzystywanych do treningu, a pozostałe 20% służy jako zbiór testowy.


03. Zbiór danych treningowych
Gdy zestaw danych jest gotowy, możesz trenować go w interfejsie strony internetowej EdgeImpulse.
Moduł przetwarzania konfiguracji:
Najpierw wybierz "Impulse Design", skonfiguruj moduł przetwarzania:
* Ustaw domyślny rozmiar obrazu na "96 x 96";
Wybierz moduł "Obrazy", co oznacza, że przeprowadzamy trening klasyfikacji obrazów (możesz również użyć EdgeImpulse do klasyfikacji dźwięku, wideo itp.);
Wybierz "Transfer Learning (Images) Transfer Learning (Images)", skonfiguruj model do nauki.
Wybierz "Zapisz impuls Save impulse", wyświetlenie "Successfully" oznacza pomyślną konfigurację.

Przetwarzanie wstępne obrazu:
Kliknij "Obraz" w menu po lewej stronie, ustaw format kolorów na "RGB", a następnie kliknij "Zapisz".

Następnie wybierz "Generuj cechy" (Generate features), aby uruchomić proces. Wykonana zostanie wstępna obróbka ponad 400 obrazów, a po prawej stronie wyświetlona zostanie wizualizacja 3D pełnego zestawu danych.

Konfiguracja modelu transferu uczenia
Kliknij "Uczenie transferowe (Transfer learning)" w menu po lewej stronie, wszystkie parametry ustawień można wybrać jako domyślne lub zmienić zgodnie z wymaganiami:
1. Ustaw domyślną liczbę cykli treningowych Number of training cycles na 10
2. Ustaw współczynnik uczenia (Learning rate) na 0,0005
3. Można zaznaczyć lub nie zaznaczyć opcji "Data augmentation
4. Ustaw domyślną wartość minimalnego współczynnika ufności Minimum confidence rating na 0.8.
Kliknij "Rozpocznij trening Start training", proces treningu trwa około 4 do 5 minut.
Po zakończeniu trenowania modelu możesz sprawdzić dokładność, macierz pomyłek (confusion matrix) oraz oczekiwaną wydajność urządzenia.

Testuj model:
Po zakończeniu treningu wykorzystamy dane testowe do sprawdzenia modelu.
Wybierz "Testowanie modelu Model testing", zaznacz pole wyboru obok "Nazwa próbki Sample name", kliknij "Klasyfikuj wybrane Classify selected". Prezentowana tutaj dokładność osiągnęła 97%, co jest niezwykłe jak na model z tak małą ilością danych.

Odkryto, że ten obrazek wyświetlany na czerwono jest niepewny. Kliknij trzy kropki po prawej stronie tego obrazka, wybierz "Pokaż klasyfikację Show classification", a przejdziesz do interfejsu "Klasyfikacja w czasie rzeczywistym", który zawiera więcej szczegółów dotyczących pliku. Ten interfejs pomoże Ci ustalić przyczynę błędnej klasyfikacji obrazka.

Jeśli dane znajdują się poza wszystkimi znanymi klastrami (w maseczce/bez maseczki), mogą to być dane, które nie pasują do żadnej wcześniej obserwowanej klasyfikacji – być może z powodu włosów zasłaniających większą część twarzy.
04. Uruchamianie modelu na OpenMV
Po wykonaniu kroków projektowania treningu, trenowania modelu i walidacji modelu, możesz wyeksportować ten model do swojego OpenMV. Wybierz "OpenMV", a następnie "Build", aby wygenerować. Automatycznie utworzone zostaną 3 pliki:
trained.tflite wytrenowany model sieci neuronowej
* labels.txt dwa etykiety kategorii (face i mask)
* ei_image_classification.py to kod do uruchomienia na OpenMV

Połącz OpenMV IDE i zapisz te 3 pliki w pamięci Flash wbudowanej w OpenMV. Otwórz plik ei_image_classification.py w OpenMV IDE, aby zobaczyć kod wygenerowany wcześniej w EdgeImpulse. Kliknij Uruchom, a wyniki działania zostaną wyświetlone w terminalu szeregowym.


Dobrze, udało Ci się już dodać funkcję samodzielnego trenowania sieci neuronowych do OpenMV.
Oczekujemy Twoich wyników!

AI Stróż oparty na OpenMV: automatyczne powiadomienie o niezamknięciu miejsc kluczowych
Automatyczne wykrywanie, czy drzwi w kluczowych miejscach pozostają otwarte przez dłuższy czas, oraz natychmiastowe powiadamianie o tym fakcie.

Alarm w przypadku przekroczenia granicy przez osobę – OpenMV interpretuje pojęcie „bezpiecznej strefy granicznej”
Rozpoznawanie przekroczenia granicy przez osoby lub urządzenia za pomocą wirtualnej linii alarmowej.

„AI Inspektor Miast” już dostępny – system automatycznego rozpoznawania niezgodnego z przepisami prowadzenia działalności handlowej na terenach publicznych oparty na platformie OpenMV
Automatyczne rozpoznawanie działalności handlowej na drogach publicznych w celu wspierania codziennej administracji miejskiej.

Nieprawidłowe umieszczenie butli gazowych? Automatyczne wyzwalanie ostrzeżenia o zagrożeniu przy użyciu OpenMV
Automatyczne rozpoznawanie niezgodnych miejsc umieszczenia butli gazowych oraz wcześniejsze wykrywanie zagrożeń związanych z gazem.

Wykonywanie prac pod napięciem bez stosowania rękawiczek izolacyjnych? OpenMV natychmiast wydaje alarm!
Automatyczne rozpoznawanie, czy pracownicy noszą rękawice izolacyjne, wspierające bezpieczną pracę.

Zastosowanie inteligentnej kamery OpenMV do rzeczywistego rozpoznawania wad powierzchni płytek aluminiowych
Onlineowe wykrywanie wad powierzchniowych płyt aluminiowych, takich jak zadrapania i wgniecia, wspierające kontrolę jakości.