Model TensorFlow Lite dla mikrokontrolerów został opracowany z myślą o uruchamianiu modeli systemów uczących się w mikrokontrolerach i innych urządzeniach, które mają zaledwie kilka kilobajtów pamięci. Podstawowe środowisko wykonawcze mieści się w 16 KB na urządzeniu Arm Cortex M3 i może działać z wieloma modelami podstawowymi. Nie wymaga obsługi systemu operacyjnego, standardowych bibliotek C ani C++ ani dynamicznej alokacji pamięci.
Dlaczego mikrokontrolery są ważne
Mikrokontrolery to zwykle niewielkie urządzenia komputerowe o małej mocy, które są wbudowane w sprzęt, który wymaga podstawowych obliczeń. Udostępniając systemy uczące się w małych mikrokontrolerach, możemy zwiększyć inteligencję miliardów urządzeń, których używamy w życiu codziennym, w tym urządzeń AGD i urządzeń z dostępem do internetu. Nie musimy polegać na kosztownym sprzęcie ani niezawodnym połączeniu internetowym, które często podlega ograniczeniom przepustowości i zasilania, co skutkuje dużymi opóźnieniami. Może to też pomóc chronić prywatność, ponieważ żadne dane nie opuszczają urządzenia. Wyobraź sobie inteligentne urządzenia, które dostosowują się do codziennej rutyny, inteligentne czujniki przemysłowe, które rozumieją różnicę między problemami a normalnym działaniem, oraz magiczne zabawki, które pomagają dzieciom uczyć się przez zabawę i zabawę.
Obsługiwane platformy
Platforma TensorFlow Lite dla mikrokontrolerów jest napisana w języku C++ 17 i wymaga 32-bitowej platformy. Został on dokładnie przetestowany z wykorzystaniem wielu procesorów opartych na architekturze Arm Cortex-M Series i został przystosowany do innych architektur, w tym do ESP32. Platforma jest dostępna jako biblioteka Arduino. Może też generować projekty na potrzeby środowisk programistycznych, takich jak Mbed. Jest to oprogramowanie open source, które można umieścić w dowolnym projekcie C++17.
Obsługiwane są te platformy programistyczne:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Zestaw STM32F746 Discovery
- Adafruit EdgeBadge
- Zestaw Adafruit TensorFlow Lite dla mikrokontrolerów
- Adafruit Circuit Playground BlueFuit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Terminal Wio: ATSAMD51
- Zespół Himax WE-I Plus EVB Endpoint AI Development Board
- Platforma Synopsys DesignWare ARC EM do tworzenia oprogramowania
- Sony Spresense
Zapoznaj się z przykładami
Każda przykładowa aplikacja znajduje się w GitHub i zawiera plik README.md
, który wyjaśnia, jak można ją wdrożyć na obsługiwanych platformach. W niektórych przykładach znajdziesz też kompleksowe samouczki dotyczące konkretnej platformy:
- Hello World: przedstawia absolutne podstawy korzystania z TensorFlow Lite dla mikrokontrolerów
- Mikromowa – rejestruje dźwięk za pomocą mikrofonu, aby wykrywać słowa „tak” i „nie”.
- Wykrywanie osób – rejestruje dane z kamery za pomocą czujnika obrazu, aby wykryć obecność lub nieobecność osoby.
Przepływ pracy
Aby wdrożyć i uruchomić model TensorFlow na mikrokontrolerze, wykonaj te czynności:
- Wytrenuj model:
- Wygeneruj mały model TensorFlow, który będzie pasował do urządzenia docelowego i zawiera obsługiwane operacje.
- Przekonwertuj model TensorFlow Lite za pomocą konwertera TensorFlow Lite.
- Przekonwertuj dane na tablicę typu C przy użyciu standardowych narzędzi, aby zapisać ją w pamięci programu na urządzeniu tylko do odczytu.
- Przeprowadź wnioskowanie na urządzeniu za pomocą biblioteki C++ i przetwórz wyniki.
Ograniczenia
Interfejs TensorFlow Lite dla mikrokontrolerów został zaprojektowany z myślą o specyficznych ograniczeniach związanych z programowaniem mikrokontrolerów. Jeśli pracujesz na bardziej wydajnych urządzeniach (np. na osadzonym urządzeniu z systemem Linux, takim jak Raspberry Pi), łatwiejsza może być integracja ze standardową platformą TensorFlow Lite.
Weź pod uwagę te ograniczenia:
- obsługę ograniczonego podzbioru operacji TensorFlow,
- Obsługa ograniczonej liczby urządzeń
- Interfejs API C++ niskiego poziomu wymagający ręcznego zarządzania pamięcią
- Trenowanie na urządzeniu nie jest obsługiwane
Dalsze kroki
- Zacznij korzystać z mikrokontrolerów, aby wypróbować przykładową aplikację i dowiedzieć się, jak korzystać z interfejsu API.
- Poznaj bibliotekę C++, aby dowiedzieć się, jak używać jej we własnym projekcie.
- Twórz i przekonwertuj modele, aby dowiedzieć się więcej o trenowaniu i konwertowaniu modeli na potrzeby wdrożenia w mikrokontrolerach.