Biblioteka LiteRT dla mikrokontrolerów w języku C++ jest częścią Repozytorium TensorFlow. Została zaprojektowana z myślą o czytelności, łatwej modyfikacji, sprawdzonych i integracjach, i zgodne ze zwykłym LiteRT.
W tym dokumencie opisano podstawową strukturę biblioteki C++ oraz zawiera informacje na temat tworzenia własnego projektu.
Struktura pliku
micro
katalog główny ma stosunkowo prostą strukturę. Znajduje się ona jednak
w obszernym repozytorium TensorFlow, stworzyliśmy skrypty
wstępnie wygenerowane pliki projektu, które dostarczają oddzielnie odpowiednie pliki źródłowe
w różnych osadzonych środowiskach programistycznych.
Pliki kluczy
Najważniejsze pliki związane z korzystaniem z LiteRT dla mikrokontrolerów Tłumacz znajduje się w głównej części projektu i towarzyszy mu testy:
[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.
micro_error_reporter.h
zwraca dane debugowania.micro_interpreter.h
zawiera kod do obsługi i uruchamiania modeli.
Zobacz artykuł Pierwsze kroki z mikrokontrolerami, i przewodnika po typowym wykorzystaniu.
System kompilacji pozwala na implementacje na określonych platformach
. Znajdziesz je w katalogu o nazwie platformy, np.
cortex-m
Istnieje kilka innych katalogów, takich jak:
kernel
, który zawiera implementacje operacji i powiązany kod.tools
, który zawiera narzędzia do kompilacji i ich dane wyjściowe.examples
, który zawiera przykładowy kod.
Rozpocznij nowy projekt
Zalecamy użycie przykładu Hello World jako szablonu dla nowych projektów. Ty możesz pobrać jej wersję na wybraną platformę, postępując zgodnie z podane w tej sekcji.
Korzystanie z biblioteki Arduino
Jeśli używasz Arduino, w parametrze Hello World znajdziesz
Arduino_TensorFlowLite
bibliotekę Arduino, którą możesz zainstalować ręcznie w
Arduino IDE oraz Arduino Create.
Po dodaniu biblioteki otwórz File -> Examples
. Powinno być widoczne
przykład u dołu listy o nazwie TensorFlowLite:hello_world
. Wybierz
go i kliknij hello_world
, aby wczytać przykład. Następnie możesz zapisać kopię raportu
i użyć ich jako podstawy
do stworzenia własnego projektu.
Generowanie projektów dla innych platform
LiteRT dla mikrokontrolerów umożliwia generowanie samodzielnych projektów
które zawierają wszystkie niezbędne pliki źródłowe, używając parametru Makefile
. Aktualna
obsługiwane środowiska to Keil, Make i Mbed.
Aby wygenerować te projekty za pomocą narzędzia Twórz, skopiuj Repozytorium TensorFlow/tflite-micro i uruchom to polecenie:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Zajmie to tylko kilka minut, ponieważ musi pobrać kilka dużych łańcuchów narzędzi
zależności. Po jego zakończeniu powinny pojawić się utworzone foldery.
wewnątrz ścieżki, takiej jak gen/linux_x86_64/prj/
(parametr
dokładna ścieżka zależy od systemu operacyjnego hosta). Foldery te zawierają
wygenerowanych przez AI plików projektów i plików źródłowych.
Po uruchomieniu tego polecenia znajdziesz projekty Hello World w
gen/linux_x86_64/prj/hello_world
Dla:
np. hello_world/keil
będzie zawierać projekt Keil.
Przeprowadzanie testów
Aby skompilować bibliotekę i przeprowadzić wszystkie jej testy jednostkowe, użyj tego polecenia:
make -f tensorflow/lite/micro/tools/make/Makefile test
Aby uruchomić pojedynczy test, użyj tego polecenia, zastępując <test_name>
nazwą testu:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Nazwy testów znajdziesz w pliku Makefiles. Przykład:
examples/hello_world/Makefile.inc
określa nazwy testowe dla funkcji Hello
Przykład ze świata.
Twórz pliki binarne
Aby utworzyć uruchomiony plik binarny dla danego projektu (np. przykładowej aplikacji):
użyj następującego polecenia, zastępując <project_name>
wybranym projektem
do stworzenia:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Na przykład poniższe polecenie utworzy plik binarny dla serwera Hello World aplikacja:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Domyślnie projekt zostanie skompilowany pod kątem systemu operacyjnego hosta. Do
określić inną architekturę docelową, użyj TARGET=
i TARGET_ARCH=
.
poniżej pokazujemy, jak utworzyć przykładową aplikację Hello World dla wersji ogólnej
Cortex-m0:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Po określeniu miejsca docelowego wszystkie dostępne pliki źródłowe
zostanie użyty w miejsce oryginalnego kodu. Na przykład podkatalog
examples/hello_world/cortex_m_generic
zawiera implementacje SparkFun Edge
z plików constants.cc
i output_handler.cc
, które będą używane, gdy
Określono wartość docelową cortex_m_generic
.
Nazwy projektów znajdziesz w pliku Makefiles. Przykład:
examples/hello_world/Makefile.inc
określa nazwy binarne elementu Hello
Przykład ze świata.
Zoptymalizowane jądra
Jądro referencyjne w katalogu głównym tensorflow/lite/micro/kernels
to
wdrożone w czystym języku C/C++ i nie zawierają sprzętu związanego z platformą
i optymalizacji.
Zoptymalizowane wersje jądra są dostarczane w podkatalogach. Przykład:
kernels/cmsis-nn
zawiera kilka zoptymalizowanych jąder, które korzystają z procesora Arm
Biblioteka CMSIS-NN.
Aby wygenerować projekty przy użyciu zoptymalizowanych jąder, użyj tego polecenia:
, zastępując <subdirectory_name>
nazwą podkatalogu zawierającego dyrektywę
optymalizacje:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Możesz dodać własne optymalizacje, tworząc dla nich nowy podfolder. Śr zachęcać do stosowania żądań pull do nowych zoptymalizowanych implementacji.
Generowanie biblioteki Arduino
Jeśli musisz wygenerować nową kompilację biblioteki, możesz uruchomić następujące polecenia z repozytorium TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
Powstałą bibliotekę znajdziesz w
gen/arduino_x86_64/prj/tensorflow_lite.zip
Przenoszenie na nowe urządzenia
Wskazówki dotyczące przenoszenia mikrokontrolerów LiteRT na nowe platformy
urządzenia można znaleźć w
micro/docs/new_platform_support.md