TensorFlow Lite for Microcontrollers jest przeznaczony do uruchamiania modeli uczenia maszynowego na mikrokontrolerach i innych urządzeniach z zaledwie kilkoma kilobajtami pamięci. Podstawowe środowisko wykonawcze mieści się w 16 KB na Arm Cortex M3 i może obsługiwać wiele podstawowych modeli. Nie wymaga obsługi systemu operacyjnego, żadnych standardowych bibliotek C lub C++ ani dynamicznej alokacji pamięci.
Dlaczego mikrokontrolery są ważne
Mikrokontrolery to zazwyczaj małe urządzenia komputerowe o niskim poborze mocy, które są wbudowane w sprzęt wymagający podstawowych obliczeń. Wprowadzając uczenie maszynowe do małych mikrokontrolerów, możemy zwiększyć inteligencję miliardów urządzeń, z których korzystamy w naszym życiu, w tym urządzeń gospodarstwa domowego i urządzeń Internetu rzeczy, bez polegania na drogim sprzęcie lub niezawodnych połączeniach internetowych, które często zależą od przepustowości i ograniczenia mocy i skutkuje dużymi opóźnieniami. Może to również pomóc w zachowaniu prywatności, ponieważ żadne dane nie opuszczają urządzenia. Wyobraź sobie inteligentne urządzenia, które mogą dostosować się do Twojej codziennej rutyny, inteligentne czujniki przemysłowe, które rozumieją różnicę między problemami a normalnym działaniem, oraz magiczne zabawki, które mogą pomóc dzieciom uczyć się w zabawny i zachwycający sposób.
Obsługiwane platformy
TensorFlow Lite for Microcontrollers jest napisany w C++ 17 i wymaga platformy 32-bitowej. Został szeroko przetestowany z wieloma procesorami opartymi na architekturze Arm Cortex-M Series i został przeniesiony na inne architektury, w tym ESP32 . Framework jest dostępny jako biblioteka Arduino. Może również generować projekty dla środowisk programistycznych, takich jak Mbed. Jest to oprogramowanie typu open source i można je włączyć do dowolnego projektu C++ 17.
Obsługiwane są następujące płyty rozwojowe:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Zestaw wykrywający STM32F746
- Odznaka Adafruit Edge
- Zestaw Adafruit TensorFlow Lite do mikrokontrolerów
- Bluefruitowy plac zabaw Adafruit Circuit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Terminal Wio: ATSAMD51
- Płyta rozwojowa Himax WE-I Plus EVB Endpoint AI
- Platforma programistyczna Synopsys DesignWare ARC EM
- Sony Spresense
Zapoznaj się z przykładami
Każda przykładowa aplikacja znajduje się w serwisie Github i zawiera plik README.md
wyjaśniający, w jaki sposób można ją wdrożyć na obsługiwanych platformach. Niektóre przykłady zawierają również kompleksowe samouczki korzystające z określonej platformy, jak podano poniżej:
- Hello World — demonstruje absolutne podstawy korzystania z TensorFlow Lite dla mikrokontrolerów
- Mikro mowa — przechwytuje dźwięk za pomocą mikrofonu, aby wykryć słowa „tak” i „nie”
- Wykrywanie osób — przechwytuje dane z kamery za pomocą czujnika obrazu w celu wykrycia obecności lub nieobecności osoby
Przepływ pracy
Aby wdrożyć i uruchomić model TensorFlow na mikrokontrolerze, wymagane są następujące kroki:
- Trenuj model :
- Wygeneruj mały model TensorFlow , który pasuje do Twojego urządzenia docelowego i zawiera obsługiwane operacje .
- Konwersja do modelu TensorFlow Lite za pomocą konwertera TensorFlow Lite .
- Konwertuj na tablicę bajtów C za pomocą standardowych narzędzi , aby przechowywać ją w pamięci programu tylko do odczytu na urządzeniu.
- Uruchom wnioskowanie na urządzeniu przy użyciu biblioteki C++ i przetwórz wyniki.
Ograniczenia
TensorFlow Lite for Microcontrollers został zaprojektowany z myślą o specyficznych ograniczeniach związanych z rozwojem mikrokontrolerów. Jeśli pracujesz na potężniejszych urządzeniach (na przykład wbudowanym urządzeniu z systemem Linux, takim jak Raspberry Pi), standardowa platforma TensorFlow Lite może być łatwiejsza do zintegrowania.
Należy wziąć pod uwagę następujące ograniczenia:
- Obsługa ograniczonego podzbioru operacji TensorFlow
- Wsparcie dla ograniczonego zestawu urządzeń
- Interfejs API C++ niskiego poziomu wymagający ręcznego zarządzania pamięcią
- Szkolenie na urządzeniu nie jest obsługiwane
Następne kroki
- Rozpocznij pracę z mikrokontrolerami , aby wypróbować przykładową aplikację i dowiedzieć się, jak korzystać z interfejsu API.
- Zapoznaj się z biblioteką C++, aby dowiedzieć się, jak używać jej we własnym projekcie.
- Twórz i konwertuj modele , aby dowiedzieć się więcej o trenowaniu i konwertowaniu modeli do wdrożenia na mikrokontrolerach.