LiteRT dla mikrokontrolerów służy do uruchamiania modeli systemów uczących się na mikrokontrolerach i innych urządzeniach, które mają zaledwie kilka kilobajtów pamięci. podstawowe środowisko wykonawcze mieści się w porcie Arm Cortex M3 o wielkości 16 KB i może działać modeli ML. Nie wymaga obsługi systemu operacyjnego ani standardowych języków C lub C++ biblioteki i dynamiczną alokację pamięci.
Dlaczego mikrokontrolery są ważne
Mikrokontrolery to zwykle małe urządzenia o małej mocy obliczeniowej, w sprzęcie, który wymaga podstawowych obliczeń. Przy użyciu komputera przy użyciu maleńkich mikrokontrolerów, możemy zwiększyć inteligencję miliardów używanych przez nas w życiu codziennym, np. sprzętu AGD czy internetu Urządzenia – bez drogiego sprzętu i niezawodnego internetu. które często podlegają ograniczeniom przepustowości i mocy, wiąże się z dużym czasem oczekiwania. Może to też pomóc chronić prywatność, ponieważ żadne dane opuszcza urządzenie. Wyobraź sobie inteligentne urządzenia, które mogą dostosować się do codziennych rutynowych, inteligentnych czujników przemysłowych, które rozumieją różnicę między problemy i normalne działanie, a także magiczne zabawki, które pomogą dzieciom w nauce przez zabawę. i ciekawe sposoby.
Obsługiwane platformy
LiteRT dla mikrokontrolerów jest napisane w C++ 17 i wymaga 32-bitowego kodu platformy. Została gruntownie przetestowana z wieloma procesorami opartymi na Seria Arm Cortex-M architektury i została przeniesiona do innych architektur, ESP32. platforma jest dostępna jako biblioteka Arduino. Może też generować projekty na potrzeby takich jak Mbed. Jest to rozwiązanie typu open source, dowolny projekt w C++ 17.
Obsługiwane są te płyty deweloperskie:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Zestaw STM32F746 Discovery
- Plakietka Adafruit EdgeBadge
- Zestaw Adafruit LiteRT do mikrokontrolerów
- Obwód Adafruit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Terminal Wio: ATSAMD51
- Himax WE-I Plus EVB Endpoint AI Development Board
- Platforma dla programistów Synopsys DesignWare ARC EM
- Sony Spresense
Zapoznaj się z przykładami
Każda przykładowa aplikacja jest włączona
GitHub
i ma plik README.md
, który wyjaśnia, w jaki sposób można go wdrożyć w obsługiwanym środowisku
platform. Niektóre z nich zawierają też kompleksowe samouczki dotyczące
platformy, zgodnie z poniższym opisem:
- Hello World (Witaj, świecie) Przedstawia absolutne podstawy korzystania z LiteRT w Mikrokontrolery
- Mowa mikro– Nagrywa dźwięk za pomocą mikrofonu w celu wykrycia słowa „tak” i „nie”
- Wykrywanie osób - Rejestruje dane z kamery za pomocą czujnika obrazu w celu wykrywania obecności lub nieobecności osoby
Przepływ pracy
Do wdrożenia i uruchomienia modelu TensorFlow w mikrokontroler:
- Wytrenuj model:
- Wygeneruj mały model TensorFlow, który pasuje do urządzenia docelowego zawiera obsługiwane operacje.
- Przekonwertuj na model LiteRT za pomocą Konwerter LiteRT
- Przekonwertuj na tablicę bajtową za pomocą standardowych narzędzi do przechowywania pamięci programu tylko do odczytu.
- Uruchom wnioskowanie na urządzeniu za pomocą biblioteki C++ i procesu. wyniki.
Ograniczenia
LiteRT dla mikrokontrolerów został zaprojektowany z myślą o konkretnych ograniczeniach w projektowaniu mikrokontrolerów. Jeśli pracujesz na wydajniejszych urządzeniach (na przykład np. wbudowanego urządzenia z systemem Linux, takiego jak Raspberry Pi), standardem Integracja platformy LiteRT może być łatwiejsza.
Należy wziąć pod uwagę następujące ograniczenia:
- Obsługa ograniczonej części: Operacje na TensorFlow
- Obsługa ograniczonej liczby urządzeń
- Niski poziom interfejsu API C++ wymagający ręcznego zarządzania pamięcią
- Trenowanie na urządzeniu nie jest obsługiwane
Dalsze kroki
- Wypróbuj mikrokontrolery, aby wypróbować przykładową aplikację i nauczyć się korzystania z interfejsu API.
- Zapoznaj się z biblioteką C++, aby dowiedzieć się, jak korzystać z niej w do swojego własnego projektu.
- Tworzenie i konwertowanie modeli, z których dowiesz się więcej o trenowaniu oraz konwertowanie modeli do wdrożenia na mikrokontrolerach.