Informazioni sulla libreria C++

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.

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