Memahami library C++

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

Dokumen berikut menguraikan struktur dasar library C++ dan memberikan informasi tentang pembuatan project Anda sendiri.

Struktur file

Direktori root micro memiliki struktur yang relatif sederhana. Namun, karena lokasi ini terletak di dalam repositori TensorFlow yang ekstensif, 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 paling penting untuk menggunakan penafsir 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 Mulai menggunakan mikrokontroler untuk panduan penggunaan umum.

Sistem build menyediakan implementasi khusus platform untuk file tertentu. File ini berada di direktori dengan nama platform, misalnya cortex-m.

Ada beberapa direktori lain, termasuk:

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

Mulai project baru

Sebaiknya gunakan contoh Hello World sebagai template untuk project baru. Anda bisa mendapatkan versi ekstensi tersebut untuk platform pilihan Anda dengan mengikuti petunjuk di bagian ini.

Menggunakan library Arduino

Jika Anda menggunakan Arduino, contoh Hello World disertakan dalam library Arduino Arduino_TensorFlowLite, 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. Kemudian, Anda dapat menyimpan salinan contoh dan menggunakannya sebagai dasar project Anda sendiri.

Membuat project untuk platform lain

TensorFlow Lite untuk Mikrokontroler dapat membuat project mandiri yang berisi semua file sumber yang diperlukan, menggunakan Makefile. Lingkungan yang didukung saat ini 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 memerlukan waktu beberapa menit karena harus mendownload beberapa toolchain besar untuk dependensi. Setelah selesai, Anda akan melihat beberapa folder yang dibuat di dalam jalur seperti gen/linux_x86_64/prj/ (jalur yang tepat bergantung pada sistem operasi host Anda). Folder ini berisi file project dan sumber yang dihasilkan.

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

Menjalankan pengujian

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

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

Untuk menjalankan pengujian individual, gunakan perintah berikut, dengan mengganti <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 contoh Hello World.

Membuat biner

Untuk mem-build biner yang dapat dijalankan untuk project tertentu (seperti aplikasi contoh), gunakan perintah berikut, dan ganti <project_name> dengan project yang ingin Anda build:

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, project 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

Saat 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 untuk file constants.cc dan output_handler.cc, yang akan digunakan saat target cortex_m_generic ditentukan.

Anda dapat menemukan nama project di Makefile project. 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 hardware khusus platform.

Versi {i>kernel<i} yang dioptimalkan disediakan dalam subdirektori. Misalnya, kernels/cmsis-nn berisi beberapa kernel yang dioptimalkan yang memanfaatkan library CMSIS-NN Arm.

Untuk membuat project menggunakan kernel yang dioptimalkan, gunakan perintah berikut, dengan mengganti <subdirectory_name> dengan nama subdirektori yang berisi 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. Kami menyarankan permintaan pull untuk implementasi baru yang dioptimalkan.

Membuat library Arduino

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

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

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

Port ke perangkat baru

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