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 TensorFlow Lite standard.
Il seguente documento illustra la struttura di base della libreria C++ e fornisce informazioni sulla creazione del tuo progetto.
Struttura dei file
La directory principale micro
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 di TensorFlow Lite for Microcontrollers si trovano nella directory principale del progetto, accompagnati da 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
genera informazioni di debug.micro_interpreter.h
contiene codice per gestire ed eseguire i modelli.
Consulta la guida introduttiva ai microcontroller per una panoramica dell'utilizzo tipico.
Il sistema di compilazione fornisce implementazioni specifiche per piattaforma di determinati file. 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. Puoi ottenerne una versione per la piattaforma scelta seguendo le istruzioni in questa sezione.
Utilizzare la libreria Arduino
Se utilizzi Arduino, l'esempio Hello World è incluso nella libreria Arduino Arduino_TensorFlowLite
, che puoi installare manualmente nell'IDE Arduino e in Arduino Create.
Una volta aggiunta la raccolta, vai su File -> Examples
. Dovresti vedere un esempio nella parte inferiore dell'elenco denominato TensorFlowLite:hello_world
. Selezionala e fai clic su hello_world
per caricare l'esempio. Puoi quindi salvare una copia dell'esempio
e utilizzarlo come base del tuo progetto.
Genera progetti per altre piattaforme
TensorFlow Lite for Microcontrollers è in grado di generare progetti autonomi che contengono tutti i file di origine necessari, utilizzando un Makefile
. Gli attuali ambienti supportati sono Keil, Make e Mbed.
Per generare questi progetti con Make, clona il repository/tflite-micro ed esegui questo comando:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Questa operazione richiede alcuni minuti, poiché deve scaricare alcune toolchain di grandi dimensioni per le dipendenze. Al termine, dovresti vedere alcune cartelle create all'interno di un percorso come gen/linux_x86_64/prj/
(il percorso esatto dipende dal sistema operativo host). Queste cartelle contengono i file di progetto e di origine generati.
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 test delle unità, utilizza il seguente comando:
make -f tensorflow/lite/micro/tools/make/Makefile test
Per eseguire un singolo test, utilizza 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 Makefile del progetto. Ad esempio,
examples/hello_world/Makefile.inc
specifica i nomi del test per l'esempio Hello
World.
Crea programmi binari
Per creare un programma binario eseguibile per un determinato progetto (ad esempio un'applicazione di esempio), utilizza il comando seguente, sostituendo <project_name>
con il progetto che vuoi creare:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Ad esempio, il seguente comando creerà un programma 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, utilizza TARGET=
e TARGET_ARCH=
. L'esempio seguente mostra come creare l'esempio Hello World per una cortex-m0 generica:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Quando si specifica una destinazione, vengono utilizzati tutti i file di origine specifici per la destinazione disponibili al posto del codice originale. Ad esempio, la sottodirectory examples/hello_world/cortex_m_generic
contiene le implementazioni SparkFun Edge dei file constants.cc
e output_handler.cc
, che verranno utilizzate quando viene specificato il valore cortex_m_generic
di destinazione.
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 directory radice di tensorflow/lite/micro/kernels
sono implementati in C/C++ puro e non includono ottimizzazioni dell'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, usa 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 ottimizzazioni creando una nuova sottocartella. Incoraggiamo le richieste di pull per nuove implementazioni ottimizzate.
Genera la libreria Arduino
Se devi generare una nuova build della libreria, puoi eseguire lo script seguente dal repository TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
La libreria risultante è disponibile in gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Porta su nuovi dispositivi
Consulta le istruzioni sul trasferimento di TensorFlow Lite per microcontroller su nuove piattaforme e
dispositivi in
micro/docs/new_platform_support.md
.