La libreria C++ TensorFlow Lite for Microcontrollers fa parte del repository TensorFlow . È progettato per essere leggibile, facile da modificare, ben testato, facile da integrare e compatibile con il normale TensorFlow Lite.
Il documento seguente delinea la struttura di base della libreria C++ e fornisce informazioni sulla creazione del proprio progetto.
Struttura dei file
La directory micro
root ha una struttura relativamente semplice. Tuttavia, poiché si trova all'interno dell'ampio repository TensorFlow, abbiamo creato script e file di progetto pregenerati che forniscono i file di origine pertinenti in isolamento all'interno di vari ambienti di sviluppo incorporati.
File chiave
I file più importanti per l'utilizzo dell'interprete TensorFlow Lite per microcontrollori si trovano nella radice del progetto, accompagnati da test:
-
all_ops_resolver.h
omicro_mutable_op_resolver.h
possono essere utilizzati per fornire le operazioni utilizzate dall'interprete per eseguire il modello. Poichéall_ops_resolver.h
ogni operazione disponibile, utilizza molta memoria. Nelle applicazioni di produzione, dovresti usaremicro_mutable_op_resolver.h
per inserire solo le operazioni necessarie al tuo modello. -
micro_error_reporter.h
restituisce informazioni di debug. -
micro_interpreter.h
contiene il codice per gestire ed eseguire i modelli.
Vedere Introduzione ai microcontrollori per una procedura dettagliata sull'utilizzo tipico.
Il sistema di build prevede implementazioni specifiche della piattaforma di determinati file. Questi si trovano in una directory con il nome della piattaforma, ad esempio sparkfun_edge
.
Esistono diverse altre directory, tra cui:
-
kernel
, che contiene le implementazioni delle operazioni e il codice associato. -
tools
, che contiene gli strumenti di compilazione e il relativo output. -
examples
, che contiene codice di esempio.
Inizia un nuovo progetto
Ti consigliamo di utilizzare l'esempio Hello World come modello per nuovi progetti. Puoi ottenerne una versione per la tua piattaforma preferita seguendo le istruzioni in questa sezione.
Usa la libreria Arduino
Se stai usando Arduino, l'esempio Hello World è incluso nella libreria Arduino_TensorFlowLite
Arduino, che puoi installare manualmente nell'IDE Arduino e in Arduino Create .
Una volta aggiunta la libreria, vai su File -> Examples
. Dovresti vedere un esempio nella parte inferiore dell'elenco chiamato TensorFlowLite:hello_world
. Selezionalo e fai clic su hello_world
per caricare l'esempio. È quindi possibile salvare una copia dell'esempio e utilizzarla come base del proprio progetto.
Genera progetti per altre piattaforme
TensorFlow Lite for Microcontrollers è in grado di generare progetti standalone che contengono tutti i file sorgente necessari, utilizzando un Makefile
. Gli ambienti attualmente supportati sono Keil, Make e Mbed.
Per generare questi progetti con Make, clonare il repository TensorFlow ed eseguire il comando seguente:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Ci vorranno alcuni minuti, dal momento che è necessario scaricare alcune grandi toolchain per le dipendenze. Una volta terminato, dovresti vedere alcune cartelle create all'interno di un percorso come gen/linux_x86_64/prj/
(il percorso esatto dipende dal tuo sistema operativo host). Queste cartelle contengono il progetto generato ei file di origine.
Dopo aver eseguito il comando, sarai in grado di trovare i progetti Hello World in gen/linux_x86_64/prj/hello_world
. Ad esempio, hello_world/keil
conterrà il progetto Keil.
Esegui i test
Per creare la libreria ed eseguire tutti i relativi unit test, utilizzare il comando seguente:
make -f tensorflow/lite/micro/tools/make/Makefile test
Per eseguire un singolo test, utilizzare il comando seguente, 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 Makefiles del progetto. Ad esempio, examples/hello_world/Makefile.inc
specifica i nomi dei test per l'esempio Hello World .
Costruisci binari
Per creare un binario eseguibile per un determinato progetto (come un'applicazione di esempio), utilizzare il comando seguente, sostituendo <project_name>
con il progetto che si desidera creare:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Ad esempio, il comando seguente creerà un binario per l'applicazione Hello World :
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Per impostazione predefinita, il progetto verrà compilato per il sistema operativo host. Per specificare un'architettura di destinazione diversa, utilizzare TARGET=
. L'esempio seguente mostra come creare l'esempio Hello World per SparkFun Edge:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge hello_world_bin
Quando viene specificata una destinazione, tutti i file di origine specifici della destinazione disponibili verranno utilizzati al posto del codice originale. Ad esempio, la sottodirectory examples/hello_world/sparkfun_edge
contiene le implementazioni SparkFun Edge dei file constants.cc
e output_handler.cc
, che verranno utilizzati quando viene specificato il target sparkfun_edge
.
Puoi trovare i nomi dei progetti nei Makefile del progetto. Ad esempio, examples/hello_world/Makefile.inc
specifica i nomi binari per l'esempio Hello World .
kernel ottimizzati
I kernel di riferimento nella radice di tensorflow/lite/micro/kernels
sono implementati in puro C/C++ e non includono ottimizzazioni hardware specifiche della piattaforma.
Le versioni ottimizzate dei kernel sono fornite nelle sottodirectory. Ad esempio, kernels/cmsis-nn
contiene diversi kernel ottimizzati che utilizzano la libreria CMSIS-NN di Arm.
Per generare progetti utilizzando kernel ottimizzati, utilizzare il comando seguente, sostituendo <subdirectory_name>
con il nome della sottodirectory contenente le ottimizzazioni:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Puoi aggiungere le tue ottimizzazioni creando una nuova sottocartella per loro. Incoraggiamo le richieste pull per nuove implementazioni ottimizzate.
Genera la libreria Arduino
Se è necessario generare una nuova build della libreria, è possibile eseguire il seguente script dal repository TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
La libreria risultante può essere trovata in gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Porta su nuovi dispositivi
Le istruzioni per il porting di TensorFlow Lite per microcontrollori su nuove piattaforme e dispositivi sono disponibili in micro/docs/new_platform_support.md
.