Memahami library C++

LiteRT for Microcontrollers C++ adalah bagian dari Repositori TensorFlow. Dirancang agar dapat dibaca, mudah dimodifikasi, teruji dengan baik, mudah diintegrasikan, dan kompatibel dengan LiteRT biasa.

Dokumen berikut menguraikan struktur dasar dari {i>library<i} C++ dan memberikan informasi tentang pembuatan proyek Anda sendiri.

Struktur file

Tujuan micro direktori {i>root <i}memiliki struktur yang relatif sederhana. Namun, karena terletak di dalam repositori TensorFlow yang luas, kami telah membuat skrip dan file project siap pakai yang menyediakan file sumber yang relevan secara terpisah dalam berbagai lingkungan pengembangan tersemat.

File kunci

File terpenting penggunaan LiteRT untuk Microcontroller terletak di root project, disertai dengan pengujian:

[`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.

Lihat Memulai mikrokontroler untuk panduan penggunaan umum.

Sistem pembangunan menyediakan untuk implementasi spesifik per platform dari . File ini berada di direktori dengan nama platform, misalnya cortex-m

Tersedia beberapa direktori lain, termasuk:

  • kernel, yang berisi implementasi operasi dan kode terkait.
  • tools, yang berisi alat build dan output-nya.
  • examples, yang berisi kode contoh.

Mulai project baru

Sebaiknya gunakan contoh Hello World sebagai template untuk project baru. Anda dapat memperoleh versi untuk platform pilihan Anda dengan mengikuti petunjuk di bagian ini.

Menggunakan library Arduino

Jika Anda menggunakan Arduino, contoh Hello World disertakan dalam Arduino_TensorFlowLite Library Arduino, yang dapat Anda instal secara manual di Arduino IDE dan di Arduino Create.

Setelah library ditambahkan, buka File -> Examples. Anda akan melihat contoh di dekat bagian bawah daftar bernama TensorFlowLite:hello_world. Pilih lalu klik hello_world untuk memuat contoh. Anda kemudian dapat menyimpan salinan contoh dan menggunakannya sebagai dasar proyek Anda sendiri.

Membuat project untuk platform lain

LiteRT untuk Microcontroller dapat membuat project mandiri yang berisi semua file sumber yang diperlukan, menggunakan Makefile. Saat ini yang didukung adalah Keil, Make, dan Mbed.

Untuk membuat project ini dengan Make, clone Repositori TensorFlow/tflite-micro dan jalankan perintah berikut:

make -f tensorflow/lite/micro/tools/make/Makefile generate_projects

Proses ini akan memakan waktu beberapa menit, karena ia harus mengunduh dependensi tersebut. Setelah selesai, Anda akan melihat beberapa folder dibuat di dalam jalur seperti gen/linux_x86_64/prj/ ( jalur persisnya bergantung pada sistem operasi host Anda). Folder-folder ini berisi file sumber dan proyek yang dihasilkan.

Setelah menjalankan perintah, Anda akan dapat menemukan project Hello World di gen/linux_x86_64/prj/hello_world. Sebagai contoh, hello_world/keil akan berisi project Keil.

Menjalankan pengujian

Untuk membangun library dan menjalankan semua pengujian unitnya, gunakan perintah berikut:

make -f tensorflow/lite/micro/tools/make/Makefile test

Untuk menjalankan pengujian individu, gunakan perintah berikut, yang menggantikan <test_name> dengan nama pengujian:

make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>

Anda dapat menemukan nama pengujian di Makefile project. Misalnya, examples/hello_world/Makefile.inc menentukan nama pengujian untuk Hello. Contoh dunia.

Biner build

Untuk membangun biner yang dapat dijalankan untuk project tertentu (seperti aplikasi contoh), gunakan perintah berikut, dengan mengganti <project_name> dengan project yang Anda inginkan untuk membangun:

make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin

Misalnya, perintah berikut akan membangun biner untuk aktivitas Hello World aplikasi:

make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin

Secara default, project akan dikompilasi untuk sistem operasi host. Kepada menentukan arsitektur target yang berbeda, gunakan TARGET= dan TARGET_ARCH=. Tujuan contoh berikut menunjukkan cara membuat contoh Hello World untuk paket {i>cortex-m0<i}:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin

Ketika target ditentukan, semua file sumber khusus target yang tersedia akan digunakan sebagai pengganti kode asli. Misalnya, subdirektori examples/hello_world/cortex_m_generic berisi implementasi SparkFun Edge file constants.cc dan output_handler.cc, yang akan digunakan saat target cortex_m_generic ditetapkan.

Anda dapat menemukan nama project di Makefile project. Misalnya, examples/hello_world/Makefile.inc menentukan nama biner untuk perintah Hello Contoh dunia.

Kernel yang dioptimalkan

Kernel referensi di root tensorflow/lite/micro/kernels adalah diimplementasikan dalam C/C++ murni, dan tidak menyertakan hardware khusus platform pengoptimalan.

Versi kernel yang dioptimalkan disediakan di subdirektori. Misalnya, kernels/cmsis-nn berisi beberapa kernel yang dioptimalkan yang menggunakan arsitektur Arm CMSIS-NN.

Untuk membuat proyek menggunakan {i>kernel<i} yang dioptimalkan, gunakan perintah berikut, ganti <subdirectory_name> dengan nama subdirektori yang berisi subdirektori pengoptimalan:

make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects

Anda dapat menambahkan pengoptimalan sendiri dengan membuat subfolder baru untuk pengoptimalan tersebut. Rab mendorong permintaan pull untuk implementasi baru yang dioptimalkan.

Membuat library Arduino

Jika perlu membuat build library baru, Anda dapat menjalankan perintah berikut dari repositori TensorFlow:

./tensorflow/lite/micro/tools/ci_build/test_arduino.sh

{i>Library<i} yang dihasilkan dapat ditemukan di gen/arduino_x86_64/prj/tensorflow_lite.zip.

Port ke perangkat baru

Panduan tentang porting LiteRT untuk Mikrokontroler ke platform baru dan perangkat dapat ditemukan di micro/docs/new_platform_support.md