La libreria C++ LiteRT for Microcontrollers fa parte della serie Repository TensorFlow. È progettato per essere leggibile, facile da modificare, collaudato, facile da integrare ed è compatibile con i normali LiteRT.
Il seguente documento illustra la struttura di base della libreria C++ e fornisce informazioni sulla creazione di un progetto.
Struttura dei file
La
micro
ha una struttura relativamente semplice. Tuttavia, poiché si trova
all'interno dell'ampio repository TensorFlow, abbiamo creato script
file di progetto pregenerati che forniscono i file di origine pertinenti in isolamento
all'interno di vari ambienti di sviluppo incorporati.
File di chiavi
I file più importanti per l'utilizzo di LiteRT per microcontroller l'interprete si trova nella radice del progetto, insieme ai test:
[`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
restituisce le informazioni di debug.micro_interpreter.h
contiene il codice per gestire ed eseguire i modelli.
Consulta la Guida introduttiva all'utilizzo dei microcontroller per un procedura dettagliata dell'utilizzo tipico.
Il sistema di compilazione fornisce implementazioni specifiche per piattaforma di determinate
. Questi si trovano in una directory con il nome della piattaforma, ad esempio
cortex-m
Esistono molte altre directory, tra cui:
kernel
, che contiene le implementazioni delle operazioni e il codice associato.tools
, che contiene gli strumenti di creazione e il relativo output.examples
, che contiene il codice di esempio.
Avvia un nuovo progetto
Ti consigliamo di utilizzare l'esempio Hello World come modello per i nuovi progetti. Tu puoi ottenerne una versione per la piattaforma che preferisci seguendo le istruzioni in questa sezione.
Utilizzare la libreria Arduino
Se utilizzi Arduino, l'esempio Hello World è incluso nella
Arduino_TensorFlowLite
libreria Arduino, che puoi installare manualmente nel
nell'IDE di Arduino e in Arduino Create.
Una volta aggiunta la raccolta, vai a File -> Examples
. Dovresti vedere una
esempio in fondo all'elenco denominato TensorFlowLite:hello_world
. Seleziona
e fai clic su hello_world
per caricare l'esempio. Puoi quindi salvare una copia
di esempio e usarli come base per il tuo progetto.
Genera progetti per altre piattaforme
LiteRT per microcontroller è in grado di generare progetti autonomi
contenenti tutti i file di origine necessari, utilizzando un Makefile
. Lo stato attuale
gli ambienti supportati sono Keil, Make e Mbed.
Per generare questi progetti con Make, clona Repository TensorFlow/tflite-micro ed esegui questo comando:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Questa operazione richiederà alcuni minuti, dal momento che è necessario scaricare alcune grandi toolchain per
le dipendenze. Al termine, dovresti vedere alcune cartelle create
all'interno di un percorso come gen/linux_x86_64/prj/
(il
il percorso esatto dipende dal sistema operativo host). Queste cartelle contengono
di progetto e di origine generati.
Dopo aver eseguito il comando, potrai trovare i progetti Hello World in
gen/linux_x86_64/prj/hello_world
. Per
esempio, hello_world/keil
conterrà il progetto Keil.
Esegui i test
Per creare la libreria ed eseguire tutti i relativi test delle unità, usa il comando seguente:
make -f tensorflow/lite/micro/tools/make/Makefile test
Per eseguire un singolo test, utilizza il seguente comando, sostituendo <test_name>
con il nome del test:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Puoi trovare i nomi dei test nei Makefile del progetto. Ad esempio:
examples/hello_world/Makefile.inc
specifica i nomi dei test per Hello
Esempio a livello mondiale.
Creare file binari
Per creare un programma binario eseguibile per un determinato progetto (ad esempio un'applicazione di esempio),
utilizza il seguente comando, sostituendo <project_name>
con il progetto che preferisci
per creare:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Ad esempio, il seguente comando creerà un programma binario per Hello World. applicazione:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Per impostazione predefinita, il progetto verrà compilato per il sistema operativo host. A
specifica un'architettura di destinazione diversa, usa TARGET=
e TARGET_ARCH=
. La
l'esempio seguente mostra come creare l'esempio Hello World per una
cortex-m0:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Quando viene specificata una destinazione, tutti i file di origine disponibili specifici per la destinazione vengono
utilizzata al posto del codice originale. Ad esempio, la sottodirectory
examples/hello_world/cortex_m_generic
contiene implementazioni SparkFun Edge
dei file constants.cc
e output_handler.cc
, che verranno utilizzati quando
il target cortex_m_generic
è specificato.
Puoi trovare i nomi dei progetti nei Makefile del progetto. Ad esempio:
examples/hello_world/Makefile.inc
specifica i nomi binari per Hello
Esempio a livello mondiale.
Kernel ottimizzati
I kernel di riferimento nella radice di tensorflow/lite/micro/kernels
sono
implementati in C/C++ puro e non includono hardware specifico della piattaforma
ottimizzazioni.
Le versioni ottimizzate dei kernel sono fornite nelle sottodirectory. Ad esempio:
kernels/cmsis-nn
contiene diversi kernel ottimizzati che utilizzano i componenti
Libreria CMSIS-NN.
Per generare progetti utilizzando kernel ottimizzati, usa il comando seguente:
sostituendo <subdirectory_name>
con il nome della sottodirectory contenente il
ottimizzazioni:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Puoi aggiungere le ottimizzazioni creando una nuova sottocartella. Me incoraggiare le richieste di pull per le nuove implementazioni ottimizzate.
Genera la libreria Arduino
Se devi generare una nuova build della libreria, puoi eseguire questo dal repository TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
La libreria risultante può essere trovata
gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Trasferisci su nuovi dispositivi
Linee guida sulla portabilità di LiteRT per microcontroller su nuove piattaforme e
disponibili in
micro/docs/new_platform_support.md