Uruchamianie kodu uczenia maszynowego we wbudowanym węźle IoT w celu łatwej identyfikacji obiektów

Przez: Bill Giovino

Przekazane przez: Północnoamerykańscy redaktorzy DigiKey

Sieci Internetu rzeczy (IoT) działające w dynamicznych środowiskach pracują nie tylko nad wykrywaniem obiektów. Ich zadania obejmują wizualną identyfikację obiektów w takich zastosowaniach jak ochrona, monitoring środowiska, bezpieczeństwo i przemysłowy Internet rzeczy (IIoT). Ponieważ identyfikacja obiektów ma charakter adaptacyjny i wiąże się z wykorzystaniem modeli uczenia maszynowego (ML), jest to złożona dziedzina, a nauczenie się jej od zera i efektywne jej wdrożenie może być trudne.

Wynika to z faktu, że modele ML działają na tyle dobrze, na ile dobrze dobrany jest zbiór danych, a po uzyskaniu prawidłowych danych system musi być odpowiednio przeszkolony, aby mógł działać w praktyce.

W niniejszym artykule opisano sposób, w jaki deweloperzy mogą wdrożyć model ML Google TensorFlow Lite for Microcontrollers w mikrokontrolerze firmy Microchip Technology. Następnie wyjaśniono, w jaki sposób używać zbiorów danych do klasyfikacji obrazów i wykrywania obiektów za pomocą TensorFlow Lite w celu łatwej identyfikacji obiektów z minimalnym kodowaniem niestandardowym.

Przedstawiono również zestaw startowy TensorFlow Lite ML firmy Adafruit Industries, który pomaga deweloperom zapoznać się z podstawami uczenia maszynowego (ML).

Uczenie maszynowe (ML) dla wbudowanych systemów wizyjnych

Uczenie maszynowe (ML) w szerokim sensie daje komputerowi lub systemowi wbudowanemu podobne możliwości rozpoznawania wzorców co u człowieka. Z ludzkiego sensorycznego punktu widzenia oznacza to używanie takich czujników jak mikrofony i kamery do naśladowania ludzkiego zmysłowego postrzegania słuchu i wzroku. O ile czujniki są łatwe w użyciu do przechwytywania danych audio i obrazów, o tyle po zdigitalizowaniu i zapisaniu danych muszą one zostać przetworzone, aby można je było dopasować do zapisanych w pamięci wzorców, które reprezentują znane dźwięki lub obiekty. Wyzwanie polega na tym, że dane obrazów uchwyconych przez kamerę np. dla wizualnego obiektu nie będą dokładnie odpowiadały danym zapisanym w pamięci obiektu. Zastosowanie uczenia maszynowego (ML), które musi wizualnie zidentyfikować obiekt, musi przetwarzać dane, aby móc dokładnie i skutecznie dopasować wzór zarejestrowany przez kamerę do wzoru zapisanego w pamięci.

Istnieją różne biblioteki lub silniki służące do dopasowania danych przechwytywanych przez czujniki. Biblioteka TensorFlow jest otwartą biblioteką kodu źródłowego używaną do dopasowywania wzorców. Biblioteka TensorFlow Lite for Microcontrollers została specjalnie zaprojektowana do pracy na mikrokontrolerze, co w konsekwencji zmniejszyło zapotrzebowanie na pamięć i procesor do pracy na mniej zaawansowanym sprzęcie. Wymaga ona 32-bitowego mikrokontrolera i zużywa poniżej 25kB pamięci flash.

Jednakże, o ile TensorFlow Lite for Microcontrollers jest silnikiem uczenia maszynowego (ML), to system nadal potrzebuje zbioru danych do nauki wzorców, które ma zidentyfikować. Niezależnie od tego, jak dobry jest silnik ML, system działa na tyle dobrze, na ile dobrze dobrany jest zbiór danych na których się uczy, a w wielu dużych modelach w przypadku obiektów wizualnych niektóre z danych do nauki mogą wymagać wielu gigabajtów danych. Większa ilość danych wymaga wyższej wydajności procesora, aby szybko znaleźć dokładne dopasowanie, dlatego takie zastosowania zazwyczaj pracują na potężnych komputerach lub laptopach wysokiej klasy.

W przypadku zastosowań z systemami wbudowanymi konieczne powinno być jedynie przechowywanie tych konkretnych modeli w zbiorze danych szkoleniowych, które są niezbędne dla danego zastosowania. Jeśli system ma rozpoznawać narzędzia i mocowania, wówczas można usunąć modele przedstawiające owoce i zabawki. Zmniejsza to rozmiar zbioru danych do nauki, co z kolei zmniejsza zapotrzebowanie na pamięć wbudowanego systemu, poprawiając tym samym wydajność przy jednoczesnym obniżeniu kosztów.

Mikrokontroler ML

Aby uruchomić zestaw TensorFlow Lite for Microcontrollers, firma Microchip Technology wzięła na cel uczenie maszynowe w mikrokontrolerach z wykorzystaniem bazującego na rdzeniu Arm® Cortex®-M4F mikrokontrolera ATSAMD51J19A-AFT (ilustracja 1). Posiada on 512kB pamięci flash oraz 192kB pamięci SRAM i pracuje na częstotliwości 120MHz. Układ ATSAMD51J19A-AFT należy do grupy mikrokontrolerów ML ATSAMD51 firmy Microchip Technology. Jest on zgodny ze standardami jakości AEC-Q100 Grade 1 w motoryzacji i pracuje w temperaturze od -40°C do +125°C, dzięki czemu można go używać w zastosowaniach IoT i IIoT w najtrudniejszych warunkach. Jest to mikrokontroler niskonapięciowy pracujący przy napięciach od 1,71 do 3,63V i częstotliwości 120MHz.

Schemat układu ATSAMD51J19A bazującego na rdzeniu Cortex-M4F (kliknij, aby powiększyć)Ilustracja 1: układ ATSAMD51J19A bazuje na rdzeniu Arm Cortex-M4F pracującym na częstotliwości 120MHz. Jest to w pełni funkcjonalny mikrokontroler wyposażony w512kB pamięci flash i 192kB pamięci SRAM. (Źródło ilustracji: Microchip Technology)

Opcje sieciowe ATSAMD51J19A obejmują standard CAN 2.0B dla sieci przemysłowych i 10/100 Ethernet dla większości sieci przewodowych. Dzięki temu mikrokontroler może działać w różnych sieciach IoT. Interfejs USB 2.0 obsługuje zarówno tryb pracy jako host oraz jako urządzenie podrzędne i może być używany do debugowania urządzeń lub tworzenia sieci systemowej.

Połączona pamięć podręczna instrukcji i danych 4kB poprawia wydajność podczas przetwarzania kodu uczenia maszynowego (ML). Jednostka zmiennoprzecinkowa (FPU) również poprawia wydajność kodu ML, a także przetwarza surowe dane z czujników.

Przechowywanie zbiorów danych do nauki

Układ ATSAMD51J19A posiada również interfejs QSPI do przechowywania zewnętrznych programów lub pamięci danych. Jest to przydatne w przypadku przechowywania dodatkowych danych ze zbiorów danych do nauki, które przekraczają pojemność pamięci flash w układzie scalonym. Interfejs QSPI wyposażono również we wsparcie eXecute in Place (XiP), co umożliwia zewnętrzną, szybką rozbudowę pamięci programów.

Układ ATSAMD51J19A posiada również kontroler hosta karty pamięci SD/MMC (SDHC), który jest bardzo przydatny w zastosowaniach uczenia maszynowego (ML), ponieważ umożliwia łatwą wymianę pamięci kodów ML i uczenie się zbiorów danych. Silnik TensorFlow Lite for Microcontrollers może pracować na 512kB pamięci flash w modelu ATSAMD51J19A, natomiast zbiory danych do nauki można regularnie aktualizować i ulepszać. Zbiory danych do nauki można przechowywać w zewnętrznej pamięci flash QSPI lub EEPROM QSPI. W zależności od konfiguracji sieci, można je aktualizować zdalnie przez sieć. Jednak w przypadku niektórych systemów wygodniejsza może być fizyczna wymiana karty pamięci na inną, która posiada ulepszony zbiór danych do nauki. W tej konfiguracji deweloper musi zdecydować, czy system powinien być zaprojektowany pod kątem możliwości przełączania karty pamięci podczas pracy, czy też wymaga wyłączenia węzła IoT.

Jeśli rozmiar węzła IoT jest bardzo ograniczony, to zamiast korzystać z pamięci zewnętrznej, korzystne byłoby umieszczenie w pamięci mikrokontrolera jak największej części aplikacji. Układ ATSAMD51J20A-AFT firmy Microchip Technology jest podobny do układu ATSAMD51J19A i jest z nim zgodny pod względem wtyków, z tą różnicą, że posiada pamięć flash 1MB i 256kB pamięci SRAM, co zapewnia większą pamięć masową w układzie scalonym na potrzeby uczenia się zbiorów danych.

Prace rozwojowe z użyciem zestawu TensorFlow Lite for Microcontrollers

Firma Adafruit Industries wspiera prace rozwojowe z użyciem urządzenia ATSAMD51J19A za pomocą zestawu rozwojowego TensorFlow Lite for Microcontrollers 4317 (ilustracja 2). Płytka posiada 2MB pamięci flash QSPI, które mogą być wykorzystane do przechowywania zbiorów danych do nauki. W zestawie znajduje się gniazdo mikrofonowe do rozpoznawania dźwięku w ramach uczenia maszynowego (ML). 1,8-calowy, kolorowy wyświetlacz LCD 160 x 128 TFT może być używany do prac rozwojowych i debugowania. Wyświetlacz może być również używany do demonstracji rozpoznawania głosu, gdy zestaw TensorFlow Lite for Microcontrollers jest używany ze zbiorem danych do nauki rozpoznawania głosu. W trakcie rozpoznawania różnych słów przez aplikację, mogą one być wyświetlane na ekranie.

Zestaw firmy Adafruit Industries posiada również osiem przycisków, trzyosiowy przyspieszeniomierz, czujnik światła, mini głośnik i baterię litowo-polimerową. Port USB 2.0 układu ATSAMD51J19A jest wyprowadzony na złącze służące do ładowania baterii, debugowania i programowania.

Wygląd zestawu TensorFlow Lite for Microcontrollers 4317 firmy Adafruit IndustriesIlustracja 2: zestaw rozwojowy TensorFlow Lite for Microcontrollers 4317 firmy Adafruit Industries jest wyposażony w kolorowy wyświetlacz TFT LCD do prac rozwojowych, który może wyświetlać wyniki operacji uczenia maszynowego (ML). (Źródło ilustracji: Adafruit Industries)

Zestaw firmy Adafruit jest dostarczany z najnowszą wersją silnika TensorFlow Lite for Microcontrollers. Zbiory danych do nauki można wczytywać za pomocą portu USB do pamięci flash mikrokontrolera ATSAMD51J19A o pojemności 512KB lub do zewnętrznej pamięci QSPI o pojemności 2MB.

Do oceny rozpoznawania obrazu, do płytki rozwojowej można wczytać zestaw do nauki wykrywania obiektów biblioteki TensorFlow. Płytka rozwojowa posiada porty do podłączania portów równoległych i szeregowych mikrokontrolera, z których wiele można wykorzystać do podłączenia zewnętrznej kamery. Po załadowaniu zestawu do nauki wykrywania obiektów do mikrokontrolera, wyświetlacz LCD może być używany do wyświetlania wyników przetwarzania uczenia maszynowego (ML) wykrywania obiektów. Jeśli więc rozpozna banana, wyświetlacz TFT może wyświetlać rozpoznane obiekty wraz z procentem ufności. Przykładowe wyniki mogą być wyświetlane jako:

Banan: 95%
Klucz nastawny: 12%
Okulary: 8%
Grzebień: 2%

Podczas prac rozwojowych nad aplikacjami wykrywania obiektów w Internecie rzeczy (IoT ), może to przyspieszyć prace rozwoje i pomóc w diagnozowaniu nieprawidłowych wyników wykrywania.

Podsumowanie

Uczenie maszynowe (ML) to rozwijająca się dziedzina, która wymaga specjalistycznych umiejętności przy opracowywaniu silników i modeli mikrokontrolerów od zera oraz ich skutecznym wdrażaniu w urządzeniach brzegowych. Jednak wykorzystanie istniejącej biblioteki kodów, takiej jak TensorFlow Lite for Microcontrollers na niedrogich, wysokowydajnych mikrokontrolerach lub płytkach rozwojowych, pozwala zaoszczędzić czas i pieniądze. W efekcie uzyskuje się wysokowydajny system uczenia maszynowego (ML), który można stosować do szybkiego, niezawodnego i wydajnego wykrywania obiektów w ramach węzła IoT.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Informacje o autorze

Image of Bill Giovino

Bill Giovino

Bill Giovino is an Electronics Engineer with a BSEE from Syracuse University, and is one of the few people to successfully jump from design engineer, to field applications engineer, to technology marketing.

For over 25 years Bill has enjoyed promoting new technologies in front of technical and non-technical audiences alike for many companies including STMicroelectronics, Intel, and Maxim Integrated. While at STMicroelectronics, Bill helped spearhead the company’s early successes in the microcontroller industry. At Infineon Bill orchestrated the company’s first microcontroller design wins in U.S. automotive. As a marketing consultant for his company CPU Technologies, Bill has helped many companies turn underperforming products into success stories.

Bill was an early adopter of the Internet of Things, including putting the first full TCP/IP stack on a microcontroller. Bill is devoted to the message of “Sales Through Education” and the increasing importance of clear, well written communications in promoting products online. He is moderator of the popular LinkedIn Semiconductor Sales & Marketing Group and speaks B2E fluently.

Informacje o wydawcy

Północnoamerykańscy redaktorzy DigiKey