Biblioteka LiteRT për mikrokontrolluesit C++ është pjesë e depove TensorFlow . Është projektuar që të jetë i lexueshëm, i lehtë për t'u modifikuar, i testuar mirë, i lehtë për t'u integruar dhe i pajtueshëm me LiteRT të rregullt.
Dokumenti i mëposhtëm përshkruan strukturën bazë të bibliotekës C++ dhe ofron informacion rreth krijimit të projektit tuaj.
Struktura e skedarit
Drejtoria micro
rrënjë ka një strukturë relativisht të thjeshtë. Megjithatë, duke qenë se ndodhet brenda depove të gjera TensorFlow, ne kemi krijuar skriptet dhe skedarët e projektit të krijuar paraprakisht që ofrojnë skedarët burimor përkatës të veçuar brenda mjediseve të ndryshme të ngulitura të zhvillimit.
Skedarët kyç
Skedarët më të rëndësishëm për përdorimin e përkthyesit LiteRT për Mikrokontrolluesit ndodhen në rrënjën e projektit, të shoqëruar me teste:
[`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
nxjerr informacionin e korrigjimit. -
micro_interpreter.h
përmban kod për të trajtuar dhe ekzekutuar modelet.
Shikoni Fillimi me mikrokontrolluesit për një përshkrim të përdorimit tipik.
Sistemi i ndërtimit ofron zbatime specifike për platformën e skedarëve të caktuar. Këto janë të vendosura në një direktori me emrin e platformës, për shembull cortex-m
.
Ekzistojnë disa drejtori të tjera, duke përfshirë:
-
kernel
, i cili përmban implementime operacionesh dhe kodin e lidhur. -
tools
, e cila përmban veglat e ndërtimit dhe daljen e tyre. -
examples
, i cili përmban kodin e mostrës.
Filloni një projekt të ri
Ne rekomandojmë përdorimin e shembullit Hello World si një model për projekte të reja. Ju mund të merrni një version të tij për platformën tuaj të zgjedhur duke ndjekur udhëzimet në këtë seksion.
Përdorni bibliotekën Arduino
Nëse jeni duke përdorur Arduino, shembulli Hello World përfshihet në bibliotekën Arduino_TensorFlowLite
Arduino, të cilën mund ta instaloni manualisht në Arduino IDE dhe në Arduino Create .
Pasi të jetë shtuar biblioteka, shkoni te File -> Examples
. Ju duhet të shihni një shembull afër fundit të listës me emrin TensorFlowLite:hello_world
. Zgjidhni atë dhe klikoni hello_world
për të ngarkuar shembullin. Më pas mund të ruani një kopje të shembullit dhe ta përdorni si bazë të projektit tuaj.
Gjeneroni projekte për platforma të tjera
LiteRT për Mikrokontrolluesit është në gjendje të gjenerojë projekte të pavarura që përmbajnë të gjithë skedarët e nevojshëm burimor, duke përdorur një Makefile
. Mjediset aktuale të mbështetura janë Keil, Make dhe Mbed.
Për të gjeneruar këto projekte me Make, klononi depo TensorFlow/tflite-micro dhe ekzekutoni komandën e mëposhtme:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Kjo do të marrë disa minuta, pasi duhet të shkarkojë disa zinxhirë të mëdhenj mjetesh për varësitë. Pasi të ketë mbaruar, duhet të shihni disa dosje të krijuara brenda një shteg si gen/linux_x86_64/prj/
(shtegu i saktë varet nga sistemi juaj operativ pritës). Këto dosje përmbajnë projektin e krijuar dhe skedarët burim.
Pas ekzekutimit të komandës, do të mund të gjeni projektet Hello World në gen/linux_x86_64/prj/hello_world
. Për shembull, hello_world/keil
do të përmbajë projektin Keil.
Kryeni testet
Për të ndërtuar bibliotekën dhe për të ekzekutuar të gjitha testet e njësisë së saj, përdorni komandën e mëposhtme:
make -f tensorflow/lite/micro/tools/make/Makefile test
Për të ekzekutuar një test individual, përdorni komandën e mëposhtme, duke zëvendësuar <test_name>
me emrin e testit:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Emrat e testit mund t'i gjeni në Makefiles të projektit. Për shembull, examples/hello_world/Makefile.inc
specifikon emrat e testit për shembullin Hello World .
Ndërtoni binare
Për të ndërtuar një binar të ekzekutueshëm për një projekt të caktuar (si shembull një aplikacion), përdorni komandën e mëposhtme, duke zëvendësuar <project_name>
me projektin që dëshironi të ndërtoni:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Për shembull, komanda e mëposhtme do të ndërtojë një binar për aplikacionin Hello World :
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Si parazgjedhje, projekti do të përpilohet për sistemin operativ pritës. Për të specifikuar një arkitekturë tjetër të synuar, përdorni TARGET=
dhe TARGET_ARCH=
. Shembulli i mëposhtëm tregon se si të ndërtohet shembulli Hello World për një korteks gjenerik-m0:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Kur specifikohet një objektiv, çdo skedar burimi i disponueshëm specifik për objektivin do të përdoret në vend të kodit origjinal. Për shembull, nëndirektoria examples/hello_world/cortex_m_generic
përmban implementime SparkFun Edge të skedarëve constants.cc
dhe output_handler.cc
, të cilat do të përdoren kur të specifikohet objektivi cortex_m_generic
.
Emrat e projekteve mund t'i gjeni në Makefiles të projektit. Për shembull, examples/hello_world/Makefile.inc
specifikon emrat binar për shembullin Hello World .
Kernelet e optimizuara
Kernelet e referencës në rrënjën e tensorflow/lite/micro/kernels
zbatohen në C/C++ të pastër dhe nuk përfshijnë optimizime harduerike specifike për platformën.
Versionet e optimizuara të kernelit ofrohen në nëndrejtori. Për shembull, kernels/cmsis-nn
përmban disa kernele të optimizuara që përdorin bibliotekën CMSIS-NN të Armit.
Për të gjeneruar projekte duke përdorur kernel të optimizuar, përdorni komandën e mëposhtme, duke zëvendësuar <subdirectory_name>
me emrin e nëndirektorisë që përmban optimizimet:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Mund të shtoni optimizimet tuaja duke krijuar një nënfolder të ri për to. Ne inkurajojmë kërkesat tërheqëse për implementime të reja të optimizuara.
Krijo bibliotekën Arduino
Nëse keni nevojë të krijoni një ndërtim të ri të bibliotekës, mund të ekzekutoni skriptin e mëposhtëm nga depoja TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
Biblioteka që rezulton mund të gjendet në gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Porta në pajisje të reja
Udhëzimet për transferimin e LiteRT për mikrokontrolluesit në platforma dhe pajisje të reja mund të gjenden në micro/docs/new_platform_support.md
.