12 - TinyML: Klasyfikacja obrazu
Systemy Wbudowane i Przetwarzanie Brzegowe
Politechnika Poznańska, Instytut Robotyki i Inteligencji Maszynowej
Ćwiczenie laboratoryjne 12: TinyML - klasyfikacja obrazu
Powrót do spisu treści ćwiczeń laboratoryjnych
Wstęp
Algorytmy oparte o sieci neuronowe stają się coraz bardziej powszechne również w systemach wbudowanych. Jednak, aby taki model uruchomić na urządzeniu o ograniczonych zasobach, jakim jest mikrokontroler, niezbędne jest odpowiednie podejście przy projektowaniu i przeprowadzenie optymalizacji, które poznaliśmy podczas wcześniejszych laboratoriów.
W przypadku mikrokontrolerów, modele wizyjne oparte o sieci neuronowe muszą być bardzo małe, aby zmieścić się w pamięci urządzenia razem z pozostałą częścią programu, zarówno w postaci binarnej oraz w czasie działania. W tym celu można wykorzystać prostsze architektury z mniejszą liczbą warstw i parametrów, jednakże może skutkować to otrzymaniem gorszych rezultatów ze względu na zbyt złożone zależności występujące w danych wejściowych, których prostszy model nie będzie w stanie się nauczyć. W związku z tym zazwyczaj należy podjąć kompromis pomiędzy wielkością modelu, a jego dokładnością i jakością działania, mając również na uwadzę, że rozmiar algorytmu znacząco wpływa na czas działania i zwiększa obciążenie procesora.
W tym laboratorium wykorzystamy platformę Edge Impulse do przygotowania zbioru danych pozwalającego na rozróżnienie obrazów przedstawiających długopis i pendrive. Następnie wykorzystamy ten zbiór do treningu modelu klasyfikacji obrazów, który wdrożymy na mikrokontrolerze Arduino Nano 33 BLE Sense wykorzystując kamerę OV7675.
Zadanie do samodzielnego wykonania
Zadanie 1. Stwórz nowy projekt na platformie Edge Impulse i nazwij go np. pen-vs-pendrive. Dodaj Arduino Nano 33 BLE Sense do tego projektu. Następnie korzystając z panelu Data acquisition zbierz kilkanaście różnorodnych zdjęć dla każdej z klas i umieść je w zbiorze testowym. Pobierz zbiór danych pen_vs_pendrive.zip i dodaj go do zbioru traningowego.
Zadanie 2. Mając na uwadze bardzo ograniczone zasoby jakimi dysponuje Arduino Nano 33 BLE Sense przygotuj Impuls, wytrenuj model i zoptymalizuj go korzystając z panelu EON Tuner.
Zadanie 3. Podobnie jak w laboratorium 13 - TinyML: Keyword spotting umieść model na mikrokontrolerze i przetestuj jego działanie.
Uwaga: W przypadku wystąpienia błędu związanego z brakiem biblioteki Arduino_OV767X należy ją zainstalować korzystając z menadżera bibliotek Arduino IDE.