Pahami pustaka C++

Pustaka TensorFlow Lite untuk Mikrokontroler C++ adalah bagian dari repositori TensorFlow . Ini dirancang agar mudah dibaca, mudah dimodifikasi, teruji dengan baik, mudah diintegrasikan, dan kompatibel dengan TensorFlow Lite biasa.

Dokumen berikut menguraikan struktur dasar pustaka C++ dan memberikan informasi tentang cara membuat proyek Anda sendiri.

Struktur file

Direktori root micro memiliki struktur yang relatif sederhana. Namun, karena terletak di dalam repositori TensorFlow yang luas, kami telah membuat skrip dan file proyek yang dibuat sebelumnya yang menyediakan file sumber yang relevan secara terpisah dalam berbagai lingkungan pengembangan tersemat.

File kunci

File terpenting untuk menggunakan interpreter TensorFlow Lite untuk Mikrokontroler 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 build menyediakan implementasi spesifik platform untuk file tertentu. Ini terletak di direktori dengan nama platform, misalnya cortex-m .

Ada beberapa direktori lain, antara lain:

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

Mulai proyek baru

Kami merekomendasikan penggunaan contoh Hello World sebagai template untuk proyek baru. Anda bisa mendapatkan versinya untuk platform pilihan Anda dengan mengikuti petunjuk di bagian ini.

Gunakan perpustakaan Arduino

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

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

Hasilkan proyek untuk platform lain

TensorFlow Lite untuk Mikrokontroler mampu menghasilkan proyek mandiri yang berisi semua file sumber yang diperlukan, menggunakan Makefile . Lingkungan yang didukung saat ini adalah Keil, Make, dan Mbed.

Untuk menghasilkan proyek ini dengan Make, clone repositori TensorFlow/tflite-micro dan jalankan perintah berikut:

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

Ini akan memakan waktu beberapa menit, karena harus mengunduh beberapa rantai alat besar untuk dependensinya. 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 ini berisi proyek yang dihasilkan dan file sumber.

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

Jalankan tes

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

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

Untuk menjalankan pengujian individual, gunakan perintah berikut, ganti <test_name> dengan nama pengujian:

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

Anda dapat menemukan nama tes di Makefile proyek. Misalnya, examples/hello_world/Makefile.inc menentukan nama pengujian untuk contoh Hello World .

Bangun biner

Untuk membangun biner yang dapat dijalankan untuk proyek tertentu (seperti contoh aplikasi), gunakan perintah berikut, ganti <project_name> dengan proyek yang ingin Anda bangun:

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

Misalnya, perintah berikut akan membuat biner untuk aplikasi Hello World :

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

Secara default, proyek akan dikompilasi untuk sistem operasi host. Untuk menentukan arsitektur target yang berbeda, gunakan TARGET= dan TARGET_ARCH= . Contoh berikut menunjukkan cara membuat contoh Hello World untuk cortex-m0 generik:

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

Ketika target ditentukan, file sumber spesifik target apa pun yang tersedia akan digunakan sebagai pengganti kode asli. Misalnya, subdirektori examples/hello_world/cortex_m_generic berisi implementasi SparkFun Edge dari file constants.cc dan output_handler.cc , yang akan digunakan ketika target cortex_m_generic ditentukan.

Anda dapat menemukan nama proyek di Makefile proyek. Misalnya, examples/hello_world/Makefile.inc menentukan nama biner untuk contoh Hello World .

Kernel yang dioptimalkan

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

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

Untuk menghasilkan proyek menggunakan kernel yang dioptimalkan, gunakan perintah berikut, ganti <subdirectory_name> dengan nama subdirektori yang berisi optimasi:

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

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

Hasilkan perpustakaan Arduino

Jika Anda perlu membuat build perpustakaan baru, Anda dapat menjalankan skrip berikut dari repositori TensorFlow:

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

Pustaka yang dihasilkan dapat ditemukan di gen/arduino_x86_64/prj/tensorflow_lite.zip .

Port ke perangkat baru

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