Kuptoni bibliotekën C++, kuptoni bibliotekën C++

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.

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 Worldgen/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 .