Czy nowe Arduino jest na tyle sprytne, by odróżnić butelkę od myszki, a myszkę od telefonu komórkowego? Dziś testujemy komputer jednopłytkowy ze stajni Arduino, wyposażony w procesor Qualcomm Dragonwing QRB2210, mikrokontroler STM32U585 oraz 4 GB pamięci RAM LPDDR4 i 32 GB eMMC. Sprawdzę tutaj, czy i jak szybko zadziała na nim YOLOv4-tiny, czyli lekki model wizyjny pozwalający na klasyfikację wielu różnych obiektów z obrazu kamery w czasie rzeczywistym.
Arduino UNO Q pojawiło się pod koniec zeszłego roku i kosztuje w naszym kraju 200 - 300 zł.
Zacznijmy od pierwszego uruchomienia. Zasadniczo, całość może działać jak zwykły komputer jednopłytkowy. Aby to uruchomić, do jedynego portu USB-C podpiąłem wieloportowy hub (model BW-TH8). Dzięki temu mogłem jednocześnie podłączyć zasilanie, monitor oraz peryferia, takie jak mysz i klawiatura.
Normalnie system uruchamia się bardzo szybko i wita nas ekranem logowania. Domyślny użytkownik to "arduino", a przy pierwszej próbie wejścia system natychmiast wymusza na nas ustawienie własnego hasła.
W ten sposób uzyskujemy dostęp do pełnoprawnego środowiska graficznego. Jak widać, na pokładzie zainstalowano lekkie środowisko XFCE, a my mamy od razu do dyspozycji m.in. przeglądarkę internetową (można przeglądać nasze forum) oraz narzędzie Arduino App Lab.
Teraz trzeba przetestować podłączoną kamerkę na USB. Z racji tego, że bazujemy na Linuksie (Debian), wystarczy otworzyć wbudowany terminal. Komendą
lsusbsprawdziłem, czy system poprawnie wykrył urządzenia, a następnie szybkim poleceniem
sudo apt-get install cheesezainstalowałem popularny, prosty program do podglądu obrazu z kamerki. Kamera działa bez zarzutów.
Następnie stawiamy demko OpenCV, a dokładniej instalujemy wymagane biblioteki i uruchamiamy skrypt detekcji. Jest to bardzo proste. Uproszczony przykład:
Kod: Python
I teraz pora przejść do właściwych testów. Co takiego widzi kamera?
Dla wygody dobrałem najmniejszy model - YOLOV4-tiny, uruchamiany wyłącznie na CPU (bez dodatkowej akceleracji). Niestety, FPS oscyluje w okolicach 2.5 klatki na sekundę, co widać w statystykach na ekranie.
Pierwsze trzy zrzuty ekranu pokazują, że algorytm ma spore problemy z rozpoznawaniem obiektów. Smartfon leżący na biurku został raz zidentyfikowany jako "remote" (pilot, 36%), a myszka komputerowa dwukrotnie wzięta za "sports ball" (piłkę sportową, 51% i 66%). Dopiero na ostatnim kadrze myszka została poprawnie sklasyfikowana jako "mouse", choć z dość niską pewnością wynoszącą zaledwie 49%.
Chwilkę później widzimy kolejne zmagania. Położone na stole nożyczki zostały początkowo całkiem trafnie zidentyfikowane ("scissors" 40%), jednak gdy dołączyłem do nich białą butelkę z atomizerem, ta została rozpoznana jako pilot ("remote" 54%). W ostatnim kadrze mała szczoteczka ostatecznie została sklasyfikowana jako "toothbrush", choć zaledwie na 29%.
Kolejne testy przyniosły wreszcie pewne sukcesy, ale też i nowe komiczne pomyłki. Model bezbłędnie rozpoznał biały kubek ("cup" 97%) oraz stojącą obok niego szklankę ("cup" 77%). Niestety, gdy na scenie zamiast szklanki pojawił się marker, YOLO uznało go za kij bejsbolowy ("baseball bat" 30%), a w kolejnym ujęciu w ogóle przestało go zauważać. W każdej z tych sytuacji kubek był jednak niezmiennie identyfikowany wzorowo na 97%.
Wnioski jednak zostawię na koniec.
Jeszcze chciałem sprawdzić, jak płytka radzi sobie z odprowadzaniem ciepła pod obciążeniem. Pomiary z kamery termowizyjnej ujawniły temperatury rzędu 55-60°C. Najgorętszym elementem na froncie okazał się oczywiście układ Qualcomm QRB2210, który rozgrzał się do około 60°C.
Całość nagrzewa się dosyć równomiernie i raczej bez obaw o przegrzewanie - spód płytki wykazuje temperatury w okolicach 57°C. Zawsze jednak warto zadbać o przewiew obudowy w bardziej zaawansowanych projektach.
Podsumowując, Arduino UNO Q wydaje się być ciekawym pomysłem na połączenie świata mikrokontrolerów z wydajnością prostego jednopłytkowego komputera wyposażonego w system Linux, trochę tak jak Raspberry Pi. Choć nasz prosty test na modelu YOLOv4-tiny wykazał, że wykorzystywanie wyłącznie CPU do przetwarzania obrazu nie pozwala na sensowny FPS (ok. 2.5 klatki na sekundę) a użycie malutkiego modelu skutkuje częstymi pomyłkami algorytmu, sama platforma sprzętowa wydaje się dość interesująca. Jedynie mam problem z tym, kto może być docelowym odbiorcą tego typu płytki. Klasyczne, proste Arduino wypełnia dobrze lukę na rynku, udostępniając programowanie mikrokontrolerów w prosty sposób. Podobnie Raspberry, jako komputer jednopłytkowy, ma swój rynek zbytu. A tutaj? Czy to ma być etap pośredni? Próba utrzymania miłośników Arduino przy ich marce? Czy przy takiej cenie, nie lepiej już wziąć Raspberry? Te pytania pozostawię już Wam - jakiego jesteście zdania, czy Arduino Q ma sens?
Fajne? Ranking DIY Pomogłem? Kup mi kawę.