Informazioni sulla libreria C++

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.

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.